pptx-glimpse 0.10.3 → 0.10.4

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/dist/index.cjs CHANGED
@@ -9165,13 +9165,21 @@ async function convertPptxToPng(input, options) {
9165
9165
  return results;
9166
9166
  }
9167
9167
  function mergeElements(masterElements, layoutElements, slideElements) {
9168
- const filterPlaceholders = (elements) => elements.filter((el) => {
9168
+ const filterTemplatePlaceholders = (elements) => elements.filter((el) => {
9169
9169
  if (el.type !== "shape") return true;
9170
9170
  return !el.placeholderType;
9171
9171
  });
9172
- const filteredMaster = filterPlaceholders(masterElements);
9173
- const filteredLayout = filterPlaceholders(layoutElements);
9174
- return [...filteredMaster, ...filteredLayout, ...slideElements];
9172
+ const filterEmptySlidePlaceholders = (elements) => elements.filter((el) => !(el.type === "shape" && isEmptyPlaceholder(el)));
9173
+ const filteredMaster = filterTemplatePlaceholders(masterElements);
9174
+ const filteredLayout = filterTemplatePlaceholders(layoutElements);
9175
+ const filteredSlide = filterEmptySlidePlaceholders(slideElements);
9176
+ return [...filteredMaster, ...filteredLayout, ...filteredSlide];
9177
+ }
9178
+ function isEmptyPlaceholder(shape) {
9179
+ if (!shape.placeholderType) return false;
9180
+ const paragraphs = shape.textBody?.paragraphs;
9181
+ if (!paragraphs || paragraphs.length === 0) return true;
9182
+ return !paragraphs.some((p) => p.runs.some((r) => r.text.length > 0));
9175
9183
  }
9176
9184
 
9177
9185
  // src/font/font-collector.ts
package/dist/index.js CHANGED
@@ -9127,13 +9127,21 @@ async function convertPptxToPng(input, options) {
9127
9127
  return results;
9128
9128
  }
9129
9129
  function mergeElements(masterElements, layoutElements, slideElements) {
9130
- const filterPlaceholders = (elements) => elements.filter((el) => {
9130
+ const filterTemplatePlaceholders = (elements) => elements.filter((el) => {
9131
9131
  if (el.type !== "shape") return true;
9132
9132
  return !el.placeholderType;
9133
9133
  });
9134
- const filteredMaster = filterPlaceholders(masterElements);
9135
- const filteredLayout = filterPlaceholders(layoutElements);
9136
- return [...filteredMaster, ...filteredLayout, ...slideElements];
9134
+ const filterEmptySlidePlaceholders = (elements) => elements.filter((el) => !(el.type === "shape" && isEmptyPlaceholder(el)));
9135
+ const filteredMaster = filterTemplatePlaceholders(masterElements);
9136
+ const filteredLayout = filterTemplatePlaceholders(layoutElements);
9137
+ const filteredSlide = filterEmptySlidePlaceholders(slideElements);
9138
+ return [...filteredMaster, ...filteredLayout, ...filteredSlide];
9139
+ }
9140
+ function isEmptyPlaceholder(shape) {
9141
+ if (!shape.placeholderType) return false;
9142
+ const paragraphs = shape.textBody?.paragraphs;
9143
+ if (!paragraphs || paragraphs.length === 0) return true;
9144
+ return !paragraphs.some((p) => p.runs.some((r) => r.text.length > 0));
9137
9145
  }
9138
9146
 
9139
9147
  // src/font/font-collector.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pptx-glimpse",
3
- "version": "0.10.3",
3
+ "version": "0.10.4",
4
4
  "description": "A lightweight JavaScript library for rendering PowerPoint (.pptx) files as SVG or PNG in Node.js. No LibreOffice required.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -65,7 +65,7 @@
65
65
  "license": "MIT",
66
66
  "dependencies": {
67
67
  "@resvg/resvg-wasm": "^2.6.2",
68
- "fast-xml-parser": "^5.3.6",
68
+ "fast-xml-parser": "^5.7.3",
69
69
  "fflate": "^0.8.2",
70
70
  "opentype.js": "^1.3.4"
71
71
  },