@lofcz/pptxtojson 2.2.7 → 2.2.8
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 +4 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/index.umd.js.map +1 -1
- package/package.json +3 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/readXmlFile.js","../src/utils.js","../src/schemeColor.js","../src/emf.js","../src/color.js","../src/fill.js","../src/border.js","../src/chart.js","../src/constants.js","../src/paragraph.js","../src/textInsets.js","../src/position.js","../src/math.js","../src/shadow.js","../src/fontStyle.js","../src/text.js","../src/shape.js","../src/font.js","../src/table.js","../src/shapePath.js","../src/animation.js","../src/diagram.js","../src/pptxtojson.js"],"sourcesContent":["import * as txml from 'txml/txml'\n\nlet cust_attr_order = 0\n\n// simplifyLostLess() flattens the txml tree into keyed objects, which loses\n// the exact child ordering OMML conversion depends on. For math roots we keep\n// the original txml node (non-enumerable, so tree walkers don't see it) and\n// hand it to dwml-ts untouched.\nconst RAW_NODE_TAGS = new Set(['m:oMath', 'm:oMathPara'])\n\nfunction isWhitespaceTextNode(node) {\n return typeof node === 'string' && node.trim() === ''\n}\n\nexport function simplifyLostLess(children, parentAttributes = {}) {\n const out = {}\n if (!children.length) return out\n\n if (children.length === 1 && typeof children[0] === 'string') {\n return Object.keys(parentAttributes).length ? {\n attrs: { order: cust_attr_order++, ...parentAttributes },\n value: children[0],\n } : children[0]\n }\n for (const child of children) {\n if (isWhitespaceTextNode(child)) continue\n if (typeof child !== 'object') return\n if (child.tagName === '?xml') continue\n\n if (!out[child.tagName]) out[child.tagName] = []\n\n const kids = simplifyLostLess(child.children || [], child.attributes)\n \n if (typeof kids === 'object') {\n if (!kids.attrs) kids.attrs = { order: cust_attr_order++ }\n else kids.attrs.order = cust_attr_order++\n\n if (RAW_NODE_TAGS.has(child.tagName)) {\n Object.defineProperty(kids, '__rawNode', { value: child, enumerable: false })\n }\n }\n if (Object.keys(child.attributes || {}).length) {\n kids.attrs = { ...kids.attrs, ...child.attributes }\n }\n out[child.tagName].push(kids)\n }\n for (const child in out) {\n if (out[child].length === 1) out[child] = out[child][0]\n }\n\n return out\n}\n\nexport async function readXmlFile(zip, filename) {\n try {\n const file = zip.file(filename)\n if (!file) return null\n const data = await file.async('string')\n return simplifyLostLess(txml.parse(data, { keepWhitespace: true }))\n }\n catch {\n return null\n }\n}","// Attributes like rPr@b, xfrm@flipH and cNvSpPr@txBox are xsd:boolean, whose lexical space is\n// `1` / `0` / `true` / `false` — all four are valid. PowerPoint writes the numeric form, so testing\n// only for '1' appears to work, but other producers emit the literal form and then every bold run,\n// italic, flip and text-box flag in the file reads as false.\nexport function isOoxmlTrue(value) {\n return value === '1' || value === 'true'\n}\n\nexport function base64ArrayBuffer(arrayBuffer) {\n const encodings = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\n const bytes = new Uint8Array(arrayBuffer)\n const byteLength = bytes.byteLength\n const byteRemainder = byteLength % 3\n const mainLength = byteLength - byteRemainder\n \n let base64 = ''\n let a, b, c, d\n let chunk\n\n for (let i = 0; i < mainLength; i = i + 3) {\n chunk = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2]\n a = (chunk & 16515072) >> 18\n b = (chunk & 258048) >> 12\n c = (chunk & 4032) >> 6\n d = chunk & 63\n base64 += encodings[a] + encodings[b] + encodings[c] + encodings[d]\n }\n\n if (byteRemainder === 1) {\n chunk = bytes[mainLength]\n a = (chunk & 252) >> 2\n b = (chunk & 3) << 4\n base64 += encodings[a] + encodings[b] + '=='\n } \n else if (byteRemainder === 2) {\n chunk = (bytes[mainLength] << 8) | bytes[mainLength + 1]\n a = (chunk & 64512) >> 10\n b = (chunk & 1008) >> 4\n c = (chunk & 15) << 2\n base64 += encodings[a] + encodings[b] + encodings[c] + '='\n }\n\n return base64\n}\n\nexport function extractFileExtension(filename) {\n return filename.substr((~-filename.lastIndexOf('.') >>> 0) + 2)\n}\n\nexport function eachElement(node, func) {\n if (!node) return node\n\n let result = ''\n if (node.constructor === Array) {\n for (let i = 0; i < node.length; i++) {\n result += func(node[i], i)\n }\n } \n else result += func(node, 0)\n\n return result\n}\n\nexport function getTextByPathList(node, path) {\n if (!node) return node\n\n for (const key of path) {\n node = node[key]\n if (!node) return node\n }\n\n return node\n}\n\nexport function angleToDegrees(angle) {\n if (!angle) return 0\n return Math.round(angle / 60000)\n}\n\nexport function escapeHtml(text) {\n const map = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n }\n return text.replace(/[&<>\"']/g, m => map[m])\n}\n\nexport function getMimeType(imgFileExt) {\n let mimeType = ''\n switch (imgFileExt.toLowerCase()) {\n case 'jpg':\n case 'jpeg':\n mimeType = 'image/jpeg'\n break\n case 'png':\n mimeType = 'image/png'\n break\n case 'gif':\n mimeType = 'image/gif'\n break\n case 'emf':\n mimeType = 'image/x-emf'\n break\n case 'wmf':\n mimeType = 'image/x-wmf'\n break\n case 'svg':\n mimeType = 'image/svg+xml'\n break\n case 'mp4':\n mimeType = 'video/mp4'\n break\n case 'webm':\n mimeType = 'video/webm'\n break\n case 'ogg':\n mimeType = 'video/ogg'\n break\n case 'avi':\n mimeType = 'video/avi'\n break\n case 'mpg':\n mimeType = 'video/mpg'\n break\n case 'wmv':\n mimeType = 'video/wmv'\n break\n case 'mp3':\n mimeType = 'audio/mpeg'\n break\n case 'wav':\n mimeType = 'audio/wav'\n break\n case 'tif':\n mimeType = 'image/tiff'\n break\n case 'tiff':\n mimeType = 'image/tiff'\n break\n default:\n }\n return mimeType\n}\n\nexport function isVideoLink(vdoFile) {\n const urlRegex = /^(https?|ftp):\\/\\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,})(:[0-9]+)*(\\/($|[a-zA-Z0-9.,?'\\\\+&%$#=~_-]+))*$/\n return urlRegex.test(vdoFile)\n}\n\nexport function toHex(n) {\n let hex = n.toString(16)\n while (hex.length < 2) {\n hex = '0' + hex\n }\n return hex\n}\n\nexport function hasValidText(htmlString) {\n if (typeof DOMParser === 'undefined') {\n const text = htmlString.replace(/<[^>]+>/g, '').replace(/\\s+/g, ' ')\n return text.trim() !== ''\n }\n\n const parser = new DOMParser()\n const doc = parser.parseFromString(htmlString, 'text/html')\n const text = doc.body.textContent || doc.body.innerText\n return text.trim() !== ''\n}\n\nexport function numberToFixed(num, fractionDigits = 4) {\n return parseFloat(num.toFixed(fractionDigits))\n}","import { getTextByPathList } from './utils'\n\nexport function getSchemeColorFromTheme(schemeClr, warpObj, clrMap, phClr) {\n let color\n let slideLayoutClrOvride\n if (clrMap) slideLayoutClrOvride = clrMap\n else {\n let sldClrMapOvr = getTextByPathList(warpObj['slideContent'], ['p:sld', 'p:clrMapOvr', 'a:overrideClrMapping', 'attrs'])\n if (sldClrMapOvr) slideLayoutClrOvride = sldClrMapOvr\n else {\n sldClrMapOvr = getTextByPathList(warpObj['slideLayoutContent'], ['p:sldLayout', 'p:clrMapOvr', 'a:overrideClrMapping', 'attrs'])\n if (sldClrMapOvr) slideLayoutClrOvride = sldClrMapOvr\n else {\n slideLayoutClrOvride = getTextByPathList(warpObj['slideMasterContent'], ['p:sldMaster', 'p:clrMap', 'attrs'])\n }\n }\n }\n const schmClrName = schemeClr.substr(2)\n if (schmClrName === 'phClr' && phClr) color = phClr\n else {\n if (slideLayoutClrOvride) {\n switch (schmClrName) {\n case 'tx1':\n case 'tx2':\n case 'bg1':\n case 'bg2':\n schemeClr = 'a:' + slideLayoutClrOvride[schmClrName]\n break\n default:\n break\n }\n }\n else {\n switch (schmClrName) {\n case 'tx1':\n schemeClr = 'a:dk1'\n break\n case 'tx2':\n schemeClr = 'a:dk2'\n break\n case 'bg1':\n schemeClr = 'a:lt1'\n break\n case 'bg2':\n schemeClr = 'a:lt2'\n break\n default:\n break\n }\n }\n const refNode = getTextByPathList(warpObj['themeContent'], ['a:theme', 'a:themeElements', 'a:clrScheme', schemeClr])\n color = getTextByPathList(refNode, ['a:srgbClr', 'attrs', 'val'])\n if (!color && refNode) color = getTextByPathList(refNode, ['a:sysClr', 'attrs', 'lastClr'])\n }\n return color\n}","/**\n * EMF (Enhanced Metafile) bitmap extraction.\n *\n * PPTX files frequently embed EMF images as OLE object previews (equations,\n * pasted objects). Browsers cannot display EMF, so those images come out\n * broken. Many EMFs carry their raster content as an uncompressed DIB inside\n * an EMR_STRETCHDIBITS record — that bitmap is extracted here and re-encoded\n * as PNG, without implementing full EMF record interpretation.\n *\n * EMF record format: each record is { type: u32, size: u32, ...data },\n * walked sequentially until the EOF record (type 14).\n *\n * Ported from yinyao855/pptxtojson-pro `src/utils/emfParser.ts` (MIT),\n * restricted to the dependency-free DIB path (the PDF path there needs\n * pdfjs-dist, which is far too heavy for this bundle).\n */\n\nconst EMR_EOF = 14\nconst EMR_STRETCHDIBITS = 81\n\n// EMF header signature at offset 40: \" EMF\"\nconst EMF_SIGNATURE = 0x464d4520\n\n// DIB compression: uncompressed RGB\nconst BI_RGB = 0\n\n/**\n * Parse an EMF file and extract the first embedded uncompressed DIB as an\n * RGBA bitmap ({ width, height, data }). Returns null when the file is not\n * EMF or carries no supported bitmap.\n */\nexport function extractEmfBitmap(data) {\n if (!data || data.length < 44) return null\n\n const view = new DataView(data.buffer, data.byteOffset, data.byteLength)\n if (view.getUint32(40, true) !== EMF_SIGNATURE) return null\n\n let offset = 0\n while (offset + 8 <= data.length) {\n const recordType = view.getUint32(offset, true)\n const recordSize = view.getUint32(offset + 4, true)\n\n if (recordSize < 8 || offset + recordSize > data.length) break\n if (recordType === EMR_EOF) break\n\n if (recordType === EMR_STRETCHDIBITS && recordSize > 80) {\n const bitmap = parseStretchDibits(data, view, offset)\n if (bitmap) return bitmap\n }\n\n offset += recordSize\n }\n\n return null\n}\n\n/**\n * Parse a STRETCHDIBITS record and extract the bitmap as an RGBA buffer.\n *\n * Record layout (offsets from record start):\n * 0: type(4), 4: size(4), 8: rclBounds(16), 24: xDest(4), 28: yDest(4),\n * 32: xSrc(4), 36: ySrc(4), 40: cxSrc(4), 44: cySrc(4),\n * 48: offBmiSrc(4), 52: cbBmiSrc(4), 56: offBitsSrc(4), 60: cbBitsSrc(4),\n * 64: iUsageSrc(4), 68: dwRop(4), 72: cxDest(4), 76: cyDest(4)\n */\nfunction parseStretchDibits(data, view, offset) {\n if (offset + 80 > data.length) return null\n\n const offBmiSrc = view.getUint32(offset + 48, true)\n const cbBmiSrc = view.getUint32(offset + 52, true)\n const offBitsSrc = view.getUint32(offset + 56, true)\n const cbBitsSrc = view.getUint32(offset + 60, true)\n\n if (cbBmiSrc === 0 || cbBitsSrc === 0) return null\n\n const bmiStart = offset + offBmiSrc\n if (bmiStart + 40 > data.length) return null\n\n // BITMAPINFOHEADER\n const biWidth = view.getInt32(bmiStart + 4, true)\n const biHeight = view.getInt32(bmiStart + 8, true)\n const biBitCount = view.getUint16(bmiStart + 14, true)\n const biCompression = view.getUint32(bmiStart + 16, true)\n\n if (biCompression !== BI_RGB) return null\n if (biBitCount !== 24 && biBitCount !== 32) return null\n\n const width = Math.abs(biWidth)\n const height = Math.abs(biHeight)\n if (width === 0 || height === 0 || width > 8192 || height > 8192) return null\n\n const bitsStart = offset + offBitsSrc\n if (bitsStart + cbBitsSrc > data.length) return null\n\n const bitsData = data.subarray(bitsStart, bitsStart + cbBitsSrc)\n\n // Negative height means top-down row order; positive means bottom-up\n const topDown = biHeight < 0\n\n const pixels = new Uint8ClampedArray(width * height * 4)\n const bytesPerPixel = biBitCount / 8\n // DIB rows are padded to 4-byte boundaries\n const rowStride = Math.ceil((width * bytesPerPixel) / 4) * 4\n\n for (let y = 0; y < height; y++) {\n const srcRow = topDown ? y : height - 1 - y\n const srcOffset = srcRow * rowStride\n const dstOffset = y * width * 4\n\n for (let x = 0; x < width; x++) {\n const srcIdx = srcOffset + x * bytesPerPixel\n if (srcIdx + bytesPerPixel > bitsData.length) break\n\n // DIB stores BGR(A)\n pixels[dstOffset + x * 4 + 0] = bitsData[srcIdx + 2]\n pixels[dstOffset + x * 4 + 1] = bitsData[srcIdx + 1]\n pixels[dstOffset + x * 4 + 2] = bitsData[srcIdx + 0]\n pixels[dstOffset + x * 4 + 3] = biBitCount === 32 ? bitsData[srcIdx + 3] : 255\n }\n }\n\n return { width, height, data: pixels }\n}\n\n/**\n * Convert EMF bytes to a PNG data URL via canvas. Browser-only; returns ''\n * in non-DOM environments or when the EMF has no extractable bitmap.\n */\nexport function emfToPngDataUrl(data) {\n if (typeof document === 'undefined') return ''\n\n const bitmap = extractEmfBitmap(data)\n if (!bitmap) return ''\n\n const canvas = document.createElement('canvas')\n canvas.width = bitmap.width\n canvas.height = bitmap.height\n const ctx = canvas.getContext('2d')\n if (!ctx) return ''\n ctx.putImageData(new ImageData(bitmap.data, bitmap.width, bitmap.height), 0, 0)\n return canvas.toDataURL('image/png')\n}\n","import tinycolor from 'tinycolor2'\n\nexport function hueToRgb(t1, t2, hue) {\n if (hue < 0) hue += 6\n if (hue >= 6) hue -= 6\n if (hue < 1) return (t2 - t1) * hue + t1\n else if (hue < 3) return t2\n else if (hue < 4) return (t2 - t1) * (4 - hue) + t1\n return t1\n}\n\nexport function hslToRgb(hue, sat, light) {\n let t2\n hue = hue / 60\n if (light <= 0.5) {\n t2 = light * (sat + 1)\n } \n else {\n t2 = light + sat - (light * sat)\n }\n const t1 = light * 2 - t2\n const r = hueToRgb(t1, t2, hue + 2) * 255\n const g = hueToRgb(t1, t2, hue) * 255\n const b = hueToRgb(t1, t2, hue - 2) * 255\n return { r, g, b }\n}\n\nexport function applyShade(rgbStr, shadeValue, isAlpha) {\n const color = tinycolor(rgbStr).toHsl()\n if (shadeValue >= 1) shadeValue = 1\n const cacl_l = Math.min(color.l * shadeValue, 1)\n if (isAlpha) {\n return tinycolor({\n h: color.h,\n s: color.s,\n l: cacl_l,\n a: color.a\n }).toHex8()\n }\n\n return tinycolor({\n h: color.h,\n s: color.s,\n l: cacl_l,\n a: color.a,\n }).toHex()\n}\n\nexport function applyTint(rgbStr, tintValue, isAlpha) {\n const color = tinycolor(rgbStr).toHsl()\n if (tintValue >= 1) tintValue = 1\n const cacl_l = color.l * tintValue + (1 - tintValue)\n if (isAlpha) {\n return tinycolor({\n h: color.h,\n s: color.s,\n l: cacl_l,\n a: color.a\n }).toHex8()\n }\n\n return tinycolor({\n h: color.h,\n s: color.s,\n l: cacl_l,\n a: color.a\n }).toHex()\n}\n\nexport function applyLumOff(rgbStr, offset, isAlpha) {\n const color = tinycolor(rgbStr).toHsl()\n const lum = offset + color.l\n if (lum >= 1) {\n if (isAlpha) {\n return tinycolor({\n h: color.h,\n s: color.s,\n l: 1,\n a: color.a\n }).toHex8()\n }\n \n return tinycolor({\n h: color.h,\n s: color.s,\n l: 1,\n a: color.a\n }).toHex()\n }\n if (isAlpha) {\n return tinycolor({\n h: color.h,\n s: color.s,\n l: lum,\n a: color.a\n }).toHex8()\n }\n\n return tinycolor({\n h: color.h,\n s: color.s,\n l: lum,\n a: color.a\n }).toHex()\n}\n\nexport function applyLumMod(rgbStr, multiplier, isAlpha) {\n const color = tinycolor(rgbStr).toHsl()\n let cacl_l = color.l * multiplier\n if (cacl_l >= 1) cacl_l = 1\n if (isAlpha) {\n return tinycolor({\n h: color.h,\n s: color.s,\n l: cacl_l,\n a: color.a\n }).toHex8()\n }\n\n return tinycolor({\n h: color.h,\n s: color.s,\n l: cacl_l,\n a: color.a\n }).toHex()\n}\n\nexport function applyHueMod(rgbStr, multiplier, isAlpha) {\n const color = tinycolor(rgbStr).toHsl()\n let cacl_h = color.h * multiplier\n if (cacl_h >= 360) cacl_h = cacl_h - 360\n if (isAlpha) {\n return tinycolor({\n h: cacl_h,\n s: color.s,\n l: color.l,\n a: color.a\n }).toHex8()\n }\n\n return tinycolor({\n h: cacl_h,\n s: color.s,\n l: color.l,\n a: color.a\n }).toHex()\n}\n\nexport function applySatMod(rgbStr, multiplier, isAlpha) {\n const color = tinycolor(rgbStr).toHsl()\n let cacl_s = color.s * multiplier\n if (cacl_s >= 1) cacl_s = 1\n if (isAlpha) {\n return tinycolor({\n h: color.h,\n s: cacl_s,\n l: color.l,\n a: color.a\n }).toHex8()\n }\n\n return tinycolor({\n h: color.h,\n s: cacl_s,\n l: color.l,\n a: color.a\n }).toHex()\n}\n\nexport function getColorName2Hex(name) {\n let hex\n const colorName = ['AliceBlue', 'AntiqueWhite', 'Aqua', 'Aquamarine', 'Azure', 'Beige', 'Bisque', 'black', 'BlanchedAlmond', 'Blue', 'BlueViolet', 'Brown', 'BurlyWood', 'CadetBlue', 'Chartreuse', 'Chocolate', 'Coral', 'CornflowerBlue', 'Cornsilk', 'Crimson', 'Cyan', 'DarkBlue', 'DarkCyan', 'DarkGoldenRod', 'DarkGray', 'DarkGrey', 'DarkGreen', 'DarkKhaki', 'DarkMagenta', 'DarkOliveGreen', 'DarkOrange', 'DarkOrchid', 'DarkRed', 'DarkSalmon', 'DarkSeaGreen', 'DarkSlateBlue', 'DarkSlateGray', 'DarkSlateGrey', 'DarkTurquoise', 'DarkViolet', 'DeepPink', 'DeepSkyBlue', 'DimGray', 'DimGrey', 'DodgerBlue', 'FireBrick', 'FloralWhite', 'ForestGreen', 'Fuchsia', 'Gainsboro', 'GhostWhite', 'Gold', 'GoldenRod', 'Gray', 'Grey', 'Green', 'GreenYellow', 'HoneyDew', 'HotPink', 'IndianRed', 'Indigo', 'Ivory', 'Khaki', 'Lavender', 'LavenderBlush', 'LawnGreen', 'LemonChiffon', 'LightBlue', 'LightCoral', 'LightCyan', 'LightGoldenRodYellow', 'LightGray', 'LightGrey', 'LightGreen', 'LightPink', 'LightSalmon', 'LightSeaGreen', 'LightSkyBlue', 'LightSlateGray', 'LightSlateGrey', 'LightSteelBlue', 'LightYellow', 'Lime', 'LimeGreen', 'Linen', 'Magenta', 'Maroon', 'MediumAquaMarine', 'MediumBlue', 'MediumOrchid', 'MediumPurple', 'MediumSeaGreen', 'MediumSlateBlue', 'MediumSpringGreen', 'MediumTurquoise', 'MediumVioletRed', 'MidnightBlue', 'MintCream', 'MistyRose', 'Moccasin', 'NavajoWhite', 'Navy', 'OldLace', 'Olive', 'OliveDrab', 'Orange', 'OrangeRed', 'Orchid', 'PaleGoldenRod', 'PaleGreen', 'PaleTurquoise', 'PaleVioletRed', 'PapayaWhip', 'PeachPuff', 'Peru', 'Pink', 'Plum', 'PowderBlue', 'Purple', 'RebeccaPurple', 'Red', 'RosyBrown', 'RoyalBlue', 'SaddleBrown', 'Salmon', 'SandyBrown', 'SeaGreen', 'SeaShell', 'Sienna', 'Silver', 'SkyBlue', 'SlateBlue', 'SlateGray', 'SlateGrey', 'Snow', 'SpringGreen', 'SteelBlue', 'Tan', 'Teal', 'Thistle', 'Tomato', 'Turquoise', 'Violet', 'Wheat', 'White', 'WhiteSmoke', 'Yellow', 'YellowGreen']\n const colorHex = ['f0f8ff', 'faebd7', '00ffff', '7fffd4', 'f0ffff', 'f5f5dc', 'ffe4c4', '000000', 'ffebcd', '0000ff', '8a2be2', 'a52a2a', 'deb887', '5f9ea0', '7fff00', 'd2691e', 'ff7f50', '6495ed', 'fff8dc', 'dc143c', '00ffff', '00008b', '008b8b', 'b8860b', 'a9a9a9', 'a9a9a9', '006400', 'bdb76b', '8b008b', '556b2f', 'ff8c00', '9932cc', '8b0000', 'e9967a', '8fbc8f', '483d8b', '2f4f4f', '2f4f4f', '00ced1', '9400d3', 'ff1493', '00bfff', '696969', '696969', '1e90ff', 'b22222', 'fffaf0', '228b22', 'ff00ff', 'dcdcdc', 'f8f8ff', 'ffd700', 'daa520', '808080', '808080', '008000', 'adff2f', 'f0fff0', 'ff69b4', 'cd5c5c', '4b0082', 'fffff0', 'f0e68c', 'e6e6fa', 'fff0f5', '7cfc00', 'fffacd', 'add8e6', 'f08080', 'e0ffff', 'fafad2', 'd3d3d3', 'd3d3d3', '90ee90', 'ffb6c1', 'ffa07a', '20b2aa', '87cefa', '778899', '778899', 'b0c4de', 'ffffe0', '00ff00', '32cd32', 'faf0e6', 'ff00ff', '800000', '66cdaa', '0000cd', 'ba55d3', '9370db', '3cb371', '7b68ee', '00fa9a', '48d1cc', 'c71585', '191970', 'f5fffa', 'ffe4e1', 'ffe4b5', 'ffdead', '000080', 'fdf5e6', '808000', '6b8e23', 'ffa500', 'ff4500', 'da70d6', 'eee8aa', '98fb98', 'afeeee', 'db7093', 'ffefd5', 'ffdab9', 'cd853f', 'ffc0cb', 'dda0dd', 'b0e0e6', '800080', '663399', 'ff0000', 'bc8f8f', '4169e1', '8b4513', 'fa8072', 'f4a460', '2e8b57', 'fff5ee', 'a0522d', 'c0c0c0', '87ceeb', '6a5acd', '708090', '708090', 'fffafa', '00ff7f', '4682b4', 'd2b48c', '008080', 'd8bfd8', 'ff6347', '40e0d0', 'ee82ee', 'f5deb3', 'ffffff', 'f5f5f5', 'ffff00', '9acd32']\n const nameLower = name.toLowerCase()\n const findIndx = colorName.findIndex(n => n.toLowerCase() === nameLower)\n if (findIndx !== -1) hex = colorHex[findIndx]\n return hex\n}","import tinycolor from 'tinycolor2'\nimport { getSchemeColorFromTheme } from './schemeColor'\nimport { emfToPngDataUrl } from './emf'\nimport {\n applyShade,\n applyTint,\n applyLumOff,\n applyLumMod,\n applyHueMod,\n applySatMod,\n hslToRgb,\n getColorName2Hex,\n} from './color'\n\nimport {\n base64ArrayBuffer,\n getTextByPathList,\n angleToDegrees,\n escapeHtml,\n getMimeType,\n toHex,\n} from './utils'\n\nexport function getFillType(node) {\n let fillType = ''\n if (node['a:noFill']) fillType = 'NO_FILL'\n if (node['a:solidFill']) fillType = 'SOLID_FILL'\n if (node['a:gradFill']) fillType = 'GRADIENT_FILL'\n if (node['a:pattFill']) fillType = 'PATTERN_FILL'\n if (node['a:blipFill']) fillType = 'PIC_FILL'\n if (node['a:grpFill']) fillType = 'GROUP_FILL'\n\n return fillType\n}\n\nfunction createImageData(ref = '') {\n return {\n ref,\n base64: '',\n blob: '',\n align: {\n t: 0,\n b: 0,\n l: 0,\n r: 0,\n },\n alignType: 'stretch',\n }\n}\n\nfunction createMediaData(ref = '') {\n return {\n ref,\n blob: '',\n }\n}\n\nfunction getMediaCache(warpObj, cacheKey) {\n const cache = warpObj[cacheKey] || {}\n warpObj[cacheKey] = cache\n return cache\n}\n\nasync function loadMedia(filePath, warpObj, cacheKey, mode = 'base64') {\n if (!filePath || (mode !== 'base64' && mode !== 'blob')) return ''\n\n const normalizedPath = escapeHtml(filePath)\n const cache = getMediaCache(warpObj, cacheKey)\n const cacheItem = cache[normalizedPath] || { base64: '', blob: '' }\n cache[normalizedPath] = cacheItem\n\n if (cacheItem[mode]) return cacheItem[mode]\n\n const fileExt = normalizedPath.split('.').pop().toLowerCase()\n if (fileExt === 'xml') return ''\n\n const zipFile = warpObj['zip'].file(normalizedPath)\n if (!zipFile) return ''\n const arrayBuffer = await zipFile.async('arraybuffer')\n const mimeType = getMimeType(fileExt)\n\n // Browsers cannot render EMF (typically OLE object previews); extract the\n // embedded DIB bitmap and serve it as PNG instead of a broken image.\n if (fileExt === 'emf') {\n const pngDataUrl = emfToPngDataUrl(new Uint8Array(arrayBuffer))\n if (pngDataUrl) {\n if (mode === 'base64') {\n cacheItem.base64 = pngDataUrl\n }\n else {\n const pngBytes = Uint8Array.from(atob(pngDataUrl.split(',')[1]), c => c.charCodeAt(0))\n cacheItem.blob = URL.createObjectURL(new Blob([pngBytes], { type: 'image/png' }))\n }\n return cacheItem[mode]\n }\n }\n\n if (mode === 'base64') {\n cacheItem.base64 = `data:${mimeType};base64,${base64ArrayBuffer(arrayBuffer)}`\n }\n else if (mode === 'blob') {\n cacheItem.blob = URL.createObjectURL(new Blob([arrayBuffer], mimeType ? {\n type: mimeType\n } : undefined))\n }\n\n return cacheItem[mode]\n}\n\nexport async function loadImage(imgPath, warpObj, mode = 'base64') {\n return await loadMedia(imgPath, warpObj, 'loadedImages', mode)\n}\n\nexport async function loadVideo(videoPath, warpObj, mode = 'blob') {\n if (mode !== 'blob') return ''\n return await loadMedia(videoPath, warpObj, 'loadedVideos', 'blob')\n}\n\nexport async function loadAudio(audioPath, warpObj, mode = 'blob') {\n if (mode !== 'blob') return ''\n return await loadMedia(audioPath, warpObj, 'loadedAudios', 'blob')\n}\n\nfunction getImageMode(warpObj) {\n const imageMode = getTextByPathList(warpObj, ['options', 'imageMode'])\n if (imageMode === 'blob' || imageMode === 'both' || imageMode === 'none') return imageMode\n return 'base64'\n}\n\nfunction getVideoMode(warpObj) {\n const videoMode = getTextByPathList(warpObj, ['options', 'videoMode'])\n if (videoMode === 'blob') return 'blob'\n return 'none'\n}\n\nfunction getAudioMode(warpObj) {\n const audioMode = getTextByPathList(warpObj, ['options', 'audioMode'])\n if (audioMode === 'blob') return 'blob'\n return 'none'\n}\n\nexport async function getImageData(imgPath, warpObj) {\n const imageData = createImageData(imgPath || '')\n if (!imgPath) return imageData\n\n const imageMode = getImageMode(warpObj)\n if (imageMode === 'base64' || imageMode === 'both') {\n imageData.base64 = await loadImage(imgPath, warpObj, 'base64')\n }\n if (imageMode === 'blob' || imageMode === 'both') {\n imageData.blob = await loadImage(imgPath, warpObj, 'blob')\n }\n\n return imageData\n}\n\nexport async function getVideoData(videoPath, warpObj) {\n const videoData = createMediaData(videoPath || '')\n if (!videoPath) return videoData\n\n if (getVideoMode(warpObj) === 'blob') {\n videoData.blob = await loadVideo(videoPath, warpObj, 'blob')\n }\n\n return videoData\n}\n\nexport async function getAudioData(audioPath, warpObj) {\n const audioData = createMediaData(audioPath || '')\n if (!audioPath) return audioData\n\n if (getAudioMode(warpObj) === 'blob') {\n audioData.blob = await loadAudio(audioPath, warpObj, 'blob')\n }\n\n return audioData\n}\n\nexport async function getPicFill(type, node, warpObj) {\n if (!node) return createImageData()\n\n const rId = getTextByPathList(node, ['a:blip', 'attrs', 'r:embed'])\n let imgPath\n if (type === 'slideBg' || type === 'slide') {\n imgPath = getTextByPathList(warpObj, ['slideResObj', rId, 'target'])\n }\n else if (type === 'slideLayoutBg') {\n imgPath = getTextByPathList(warpObj, ['layoutResObj', rId, 'target'])\n }\n else if (type === 'slideMasterBg') {\n imgPath = getTextByPathList(warpObj, ['masterResObj', rId, 'target'])\n }\n else if (type === 'themeBg') {\n imgPath = getTextByPathList(warpObj, ['themeResObj', rId, 'target'])\n }\n else if (type === 'diagramBg') {\n imgPath = getTextByPathList(warpObj, ['diagramResObj', rId, 'target'])\n }\n if (!imgPath) return createImageData()\n\n const imageData = await getImageData(imgPath, warpObj)\n\n const align = { t: 0, b: 0, l: 0, r: 0 }\n let alignType = 'stretch'\n\n if (node['a:stretch']) {\n alignType = 'stretch'\n const fillRectAttrs = getTextByPathList(node, ['a:stretch', 'a:fillRect', 'attrs'])\n if (fillRectAttrs) {\n if (fillRectAttrs.t) align.t = parseInt(fillRectAttrs.t) / 1000\n if (fillRectAttrs.b) align.b = parseInt(fillRectAttrs.b) / 1000\n if (fillRectAttrs.l) align.l = parseInt(fillRectAttrs.l) / 1000\n if (fillRectAttrs.r) align.r = parseInt(fillRectAttrs.r) / 1000\n }\n }\n else if (node['a:tile']) {\n alignType = 'tile'\n const tileAttrs = getTextByPathList(node, ['a:tile', 'attrs'])\n if (tileAttrs) {\n if (tileAttrs.t) align.t = parseInt(tileAttrs.t) / 1000\n if (tileAttrs.b) align.b = parseInt(tileAttrs.b) / 1000\n if (tileAttrs.l) align.l = parseInt(tileAttrs.l) / 1000\n if (tileAttrs.r) align.r = parseInt(tileAttrs.r) / 1000\n }\n }\n else if (node['a:scale']) {\n alignType = 'scale'\n }\n\n imageData.align = align\n imageData.alignType = alignType\n\n return imageData\n}\n\nexport function getPicFillOpacity(node) {\n const aBlipNode = node['a:blip']\n\n const aphaModFixNode = getTextByPathList(aBlipNode, ['a:alphaModFix', 'attrs'])\n let opacity = 1\n if (aphaModFixNode && aphaModFixNode['amt'] && aphaModFixNode['amt'] !== '') {\n opacity = parseInt(aphaModFixNode['amt']) / 100000\n }\n\n return opacity\n}\n\nexport function getPicFilters(node) {\n if (!node) return null\n\n const aBlipNode = node['a:blip']\n if (!aBlipNode) return null\n\n const filters = {}\n\n // 从a:extLst中获取滤镜效果(Microsoft Office 2010+扩展)\n const extLstNode = aBlipNode['a:extLst']\n if (extLstNode && extLstNode['a:ext']) {\n const extNodes = Array.isArray(extLstNode['a:ext']) ? extLstNode['a:ext'] : [extLstNode['a:ext']]\n\n for (const extNode of extNodes) {\n if (!extNode['a14:imgProps'] || !extNode['a14:imgProps']['a14:imgLayer']) continue\n\n const imgLayerNode = extNode['a14:imgProps']['a14:imgLayer']\n const imgEffects = imgLayerNode['a14:imgEffect']\n\n if (!imgEffects) continue\n\n const effectArray = Array.isArray(imgEffects) ? imgEffects : [imgEffects]\n\n for (const effect of effectArray) {\n // 饱和度\n if (effect['a14:saturation']) {\n const satAttr = getTextByPathList(effect, ['a14:saturation', 'attrs', 'sat'])\n if (satAttr) {\n filters.saturation = parseInt(satAttr) / 100000\n }\n }\n\n // 亮度、对比度\n if (effect['a14:brightnessContrast']) {\n const brightAttr = getTextByPathList(effect, ['a14:brightnessContrast', 'attrs', 'bright'])\n const contrastAttr = getTextByPathList(effect, ['a14:brightnessContrast', 'attrs', 'contrast'])\n\n if (brightAttr) {\n filters.brightness = parseInt(brightAttr) / 100000\n }\n if (contrastAttr) {\n filters.contrast = parseInt(contrastAttr) / 100000\n }\n }\n\n // 锐化/柔化\n if (effect['a14:sharpenSoften']) {\n const amountAttr = getTextByPathList(effect, ['a14:sharpenSoften', 'attrs', 'amount'])\n if (amountAttr) {\n const amount = parseInt(amountAttr) / 100000\n if (amount > 0) {\n filters.sharpen = amount\n }\n else {\n filters.soften = Math.abs(amount)\n }\n }\n }\n\n // 色温\n if (effect['a14:colorTemperature']) {\n const tempAttr = getTextByPathList(effect, ['a14:colorTemperature', 'attrs', 'colorTemp'])\n if (tempAttr) {\n filters.colorTemperature = parseInt(tempAttr)\n }\n }\n }\n }\n }\n\n return Object.keys(filters).length > 0 ? filters : null\n}\n\nexport async function getBgPicFill(bgPr, sorce, warpObj) {\n const picFill = await getPicFill(sorce, bgPr['a:blipFill'], warpObj)\n const aBlipNode = bgPr['a:blipFill']['a:blip']\n\n const aphaModFixNode = getTextByPathList(aBlipNode, ['a:alphaModFix', 'attrs'])\n let opacity = 1\n if (aphaModFixNode && aphaModFixNode['amt'] && aphaModFixNode['amt'] !== '') {\n opacity = parseInt(aphaModFixNode['amt']) / 100000\n }\n\n return {\n ref: picFill.ref,\n base64: picFill.base64,\n blob: picFill.blob,\n opacity,\n }\n}\n\nexport function getGradientFill(node, warpObj) {\n if (!node['a:gsLst']) return null\n const gsLst = node['a:gsLst']['a:gs']\n const colors = []\n for (let i = 0; i < gsLst.length; i++) {\n const lo_color = getSolidFill(gsLst[i], undefined, undefined, warpObj)\n const pos = getTextByPathList(gsLst[i], ['attrs', 'pos'])\n\n colors[i] = {\n pos: pos ? (pos / 1000 + '%') : '',\n color: lo_color,\n }\n }\n const lin = node['a:lin']\n let rot = 0\n let pathType = 'line'\n if (lin) rot = angleToDegrees(lin['attrs']['ang'])\n else {\n const path = node['a:path']\n if (path && path['attrs'] && path['attrs']['path']) pathType = path['attrs']['path']\n }\n return {\n rot,\n path: pathType,\n colors: colors.sort((a, b) => parseInt(a.pos) - parseInt(b.pos)),\n }\n}\n\nexport function getPatternFill(node, warpObj) {\n if (!node) return null\n\n const pattFill = node['a:pattFill']\n if (!pattFill) return null\n\n const type = getTextByPathList(pattFill, ['attrs', 'prst'])\n\n const fgColorNode = pattFill['a:fgClr']\n const bgColorNode = pattFill['a:bgClr']\n\n let foregroundColor = '#000000'\n let backgroundColor = '#FFFFFF'\n\n if (fgColorNode) {\n foregroundColor = getSolidFill(fgColorNode, undefined, undefined, warpObj)\n }\n\n if (bgColorNode) {\n backgroundColor = getSolidFill(bgColorNode, undefined, undefined, warpObj)\n }\n\n return {\n type,\n foregroundColor,\n backgroundColor,\n }\n}\n\nexport function getBgGradientFill(bgPr, phClr, slideMasterContent, warpObj) {\n if (bgPr) {\n const grdFill = bgPr['a:gradFill']\n const gsLst = grdFill['a:gsLst']['a:gs']\n const colors = []\n \n for (let i = 0; i < gsLst.length; i++) {\n const lo_color = getSolidFill(gsLst[i], slideMasterContent['p:sldMaster']['p:clrMap']['attrs'], phClr, warpObj)\n const pos = getTextByPathList(gsLst[i], ['attrs', 'pos'])\n\n colors[i] = {\n pos: pos ? (pos / 1000 + '%') : '',\n color: lo_color,\n }\n }\n const lin = grdFill['a:lin']\n let rot = 0\n let pathType = 'line'\n if (lin) rot = angleToDegrees(lin['attrs']['ang']) + 0\n else {\n const path = grdFill['a:path']\n if (path && path['attrs'] && path['attrs']['path']) pathType = path['attrs']['path'] \n }\n return {\n rot,\n path: pathType,\n colors: colors.sort((a, b) => parseInt(a.pos) - parseInt(b.pos)),\n }\n }\n else if (phClr) {\n return phClr.indexOf('#') === -1 ? `#${phClr}` : phClr\n }\n return null\n}\n\nexport async function getSlideBackgroundFill(warpObj) {\n const slideContent = warpObj['slideContent']\n const slideLayoutContent = warpObj['slideLayoutContent']\n const slideMasterContent = warpObj['slideMasterContent']\n \n let bgPr = getTextByPathList(slideContent, ['p:sld', 'p:cSld', 'p:bg', 'p:bgPr'])\n let bgRef = getTextByPathList(slideContent, ['p:sld', 'p:cSld', 'p:bg', 'p:bgRef'])\n\n let background = '#fff'\n let backgroundType = 'color'\n\n if (bgPr) {\n const bgFillTyp = getFillType(bgPr)\n\n if (bgFillTyp === 'SOLID_FILL') {\n const sldFill = bgPr['a:solidFill']\n let clrMapOvr\n const sldClrMapOvr = getTextByPathList(slideContent, ['p:sld', 'p:clrMapOvr', 'a:overrideClrMapping', 'attrs'])\n if (sldClrMapOvr) clrMapOvr = sldClrMapOvr\n else {\n const sldClrMapOvr = getTextByPathList(slideLayoutContent, ['p:sldLayout', 'p:clrMapOvr', 'a:overrideClrMapping', 'attrs'])\n if (sldClrMapOvr) clrMapOvr = sldClrMapOvr\n else clrMapOvr = getTextByPathList(slideMasterContent, ['p:sldMaster', 'p:clrMap', 'attrs'])\n }\n const sldBgClr = getSolidFill(sldFill, clrMapOvr, undefined, warpObj)\n background = sldBgClr\n }\n else if (bgFillTyp === 'GRADIENT_FILL') {\n const gradientFill = getBgGradientFill(bgPr, undefined, slideMasterContent, warpObj)\n if (typeof gradientFill === 'string') {\n background = gradientFill\n }\n else if (gradientFill) {\n background = gradientFill\n backgroundType = 'gradient'\n }\n }\n else if (bgFillTyp === 'PIC_FILL') {\n background = await getBgPicFill(bgPr, 'slideBg', warpObj)\n backgroundType = 'image'\n }\n else if (bgFillTyp === 'PATTERN_FILL') {\n const patternFill = getPatternFill(bgPr, warpObj)\n if (patternFill) {\n background = patternFill\n backgroundType = 'pattern'\n }\n }\n }\n else if (bgRef) {\n let clrMapOvr\n const sldClrMapOvr = getTextByPathList(slideContent, ['p:sld', 'p:clrMapOvr', 'a:overrideClrMapping', 'attrs'])\n if (sldClrMapOvr) clrMapOvr = sldClrMapOvr\n else {\n const sldClrMapOvr = getTextByPathList(slideLayoutContent, ['p:sldLayout', 'p:clrMapOvr', 'a:overrideClrMapping', 'attrs'])\n if (sldClrMapOvr) clrMapOvr = sldClrMapOvr\n else clrMapOvr = getTextByPathList(slideMasterContent, ['p:sldMaster', 'p:clrMap', 'attrs'])\n }\n const phClr = getSolidFill(bgRef, clrMapOvr, undefined, warpObj)\n const idx = Number(bgRef['attrs']['idx'])\n\n if (idx > 1000) {\n const trueIdx = idx - 1000\n const bgFillLst = warpObj['themeContent']['a:theme']['a:themeElements']['a:fmtScheme']['a:bgFillStyleLst']\n const sortblAry = []\n Object.keys(bgFillLst).forEach(key => {\n const bgFillLstTyp = bgFillLst[key]\n if (key !== 'attrs') {\n if (bgFillLstTyp.constructor === Array) {\n for (let i = 0; i < bgFillLstTyp.length; i++) {\n const obj = {}\n obj[key] = bgFillLstTyp[i]\n if (bgFillLstTyp[i]['attrs']) {\n obj['idex'] = bgFillLstTyp[i]['attrs']['order']\n obj['attrs'] = {\n 'order': bgFillLstTyp[i]['attrs']['order']\n }\n }\n sortblAry.push(obj)\n }\n } \n else {\n const obj = {}\n obj[key] = bgFillLstTyp\n if (bgFillLstTyp['attrs']) {\n obj['idex'] = bgFillLstTyp['attrs']['order']\n obj['attrs'] = {\n 'order': bgFillLstTyp['attrs']['order']\n }\n }\n sortblAry.push(obj)\n }\n }\n })\n const sortByOrder = sortblAry.slice(0)\n sortByOrder.sort((a, b) => a.idex - b.idex)\n const bgFillLstIdx = sortByOrder[trueIdx - 1]\n const bgFillTyp = getFillType(bgFillLstIdx)\n if (bgFillTyp === 'SOLID_FILL') {\n const sldFill = bgFillLstIdx['a:solidFill']\n const sldBgClr = getSolidFill(sldFill, clrMapOvr, phClr, warpObj)\n background = sldBgClr\n } \n else if (bgFillTyp === 'GRADIENT_FILL') {\n const gradientFill = getBgGradientFill(bgFillLstIdx, phClr, slideMasterContent, warpObj)\n if (typeof gradientFill === 'string') {\n background = gradientFill\n }\n else if (gradientFill) {\n background = gradientFill\n backgroundType = 'gradient'\n }\n }\n }\n }\n else {\n bgPr = getTextByPathList(slideLayoutContent, ['p:sldLayout', 'p:cSld', 'p:bg', 'p:bgPr'])\n bgRef = getTextByPathList(slideLayoutContent, ['p:sldLayout', 'p:cSld', 'p:bg', 'p:bgRef'])\n\n let clrMapOvr\n const sldClrMapOvr = getTextByPathList(slideLayoutContent, ['p:sldLayout', 'p:clrMapOvr', 'a:overrideClrMapping', 'attrs'])\n if (sldClrMapOvr) clrMapOvr = sldClrMapOvr\n else clrMapOvr = getTextByPathList(slideMasterContent, ['p:sldMaster', 'p:clrMap', 'attrs'])\n\n if (bgPr) {\n const bgFillTyp = getFillType(bgPr)\n if (bgFillTyp === 'SOLID_FILL') {\n const sldFill = bgPr['a:solidFill']\n const sldBgClr = getSolidFill(sldFill, clrMapOvr, undefined, warpObj)\n background = sldBgClr\n }\n else if (bgFillTyp === 'GRADIENT_FILL') {\n const gradientFill = getBgGradientFill(bgPr, undefined, slideMasterContent, warpObj)\n if (typeof gradientFill === 'string') {\n background = gradientFill\n }\n else if (gradientFill) {\n background = gradientFill\n backgroundType = 'gradient'\n }\n }\n else if (bgFillTyp === 'PIC_FILL') {\n background = await getBgPicFill(bgPr, 'slideLayoutBg', warpObj)\n backgroundType = 'image'\n }\n else if (bgFillTyp === 'PATTERN_FILL') {\n const patternFill = getPatternFill(bgPr, warpObj)\n if (patternFill) {\n background = patternFill\n backgroundType = 'pattern'\n }\n }\n }\n else if (bgRef) {\n const phClr = getSolidFill(bgRef, clrMapOvr, undefined, warpObj)\n const idx = Number(bgRef['attrs']['idx'])\n \n if (idx > 1000) {\n const trueIdx = idx - 1000\n const bgFillLst = warpObj['themeContent']['a:theme']['a:themeElements']['a:fmtScheme']['a:bgFillStyleLst']\n const sortblAry = []\n Object.keys(bgFillLst).forEach(key => {\n const bgFillLstTyp = bgFillLst[key]\n if (key !== 'attrs') {\n if (bgFillLstTyp.constructor === Array) {\n for (let i = 0; i < bgFillLstTyp.length; i++) {\n const obj = {}\n obj[key] = bgFillLstTyp[i]\n if (bgFillLstTyp[i]['attrs']) {\n obj['idex'] = bgFillLstTyp[i]['attrs']['order']\n obj['attrs'] = {\n 'order': bgFillLstTyp[i]['attrs']['order']\n }\n }\n sortblAry.push(obj)\n }\n } \n else {\n const obj = {}\n obj[key] = bgFillLstTyp\n if (bgFillLstTyp['attrs']) {\n obj['idex'] = bgFillLstTyp['attrs']['order']\n obj['attrs'] = {\n 'order': bgFillLstTyp['attrs']['order']\n }\n }\n sortblAry.push(obj)\n }\n }\n })\n const sortByOrder = sortblAry.slice(0)\n sortByOrder.sort((a, b) => a.idex - b.idex)\n const bgFillLstIdx = sortByOrder[trueIdx - 1]\n const bgFillTyp = getFillType(bgFillLstIdx)\n if (bgFillTyp === 'SOLID_FILL') {\n const sldFill = bgFillLstIdx['a:solidFill']\n const sldBgClr = getSolidFill(sldFill, clrMapOvr, phClr, warpObj)\n background = sldBgClr\n }\n else if (bgFillTyp === 'GRADIENT_FILL') {\n const gradientFill = getBgGradientFill(bgFillLstIdx, phClr, slideMasterContent, warpObj)\n if (typeof gradientFill === 'string') {\n background = gradientFill\n }\n else if (gradientFill) {\n background = gradientFill\n backgroundType = 'gradient'\n }\n }\n else if (bgFillTyp === 'PIC_FILL') {\n background = await getBgPicFill(bgFillLstIdx, 'themeBg', warpObj)\n backgroundType = 'image'\n }\n else if (bgFillTyp === 'PATTERN_FILL') {\n const patternFill = getPatternFill(bgFillLstIdx, warpObj)\n if (patternFill) {\n background = patternFill\n backgroundType = 'pattern'\n }\n }\n }\n }\n else {\n bgPr = getTextByPathList(slideMasterContent, ['p:sldMaster', 'p:cSld', 'p:bg', 'p:bgPr'])\n bgRef = getTextByPathList(slideMasterContent, ['p:sldMaster', 'p:cSld', 'p:bg', 'p:bgRef'])\n\n const clrMap = getTextByPathList(slideMasterContent, ['p:sldMaster', 'p:clrMap', 'attrs'])\n if (bgPr) {\n const bgFillTyp = getFillType(bgPr)\n if (bgFillTyp === 'SOLID_FILL') {\n const sldFill = bgPr['a:solidFill']\n const sldBgClr = getSolidFill(sldFill, clrMap, undefined, warpObj)\n background = sldBgClr\n }\n else if (bgFillTyp === 'GRADIENT_FILL') {\n const gradientFill = getBgGradientFill(bgPr, undefined, slideMasterContent, warpObj)\n if (typeof gradientFill === 'string') {\n background = gradientFill\n }\n else if (gradientFill) {\n background = gradientFill\n backgroundType = 'gradient'\n }\n }\n else if (bgFillTyp === 'PIC_FILL') {\n background = await getBgPicFill(bgPr, 'slideMasterBg', warpObj)\n backgroundType = 'image'\n }\n else if (bgFillTyp === 'PATTERN_FILL') {\n const patternFill = getPatternFill(bgPr, warpObj)\n if (patternFill) {\n background = patternFill\n backgroundType = 'pattern'\n }\n }\n }\n else if (bgRef) {\n const phClr = getSolidFill(bgRef, clrMap, undefined, warpObj)\n const idx = Number(bgRef['attrs']['idx'])\n \n if (idx > 1000) {\n const trueIdx = idx - 1000\n const bgFillLst = warpObj['themeContent']['a:theme']['a:themeElements']['a:fmtScheme']['a:bgFillStyleLst']\n const sortblAry = []\n Object.keys(bgFillLst).forEach(key => {\n const bgFillLstTyp = bgFillLst[key]\n if (key !== 'attrs') {\n if (bgFillLstTyp.constructor === Array) {\n for (let i = 0; i < bgFillLstTyp.length; i++) {\n const obj = {}\n obj[key] = bgFillLstTyp[i]\n if (bgFillLstTyp[i]['attrs']) {\n obj['idex'] = bgFillLstTyp[i]['attrs']['order']\n obj['attrs'] = {\n 'order': bgFillLstTyp[i]['attrs']['order']\n }\n }\n sortblAry.push(obj)\n }\n } \n else {\n const obj = {}\n obj[key] = bgFillLstTyp\n if (bgFillLstTyp['attrs']) {\n obj['idex'] = bgFillLstTyp['attrs']['order']\n obj['attrs'] = {\n 'order': bgFillLstTyp['attrs']['order']\n }\n }\n sortblAry.push(obj)\n }\n }\n })\n const sortByOrder = sortblAry.slice(0)\n sortByOrder.sort((a, b) => a.idex - b.idex)\n const bgFillLstIdx = sortByOrder[trueIdx - 1]\n const bgFillTyp = getFillType(bgFillLstIdx)\n if (bgFillTyp === 'SOLID_FILL') {\n const sldFill = bgFillLstIdx['a:solidFill']\n const sldBgClr = getSolidFill(sldFill, clrMapOvr, phClr, warpObj)\n background = sldBgClr\n }\n else if (bgFillTyp === 'GRADIENT_FILL') {\n const gradientFill = getBgGradientFill(bgFillLstIdx, phClr, slideMasterContent, warpObj)\n if (typeof gradientFill === 'string') {\n background = gradientFill\n }\n else if (gradientFill) {\n background = gradientFill\n backgroundType = 'gradient'\n }\n }\n else if (bgFillTyp === 'PIC_FILL') {\n background = await getBgPicFill(bgFillLstIdx, 'themeBg', warpObj)\n backgroundType = 'image'\n }\n else if (bgFillTyp === 'PATTERN_FILL') {\n const patternFill = getPatternFill(bgFillLstIdx, warpObj)\n if (patternFill) {\n background = patternFill\n backgroundType = 'pattern'\n }\n }\n }\n }\n }\n }\n return {\n type: backgroundType,\n value: background,\n }\n}\n\nfunction getShapeFillCandidates(node, source, slideLayoutSpNode, slideMasterSpNode) {\n const candidates = [{ node, source }]\n\n if (slideLayoutSpNode) {\n candidates.push({\n node: slideLayoutSpNode,\n source: 'slideLayoutBg',\n })\n }\n if (slideMasterSpNode) {\n candidates.push({\n node: slideMasterSpNode,\n source: 'slideMasterBg',\n })\n }\n\n return candidates\n}\n\nasync function resolveShapeFillFromNode(node, warpObj, source, groupHierarchy) {\n if (!node) return { state: 'missing' }\n\n const spPr = getTextByPathList(node, ['p:spPr'])\n const fillType = spPr ? getFillType(spPr) : ''\n let type = 'color'\n let fillValue = ''\n if (fillType === 'NO_FILL') {\n return { state: 'none' }\n }\n else if (fillType === 'SOLID_FILL') {\n const shpFill = spPr['a:solidFill']\n fillValue = getSolidFill(shpFill, undefined, undefined, warpObj)\n type = 'color'\n }\n else if (fillType === 'GRADIENT_FILL') {\n const shpFill = spPr['a:gradFill']\n fillValue = getGradientFill(shpFill, warpObj)\n type = 'gradient'\n }\n else if (fillType === 'PIC_FILL') {\n const shpFill = spPr['a:blipFill']\n const picFill = await getPicFill(source, shpFill, warpObj)\n const opacity = getPicFillOpacity(shpFill)\n fillValue = {\n ref: picFill.ref,\n base64: picFill.base64,\n blob: picFill.blob,\n opacity,\n align: picFill.align,\n alignType: picFill.alignType,\n }\n type = 'image'\n }\n else if (fillType === 'PATTERN_FILL') {\n const shpFill = spPr['a:pattFill']\n fillValue = getPatternFill({ 'a:pattFill': shpFill }, warpObj)\n type = 'pattern'\n }\n else if (fillType === 'GROUP_FILL') {\n const groupFill = await findFillInGroupHierarchy(groupHierarchy, warpObj, source)\n return groupFill ? { state: 'found', fill: groupFill } : { state: 'none' }\n }\n if (!fillValue) {\n // Shapes with useBgFill=\"1\" take the slide background fill directly.\n const useBgFill = getTextByPathList(node, ['attrs', 'useBgFill'])\n if (useBgFill === '1' || useBgFill === 'true') {\n const bgFill = await getSlideBackgroundFill(warpObj)\n return bgFill ? { state: 'found', fill: bgFill } : { state: 'none' }\n }\n\n const fillRefNode = getTextByPathList(node, ['p:style', 'a:fillRef'])\n // fillRef@idx indexes the theme's fillStyleLst, in which 0 is defined as \"no fill\". The colour\n // the reference carries is only the one that would have applied had an entry been named, so\n // reading it regardless paints every unfilled shape in the theme's accent colour. getBorder\n // already resolves the sibling lnRef through its own idx; this is the same rule for the fill.\n if (fillRefNode && Number(getTextByPathList(fillRefNode, ['attrs', 'idx'])) === 0) {\n return { state: 'none' }\n }\n fillValue = getSolidFill(fillRefNode, undefined, undefined, warpObj)\n type = 'color'\n }\n if (!fillValue) {\n return { state: 'missing' }\n }\n\n return {\n state: 'found',\n fill: {\n type,\n value: fillValue,\n }\n }\n}\n\nexport async function getShapeFill(node, warpObj, source, options = {}) {\n const {\n groupHierarchy = [],\n slideLayoutSpNode,\n slideMasterSpNode,\n } = options\n\n const candidates = getShapeFillCandidates(node, source, slideLayoutSpNode, slideMasterSpNode)\n for (const candidate of candidates) {\n const result = await resolveShapeFillFromNode(candidate.node, warpObj, candidate.source, groupHierarchy)\n\n if (result.state === 'none') return null\n if (result.state === 'found') return result.fill\n }\n\n return null\n}\n\nasync function findFillInGroupHierarchy(groupHierarchy, warpObj, source) {\n for (const groupNode of groupHierarchy) {\n if (!groupNode || !groupNode['p:grpSpPr']) continue\n\n const grpSpPr = groupNode['p:grpSpPr']\n const fillType = getFillType(grpSpPr)\n\n if (fillType === 'SOLID_FILL') {\n const shpFill = grpSpPr['a:solidFill']\n const fillValue = getSolidFill(shpFill, undefined, undefined, warpObj)\n if (fillValue) {\n return {\n type: 'color',\n value: fillValue,\n }\n }\n }\n else if (fillType === 'GRADIENT_FILL') {\n const shpFill = grpSpPr['a:gradFill']\n const fillValue = getGradientFill(shpFill, warpObj)\n if (fillValue) {\n return {\n type: 'gradient',\n value: fillValue,\n }\n }\n }\n else if (fillType === 'PIC_FILL') {\n const shpFill = grpSpPr['a:blipFill']\n const picFill = await getPicFill(source, shpFill, warpObj)\n const opacity = getPicFillOpacity(shpFill)\n if (picFill.ref || picFill.base64 || picFill.blob) {\n return {\n type: 'image',\n value: {\n ref: picFill.ref,\n base64: picFill.base64,\n blob: picFill.blob,\n opacity,\n align: picFill.align,\n alignType: picFill.alignType,\n },\n }\n }\n }\n else if (fillType === 'PATTERN_FILL') {\n const shpFill = grpSpPr['a:pattFill']\n const fillValue = getPatternFill({ 'a:pattFill': shpFill }, warpObj)\n if (fillValue) {\n return {\n type: 'pattern',\n value: fillValue,\n }\n }\n }\n else if (fillType === 'GROUP_FILL') {\n continue\n }\n else if (fillType === 'NO_FILL') {\n return null\n }\n }\n\n return { type: 'slide-background' }\n}\n\nexport function getSolidFill(solidFill, clrMap, phClr, warpObj) {\n if (!solidFill) return ''\n\n let color = ''\n let clrNode\n\n if (solidFill['a:srgbClr']) {\n clrNode = solidFill['a:srgbClr']\n color = getTextByPathList(clrNode, ['attrs', 'val'])\n } \n else if (solidFill['a:schemeClr']) {\n clrNode = solidFill['a:schemeClr']\n const schemeClr = 'a:' + getTextByPathList(clrNode, ['attrs', 'val'])\n color = getSchemeColorFromTheme(schemeClr, warpObj, clrMap, phClr) || ''\n }\n else if (solidFill['a:scrgbClr']) {\n clrNode = solidFill['a:scrgbClr']\n const defBultColorVals = clrNode['attrs']\n const red = (defBultColorVals['r'].indexOf('%') !== -1) ? defBultColorVals['r'].split('%').shift() : defBultColorVals['r']\n const green = (defBultColorVals['g'].indexOf('%') !== -1) ? defBultColorVals['g'].split('%').shift() : defBultColorVals['g']\n const blue = (defBultColorVals['b'].indexOf('%') !== -1) ? defBultColorVals['b'].split('%').shift() : defBultColorVals['b']\n color = toHex(255 * (Number(red) / 100)) + toHex(255 * (Number(green) / 100)) + toHex(255 * (Number(blue) / 100))\n } \n else if (solidFill['a:prstClr']) {\n clrNode = solidFill['a:prstClr']\n const prstClr = getTextByPathList(clrNode, ['attrs', 'val'])\n color = getColorName2Hex(prstClr)\n } \n else if (solidFill['a:hslClr']) {\n clrNode = solidFill['a:hslClr']\n const defBultColorVals = clrNode['attrs']\n const hue = Number(defBultColorVals['hue']) / 100000\n const sat = Number((defBultColorVals['sat'].indexOf('%') !== -1) ? defBultColorVals['sat'].split('%').shift() : defBultColorVals['sat']) / 100\n const lum = Number((defBultColorVals['lum'].indexOf('%') !== -1) ? defBultColorVals['lum'].split('%').shift() : defBultColorVals['lum']) / 100\n const hsl2rgb = hslToRgb(hue, sat, lum)\n color = toHex(hsl2rgb.r) + toHex(hsl2rgb.g) + toHex(hsl2rgb.b)\n } \n else if (solidFill['a:sysClr']) {\n clrNode = solidFill['a:sysClr']\n const sysClr = getTextByPathList(clrNode, ['attrs', 'lastClr'])\n if (sysClr) color = sysClr\n }\n\n let isAlpha = false\n const alpha = parseInt(getTextByPathList(clrNode, ['a:alpha', 'attrs', 'val'])) / 100000\n if (!isNaN(alpha)) {\n const al_color = tinycolor(color)\n al_color.setAlpha(alpha)\n color = al_color.toHex8()\n isAlpha = true\n }\n\n const hueMod = parseInt(getTextByPathList(clrNode, ['a:hueMod', 'attrs', 'val'])) / 100000\n if (!isNaN(hueMod)) {\n color = applyHueMod(color, hueMod, isAlpha)\n }\n const lumMod = parseInt(getTextByPathList(clrNode, ['a:lumMod', 'attrs', 'val'])) / 100000\n if (!isNaN(lumMod)) {\n color = applyLumMod(color, lumMod, isAlpha)\n }\n const lumOff = parseInt(getTextByPathList(clrNode, ['a:lumOff', 'attrs', 'val'])) / 100000\n if (!isNaN(lumOff)) {\n color = applyLumOff(color, lumOff, isAlpha)\n }\n const satMod = parseInt(getTextByPathList(clrNode, ['a:satMod', 'attrs', 'val'])) / 100000\n if (!isNaN(satMod)) {\n color = applySatMod(color, satMod, isAlpha)\n }\n const shade = parseInt(getTextByPathList(clrNode, ['a:shade', 'attrs', 'val'])) / 100000\n if (!isNaN(shade)) {\n color = applyShade(color, shade, isAlpha)\n }\n const tint = parseInt(getTextByPathList(clrNode, ['a:tint', 'attrs', 'val'])) / 100000\n if (!isNaN(tint)) {\n color = applyTint(color, tint, isAlpha)\n }\n\n if (color && color.indexOf('#') === -1) color = '#' + color\n\n return color\n}\n","import { getSolidFill, getGradientFill } from './fill'\nimport { getTextByPathList } from './utils'\n\nfunction getLineEnd(node) {\n const attrs = getTextByPathList(node, ['attrs'])\n if (!attrs) return undefined\n\n const lineEnd = { type: attrs.type || 'none' }\n if (attrs.w) lineEnd.width = attrs.w\n if (attrs.len) lineEnd.length = attrs.len\n return lineEnd\n}\n\nexport function getBorder(node, elType, warpObj) {\n const spPrLineNode = getTextByPathList(node, ['p:spPr', 'a:ln'])\n const lnRefNode = getTextByPathList(node, ['p:style', 'a:lnRef'])\n let lineNode = spPrLineNode\n if (!lineNode) {\n if (lnRefNode) {\n const lnIdx = getTextByPathList(lnRefNode, ['attrs', 'idx'])\n lineNode = warpObj['themeContent']['a:theme']['a:themeElements']['a:fmtScheme']['a:lnStyleLst']['a:ln'][Number(lnIdx) - 1]\n }\n }\n if (!lineNode) lineNode = node\n\n const isNoFill = getTextByPathList(lineNode, ['a:noFill'])\n const hasFill = lineNode['a:solidFill'] || lineNode['a:gradFill']\n const hasWidth = getTextByPathList(lineNode, ['attrs', 'w']) !== undefined\n\n // 正常解析边框宽度\n let borderWidth = isNoFill ? 0 : (parseInt(getTextByPathList(lineNode, ['attrs', 'w'])) / 12700)\n if (isNaN(borderWidth)) {\n const hasLineNode = lineNode && lineNode !== node\n borderWidth = (hasLineNode && (hasFill || hasWidth)) ? 9525 / 12700 : 0\n }\n\n let borderColor = null\n\n if (lineNode['a:solidFill']) {\n const color = getSolidFill(lineNode['a:solidFill'], undefined, undefined, warpObj)\n if (color) borderColor = { type: 'color', value: color }\n }\n\n // 仅当形状本身没有定义 a:ln(使用 lnRef 主题样式)时,才从 lnRef 取颜色\n if (!borderColor && !spPrLineNode) {\n if (lnRefNode) {\n const color = getSolidFill(lnRefNode, undefined, undefined, warpObj)\n if (color) borderColor = { type: 'color', value: color }\n }\n }\n\n if (!borderColor && lineNode['a:gradFill']) {\n const gradValue = getGradientFill(lineNode['a:gradFill'], warpObj)\n if (gradValue && gradValue.colors && gradValue.colors.length > 0) {\n borderColor = { type: 'gradient', value: gradValue }\n }\n }\n\n // 默认边框颜色为透明\n if (!borderColor) {\n borderColor = { type: 'color', value: 'transparent' }\n }\n\n const type = getTextByPathList(lineNode, ['a:prstDash', 'attrs', 'val'])\n let borderType = 'solid'\n let strokeDasharray = '0'\n switch (type) {\n case 'solid':\n borderType = 'solid'\n strokeDasharray = '0'\n break\n case 'dash':\n borderType = 'dashed'\n strokeDasharray = '5'\n break\n case 'dashDot':\n borderType = 'dashed'\n strokeDasharray = '5, 5, 1, 5'\n break\n case 'dot':\n borderType = 'dotted'\n strokeDasharray = '1, 5'\n break\n case 'lgDash':\n borderType = 'dashed'\n strokeDasharray = '10, 5'\n break\n case 'lgDashDotDot':\n borderType = 'dotted'\n strokeDasharray = '10, 5, 1, 5, 1, 5'\n break\n case 'sysDash':\n borderType = 'dashed'\n strokeDasharray = '5, 2'\n break\n case 'sysDashDot':\n borderType = 'dotted'\n strokeDasharray = '5, 2, 1, 5'\n break\n case 'sysDashDotDot':\n borderType = 'dotted'\n strokeDasharray = '5, 2, 1, 5, 1, 5'\n break\n case 'sysDot':\n borderType = 'dotted'\n strokeDasharray = '2, 5'\n break\n default:\n }\n\n const headEnd = getLineEnd(getTextByPathList(lineNode, ['a:headEnd']))\n const tailEnd = getLineEnd(getTextByPathList(lineNode, ['a:tailEnd']))\n\n return {\n borderColor,\n borderWidth,\n borderType,\n strokeDasharray,\n headEnd,\n tailEnd,\n }\n}\n","import { eachElement, getTextByPathList } from './utils'\nimport { applyTint } from './color'\n\nfunction extractChartColors(serNode, warpObj) {\n if (!serNode) return []\n\n if (serNode.constructor !== Array) serNode = [serNode]\n const schemeClrs = []\n for (const node of serNode) {\n let schemeClr = getTextByPathList(node, ['c:spPr', 'a:solidFill', 'a:schemeClr'])\n if (!schemeClr) schemeClr = getTextByPathList(node, ['c:spPr', 'a:ln', 'a:solidFill', 'a:schemeClr'])\n if (!schemeClr) schemeClr = getTextByPathList(node, ['c:marker', 'c:spPr', 'a:ln', 'a:solidFill', 'a:schemeClr'])\n\n let clr = getTextByPathList(schemeClr, ['attrs', 'val'])\n if (clr) {\n clr = getTextByPathList(warpObj['themeContent'], ['a:theme', 'a:themeElements', 'a:clrScheme', `a:${clr}`, 'a:srgbClr', 'attrs', 'val'])\n const tint = getTextByPathList(schemeClr, ['a:tint', 'attrs', 'val']) / 100000\n if (clr && !isNaN(tint)) {\n clr = applyTint(clr, tint)\n }\n }\n else clr = getTextByPathList(node, ['c:spPr', 'a:solidFill', 'a:srgbClr', 'attrs', 'val'])\n\n if (clr) clr = '#' + clr\n schemeClrs.push(clr)\n }\n return schemeClrs\n}\n\nfunction extractChartData(serNode) {\n const dataMat = []\n if (!serNode) return dataMat\n\n eachElement(serNode, (innerNode, index) => {\n const dataRow = []\n const colName = getTextByPathList(innerNode, ['c:tx', 'c:strRef', 'c:strCache', 'c:pt', 'c:v']) || index\n\n const rowNames = {}\n if (getTextByPathList(innerNode, ['c:cat', 'c:strRef', 'c:strCache', 'c:pt'])) {\n eachElement(innerNode['c:cat']['c:strRef']['c:strCache']['c:pt'], innerNode => {\n rowNames[innerNode['attrs']['idx']] = innerNode['c:v']\n return ''\n })\n } \n else if (getTextByPathList(innerNode, ['c:cat', 'c:numRef', 'c:numCache', 'c:pt'])) {\n eachElement(innerNode['c:cat']['c:numRef']['c:numCache']['c:pt'], innerNode => {\n rowNames[innerNode['attrs']['idx']] = innerNode['c:v']\n return ''\n })\n }\n\n if (getTextByPathList(innerNode, ['c:val', 'c:numRef', 'c:numCache', 'c:pt'])) {\n eachElement(innerNode['c:val']['c:numRef']['c:numCache']['c:pt'], innerNode => {\n dataRow.push({\n x: innerNode['attrs']['idx'],\n y: parseFloat(innerNode['c:v']),\n })\n return ''\n })\n }\n\n dataMat.push({\n key: colName,\n values: dataRow,\n xlabels: rowNames,\n })\n return ''\n })\n\n return dataMat\n}\n\nfunction extractScatterChartData(serNode) {\n const dataMat = []\n if (!serNode) return dataMat\n\n const serNodes = serNode.constructor === Array ? serNode : [serNode]\n const firstSerNode = serNodes[0]\n const xData = []\n\n eachElement(firstSerNode['c:xVal']['c:numRef']['c:numCache']['c:pt'], innerNode => {\n xData.push(parseFloat(innerNode['c:v']))\n return ''\n })\n dataMat.push(xData)\n\n for (const node of serNodes) {\n const yData = []\n eachElement(node['c:yVal']['c:numRef']['c:numCache']['c:pt'], innerNode => {\n yData.push(parseFloat(innerNode['c:v']))\n return ''\n })\n dataMat.push(yData)\n }\n\n return dataMat\n}\n\nexport function getChartInfo(plotArea, warpObj) {\n let chart = null\n for (const key in plotArea) {\n if (!plotArea[key]['c:ser']) continue\n\n switch (key) {\n case 'c:lineChart':\n chart = {\n type: 'lineChart',\n data: extractChartData(plotArea[key]['c:ser']),\n colors: extractChartColors(plotArea[key]['c:ser'], warpObj),\n grouping: getTextByPathList(plotArea[key], ['c:grouping', 'attrs', 'val']),\n marker: plotArea[key]['c:marker'] ? true : false,\n }\n break\n case 'c:line3DChart':\n chart = {\n type: 'line3DChart',\n data: extractChartData(plotArea[key]['c:ser']),\n colors: extractChartColors(plotArea[key]['c:ser'], warpObj),\n grouping: getTextByPathList(plotArea[key], ['c:grouping', 'attrs', 'val']),\n }\n break\n case 'c:barChart':\n chart = {\n type: 'barChart',\n data: extractChartData(plotArea[key]['c:ser']),\n colors: extractChartColors(plotArea[key]['c:ser'], warpObj),\n grouping: getTextByPathList(plotArea[key], ['c:grouping', 'attrs', 'val']),\n barDir: getTextByPathList(plotArea[key], ['c:barDir', 'attrs', 'val']),\n }\n break\n case 'c:bar3DChart':\n chart = {\n type: 'bar3DChart',\n data: extractChartData(plotArea[key]['c:ser']),\n colors: extractChartColors(plotArea[key]['c:ser'], warpObj),\n grouping: getTextByPathList(plotArea[key], ['c:grouping', 'attrs', 'val']),\n barDir: getTextByPathList(plotArea[key], ['c:barDir', 'attrs', 'val']),\n }\n break\n case 'c:pieChart':\n chart = {\n type: 'pieChart',\n data: extractChartData(plotArea[key]['c:ser']),\n colors: extractChartColors(plotArea[key]['c:ser']['c:dPt'], warpObj),\n }\n break\n case 'c:pie3DChart':\n chart = {\n type: 'pie3DChart',\n data: extractChartData(plotArea[key]['c:ser']),\n colors: extractChartColors(plotArea[key]['c:ser']['c:dPt'], warpObj),\n }\n break\n case 'c:doughnutChart':\n chart = {\n type: 'doughnutChart',\n data: extractChartData(plotArea[key]['c:ser']),\n colors: extractChartColors(plotArea[key]['c:ser']['c:dPt'], warpObj),\n holeSize: getTextByPathList(plotArea[key], ['c:holeSize', 'attrs', 'val']),\n }\n break\n case 'c:areaChart':\n chart = {\n type: 'areaChart',\n data: extractChartData(plotArea[key]['c:ser']),\n colors: extractChartColors(plotArea[key]['c:ser'], warpObj),\n grouping: getTextByPathList(plotArea[key], ['c:grouping', 'attrs', 'val']),\n }\n break\n case 'c:area3DChart':\n chart = {\n type: 'area3DChart',\n data: extractChartData(plotArea[key]['c:ser']),\n colors: extractChartColors(plotArea[key]['c:ser'], warpObj),\n grouping: getTextByPathList(plotArea[key], ['c:grouping', 'attrs', 'val']),\n }\n break\n case 'c:scatterChart':\n chart = {\n type: 'scatterChart',\n data: extractScatterChartData(plotArea[key]['c:ser']),\n colors: extractChartColors(plotArea[key]['c:ser'], warpObj),\n style: getTextByPathList(plotArea[key], ['c:scatterStyle', 'attrs', 'val']),\n }\n break\n case 'c:bubbleChart':\n chart = {\n type: 'bubbleChart',\n data: extractScatterChartData(plotArea[key]['c:ser']),\n colors: extractChartColors(plotArea[key]['c:ser'], warpObj),\n }\n break\n case 'c:radarChart':\n chart = {\n type: 'radarChart',\n data: extractChartData(plotArea[key]['c:ser']),\n colors: extractChartColors(plotArea[key]['c:ser'], warpObj),\n style: getTextByPathList(plotArea[key], ['c:radarStyle', 'attrs', 'val']),\n }\n break\n case 'c:surfaceChart':\n chart = {\n type: 'surfaceChart',\n data: extractChartData(plotArea[key]['c:ser']),\n colors: extractChartColors(plotArea[key]['c:ser'], warpObj),\n }\n break\n case 'c:surface3DChart':\n chart = {\n type: 'surface3DChart',\n data: extractChartData(plotArea[key]['c:ser']),\n colors: extractChartColors(plotArea[key]['c:ser'], warpObj),\n }\n break\n case 'c:stockChart':\n chart = {\n type: 'stockChart',\n data: extractChartData(plotArea[key]['c:ser']),\n colors: [],\n }\n break\n default:\n }\n }\n\n return chart\n}\n","export const RATIO_Inches_EMUs = 914400 // 1英寸 = 914400EMUs\nexport const RATIO_Inches_Points = 72 // 1英寸 = 72pt\nexport const RATIO_EMUs_Points = RATIO_Inches_Points / RATIO_Inches_EMUs // 1EMUs = (72 / 914400)pt","import { RATIO_EMUs_Points } from './constants'\nimport { getTextByPathList, numberToFixed } from './utils'\n\nfunction getParagraphLevel(node) {\n let lvlIdx = 1\n const lvlNode = getTextByPathList(node, ['a:pPr', 'attrs', 'lvl'])\n if (lvlNode !== undefined) lvlIdx = parseInt(lvlNode) + 1\n return lvlIdx\n}\n\nfunction getAlignFromTextNode(node, lvlStr) {\n if (!node) return ''\n\n let algn = getTextByPathList(node, ['p:txBody', 'a:lstStyle', lvlStr, 'attrs', 'algn'])\n if (!algn) algn = getTextByPathList(node, ['p:txBody', 'a:p', 'a:pPr', 'attrs', 'algn'])\n\n return algn || ''\n}\n\nexport function getHorizontalAlign(node, pNode, type, slideLayoutSpNode, slideMasterSpNode, warpObj) {\n let algn = getTextByPathList(node, ['a:pPr', 'attrs', 'algn'])\n\n if (!algn) algn = getTextByPathList(pNode, ['p:txBody', 'a:p', 'a:pPr', 'attrs', 'algn'])\n\n if (!algn) {\n const lvlIdx = getParagraphLevel(node)\n const lvlStr = 'a:lvl' + lvlIdx + 'pPr'\n\n algn = getAlignFromTextNode(slideLayoutSpNode, lvlStr)\n if (!algn) algn = getAlignFromTextNode(slideMasterSpNode, lvlStr)\n\n if (!algn && (type === 'title' || type === 'ctrTitle' || type === 'subTitle')) {\n algn = getTextByPathList(warpObj, ['slideMasterTextStyles', 'p:titleStyle', lvlStr, 'attrs', 'algn'])\n if (!algn && type === 'subTitle') {\n algn = getTextByPathList(warpObj, ['slideMasterTextStyles', 'p:bodyStyle', lvlStr, 'attrs', 'algn'])\n }\n } \n else if (!algn && type === 'body') {\n algn = getTextByPathList(warpObj, ['slideMasterTextStyles', 'p:bodyStyle', lvlStr, 'attrs', 'algn'])\n } \n else if (!algn) {\n algn = getTextByPathList(warpObj, ['slideMasterTextStyles', 'p:otherStyle', lvlStr, 'attrs', 'algn'])\n }\n }\n\n let align = 'left'\n if (algn) {\n switch (algn) {\n case 'l':\n align = 'left'\n break\n case 'r':\n align = 'right'\n break\n case 'ctr':\n align = 'center'\n break\n case 'just':\n align = 'justify'\n break\n case 'dist':\n align = 'distribute'\n break\n default:\n align = 'inherit'\n }\n }\n return align\n}\n\nexport function getVerticalAlign(node, slideLayoutSpNode, slideMasterSpNode) {\n let anchor = getTextByPathList(node, ['p:txBody', 'a:bodyPr', 'attrs', 'anchor'])\n if (!anchor) {\n anchor = getTextByPathList(slideLayoutSpNode, ['p:txBody', 'a:bodyPr', 'attrs', 'anchor'])\n if (!anchor) {\n anchor = getTextByPathList(slideMasterSpNode, ['p:txBody', 'a:bodyPr', 'attrs', 'anchor'])\n if (!anchor) anchor = 't'\n }\n }\n return (anchor === 'ctr') ? 'mid' : ((anchor === 'b') ? 'down' : 'up')\n}\n\nexport function getTextDirection(node, slideLayoutSpNode, slideMasterSpNode) {\n const sources = [node, slideLayoutSpNode, slideMasterSpNode]\n for (const source of sources) {\n const direction = getTextByPathList(source, ['p:txBody', 'a:bodyPr', 'attrs', 'vert'])\n if (direction) return direction\n }\n return 'horz'\n}\n\nexport function getTextAutoFit(node, slideLayoutSpNode, slideMasterSpNode) {\n function checkBodyPr(bodyPr) {\n if (!bodyPr) return null\n\n if (bodyPr['a:noAutofit']) return { result: null }\n else if (bodyPr['a:spAutoFit']) {\n const wrap = getTextByPathList(bodyPr, ['attrs', 'wrap'])\n const wrapText = wrap !== 'none'\n return { result: { type: 'shape', wrapText } }\n }\n else if (bodyPr['a:normAutofit']) {\n const fontScale = getTextByPathList(bodyPr['a:normAutofit'], ['attrs', 'fontScale'])\n if (fontScale) {\n const scalePercent = parseInt(fontScale) / 1000\n return {\n result: {\n type: 'text',\n fontScale: scalePercent,\n }\n }\n }\n return { result: { type: 'text' } }\n }\n return null\n }\n\n const nodeCheck = checkBodyPr(getTextByPathList(node, ['p:txBody', 'a:bodyPr']))\n if (nodeCheck) return nodeCheck.result\n\n const layoutCheck = checkBodyPr(getTextByPathList(slideLayoutSpNode, ['p:txBody', 'a:bodyPr']))\n if (layoutCheck) return layoutCheck.result\n\n const masterCheck = checkBodyPr(getTextByPathList(slideMasterSpNode, ['p:txBody', 'a:bodyPr']))\n if (masterCheck) return masterCheck.result\n\n return null\n}\n\nfunction pushParagraphStyleNode(styleNodes, styleNode) {\n if (styleNode) styleNodes.push(styleNode)\n}\n\nfunction appendTextBodyParagraphStyleNodes(styleNodes, textBodyNode, lvl) {\n if (!textBodyNode) return\n\n const lvlPath = `a:lvl${lvl}pPr`\n pushParagraphStyleNode(styleNodes, getTextByPathList(textBodyNode, ['a:lstStyle', lvlPath]))\n}\n\nfunction appendShapeParagraphStyleNodes(styleNodes, shapeNode, lvl) {\n if (!shapeNode) return\n\n const lvlPath = `a:lvl${lvl}pPr`\n pushParagraphStyleNode(styleNodes, getTextByPathList(shapeNode, ['p:txBody', 'a:lstStyle', lvlPath]))\n pushParagraphStyleNode(styleNodes, getTextByPathList(shapeNode, ['p:txBody', 'a:p', 'a:pPr']))\n}\n\nfunction appendMasterTextParagraphStyleNodes(styleNodes, type, lvl, slideMasterTextStyles) {\n if (!slideMasterTextStyles) return\n\n const lvlPath = `a:lvl${lvl}pPr`\n\n if (type === 'title' || type === 'ctrTitle' || type === 'subTitle') {\n pushParagraphStyleNode(styleNodes, getTextByPathList(slideMasterTextStyles, ['p:titleStyle', lvlPath]))\n if (type === 'subTitle') {\n pushParagraphStyleNode(styleNodes, getTextByPathList(slideMasterTextStyles, ['p:bodyStyle', lvlPath]))\n }\n }\n else if (type === 'body') {\n pushParagraphStyleNode(styleNodes, getTextByPathList(slideMasterTextStyles, ['p:bodyStyle', lvlPath]))\n }\n else {\n pushParagraphStyleNode(styleNodes, getTextByPathList(slideMasterTextStyles, ['p:otherStyle', lvlPath]))\n }\n}\n\nfunction appendDefaultTextParagraphStyleNodes(styleNodes, defaultTextStyle, lvl) {\n if (!defaultTextStyle) return\n\n const lvlPath = `a:lvl${lvl}pPr`\n pushParagraphStyleNode(styleNodes, getTextByPathList(defaultTextStyle, [lvlPath]))\n pushParagraphStyleNode(styleNodes, getTextByPathList(defaultTextStyle, ['a:defPPr']))\n}\n\nexport function getParagraphStyleNodes(pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, warpObj) {\n if (!pNode) return null\n\n const pPrNode = pNode['a:pPr']\n const lvl = getParagraphLevel(pNode)\n const styleNodes = []\n\n pushParagraphStyleNode(styleNodes, pPrNode)\n appendTextBodyParagraphStyleNodes(styleNodes, textBodyNode, lvl)\n appendShapeParagraphStyleNodes(styleNodes, slideLayoutSpNode, lvl)\n appendShapeParagraphStyleNodes(styleNodes, slideMasterSpNode, lvl)\n appendMasterTextParagraphStyleNodes(styleNodes, type, lvl, slideMasterTextStyles)\n appendDefaultTextParagraphStyleNodes(styleNodes, getTextByPathList(warpObj, ['defaultTextStyle']), lvl)\n\n return styleNodes\n}\n\nfunction getLineSpacingValue(spacingNode) {\n const spcPct = getTextByPathList(spacingNode, ['a:spcPct', 'attrs', 'val'])\n const spcPts = getTextByPathList(spacingNode, ['a:spcPts', 'attrs', 'val'])\n\n if (spcPct) return Math.round(parseInt(spcPct) / 1000 / 100 * 1.2 * 100) / 100\n if (spcPts) return parseInt(spcPts) / 100 + 'pt'\n\n return undefined\n}\n\nfunction getParagraphSpacingValue(spacingNode) {\n const spcPct = getTextByPathList(spacingNode, ['a:spcPct', 'attrs', 'val'])\n const spcPts = getTextByPathList(spacingNode, ['a:spcPts', 'attrs', 'val'])\n\n if (spcPct) return parseInt(spcPct) / 100000 + 'em'\n if (spcPts) return parseInt(spcPts) / 100 + 'pt'\n\n return undefined\n}\n\nfunction getParagraphIndentValue(styleNode, attrName) {\n const val = getTextByPathList(styleNode, ['attrs', attrName])\n\n if (val !== undefined && val !== '') return numberToFixed(parseInt(val) * RATIO_EMUs_Points) + 'pt'\n\n return undefined\n}\n\nexport function getParagraphSpacing(pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, warpObj) {\n const styleNodes = getParagraphStyleNodes(pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, warpObj)\n if (!styleNodes) return null\n\n const spacing = {}\n\n for (const styleNode of styleNodes) {\n if (spacing.lineSpacing === undefined) {\n const lineSpacing = getLineSpacingValue(styleNode['a:lnSpc'])\n if (lineSpacing !== undefined) spacing.lineSpacing = lineSpacing\n }\n\n if (spacing.spaceBefore === undefined) {\n const spaceBefore = getParagraphSpacingValue(styleNode['a:spcBef'])\n if (spaceBefore !== undefined) spacing.spaceBefore = spaceBefore\n }\n\n if (spacing.spaceAfter === undefined) {\n const spaceAfter = getParagraphSpacingValue(styleNode['a:spcAft'])\n if (spaceAfter !== undefined) spacing.spaceAfter = spaceAfter\n }\n }\n\n const lnSpcReductionVal = getLnSpcReduction(textBodyNode, slideLayoutSpNode, slideMasterSpNode)\n if (lnSpcReductionVal !== undefined) {\n const reduction = lnSpcReductionVal / 100000\n if (spacing.lineSpacing !== undefined) {\n if (typeof spacing.lineSpacing === 'number') {\n spacing.lineSpacing = Math.round((spacing.lineSpacing * (1 - reduction)) * 100) / 100\n }\n }\n else {\n spacing.lineSpacing = Math.round((1 - reduction) * 100) / 100\n }\n }\n\n return Object.keys(spacing).length > 0 ? spacing : null\n}\n\nfunction getLnSpcReduction(textBodyNode, slideLayoutSpNode, slideMasterSpNode) {\n const sources = [textBodyNode, slideLayoutSpNode && slideLayoutSpNode['p:txBody'], slideMasterSpNode && slideMasterSpNode['p:txBody']]\n for (const src of sources) {\n const val = getTextByPathList(src, ['a:bodyPr', 'a:normAutofit', 'attrs', 'lnSpcReduction'])\n if (val !== undefined) return parseInt(val)\n }\n return undefined\n}\n\nexport function getParagraphIndent(pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, warpObj) {\n const styleNodes = getParagraphStyleNodes(pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, warpObj)\n if (!styleNodes) return null\n\n const indent = {}\n\n for (const styleNode of styleNodes) {\n if (indent.marginLeft === undefined) {\n const marginLeft = getParagraphIndentValue(styleNode, 'marL')\n if (marginLeft !== undefined) indent.marginLeft = marginLeft\n }\n\n if (indent.textIndent === undefined) {\n const textIndent = getParagraphIndentValue(styleNode, 'indent')\n if (textIndent !== undefined) indent.textIndent = textIndent\n }\n }\n\n return Object.keys(indent).length > 0 ? indent : null\n}\n","import { getTextByPathList, numberToFixed } from './utils'\nimport { RATIO_EMUs_Points } from './constants'\n\nconst DEFAULT_INSET_EMU = {\n lIns: 91440, // 0.1 in\n rIns: 91440, // 0.1 in\n tIns: 45720, // 0.05 in\n bIns: 45720, // 0.05 in\n}\n\nfunction getInsetAttr(slideNode, layoutNode, masterNode, attrName) {\n let v = getTextByPathList(slideNode, ['p:txBody', 'a:bodyPr', 'attrs', attrName])\n if (v !== undefined && v !== null && v !== '') return v\n\n v = getTextByPathList(layoutNode, ['p:txBody', 'a:bodyPr', 'attrs', attrName])\n if (v !== undefined && v !== null && v !== '') return v\n\n return getTextByPathList(masterNode, ['p:txBody', 'a:bodyPr', 'attrs', attrName])\n}\n\nfunction emuToPt(emuStr) {\n if (emuStr === undefined || emuStr === null || emuStr === '') return null\n const v = parseInt(emuStr, 10)\n if (!Number.isFinite(v)) return null\n return numberToFixed(v * RATIO_EMUs_Points)\n}\n\nexport function getTextInsets(node, slideLayoutSpNode, slideMasterSpNode) {\n const nodeBodyPr = getTextByPathList(node, ['p:txBody', 'a:bodyPr'])\n const layoutBodyPr = getTextByPathList(slideLayoutSpNode, ['p:txBody', 'a:bodyPr'])\n const masterBodyPr = getTextByPathList(slideMasterSpNode, ['p:txBody', 'a:bodyPr'])\n\n if (!nodeBodyPr) {\n if (!layoutBodyPr) {\n if (!masterBodyPr) return null\n }\n }\n\n let li = getInsetAttr(node, slideLayoutSpNode, slideMasterSpNode, 'lIns')\n if (li === undefined || li === null || li === '') li = DEFAULT_INSET_EMU.lIns\n\n let ti = getInsetAttr(node, slideLayoutSpNode, slideMasterSpNode, 'tIns')\n if (ti === undefined || ti === null || ti === '') ti = DEFAULT_INSET_EMU.tIns\n\n let ri = getInsetAttr(node, slideLayoutSpNode, slideMasterSpNode, 'rIns')\n if (ri === undefined || ri === null || ri === '') ri = DEFAULT_INSET_EMU.rIns\n\n let bi = getInsetAttr(node, slideLayoutSpNode, slideMasterSpNode, 'bIns')\n if (bi === undefined || bi === null || bi === '') bi = DEFAULT_INSET_EMU.bIns\n\n let l = emuToPt(li)\n if (l === null) l = 0\n\n let t = emuToPt(ti)\n if (t === null) t = 0\n\n let r = emuToPt(ri)\n if (r === null) r = 0\n\n let b = emuToPt(bi)\n if (b === null) b = 0\n\n return { l, t, r, b }\n}\n","import { RATIO_EMUs_Points } from './constants'\nimport { numberToFixed } from './utils'\n\nexport function getPosition(slideSpNode, slideLayoutSpNode, slideMasterSpNode) {\n let off\n\n if (slideSpNode) off = slideSpNode['a:off']['attrs']\n else if (slideLayoutSpNode) off = slideLayoutSpNode['a:off']['attrs']\n else if (slideMasterSpNode) off = slideMasterSpNode['a:off']['attrs']\n\n if (!off) return { top: 0, left: 0 }\n\n return {\n top: numberToFixed(parseInt(off['y']) * RATIO_EMUs_Points),\n left: numberToFixed(parseInt(off['x']) * RATIO_EMUs_Points),\n }\n}\n\nexport function getSize(slideSpNode, slideLayoutSpNode, slideMasterSpNode) {\n let ext\n\n if (slideSpNode) ext = slideSpNode['a:ext']['attrs']\n else if (slideLayoutSpNode) ext = slideLayoutSpNode['a:ext']['attrs']\n else if (slideMasterSpNode) ext = slideMasterSpNode['a:ext']['attrs']\n\n if (!ext) return { width: 0, height: 0 }\n\n return {\n width: numberToFixed(parseInt(ext['cx']) * RATIO_EMUs_Points),\n height: numberToFixed(parseInt(ext['cy']) * RATIO_EMUs_Points),\n }\n}","import { ommlNodeToLatex } from 'dwml-ts'\n\nexport function findOMath(obj) {\n let results = []\n if (typeof obj !== 'object') return results\n if (obj['m:oMath']) results = results.concat(obj['m:oMath'])\n \n Object.values(obj).forEach(value => {\n if (Array.isArray(value) || typeof value === 'object') {\n results = results.concat(findOMath(value))\n }\n })\n return results\n}\n\n/**\n * Convert a simplified oMath/oMathPara node to bare LaTeX.\n *\n * Conversion runs on the raw txml node retained by readXmlFile (`__rawNode`)\n * through dwml-ts — a port of the dwml OMML->LaTeX library — instead of the\n * lossy simplified tree. Returns '' when the node carries no convertible math.\n */\nfunction localName(tag) {\n if (!tag) return ''\n const i = tag.indexOf(':')\n return i >= 0 ? tag.slice(i + 1) : tag\n}\n\nfunction firstRawOMath(node) {\n if (!node || typeof node !== 'object') return null\n if (localName(node.tagName) === 'oMath') return node\n for (const child of node.children || []) {\n if (typeof child === 'object') {\n const found = firstRawOMath(child)\n if (found) return found\n }\n }\n return null\n}\n\nexport function oMathToLatex(simplifiedNode) {\n const rawNode = simplifiedNode && simplifiedNode.__rawNode\n if (!rawNode) return ''\n const math = firstRawOMath(rawNode) || rawNode\n return latexFormart(ommlNodeToLatex(math)).trim()\n}\n\nconst toArray = value => {\n if (!value) return []\n return Array.isArray(value) ? value : [value]\n}\n\n/**\n * Collect inline math runs of one `<a:p>` node: `<a14:m>` wrappers and bare\n * `<m:oMath>`/`<m:oMathPara>` siblings of the text runs. Each entry carries\n * the document-order attribute so it can be merged into the run list.\n */\nfunction mathPayloads(container) {\n const direct = toArray(container && container['m:oMath'])\n if (direct.length) return direct\n const out = []\n for (const para of toArray(container && container['m:oMathPara'])) {\n const inner = toArray(para['m:oMath'])\n if (inner.length) out.push(...inner)\n else out.push(para)\n }\n return out\n}\n\nexport function getInlineMathRuns(pNode) {\n const runs = []\n const push = (node, order) => {\n const latex = oMathToLatex(node)\n if (latex) runs.push({ type: 'math', latex, node, attrs: { order } })\n }\n\n for (const wrapper of toArray(pNode['a14:m'])) {\n const order = (wrapper && wrapper.attrs && wrapper.attrs.order) || 0\n for (const node of mathPayloads(wrapper)) push(node, order)\n }\n for (const node of mathPayloads(pNode)) {\n push(node, (node && node.attrs && node.attrs.order) || 0)\n }\n return runs\n}\n\nconst findMathRunPr = (node, skipCtrlPr) => {\n if (!node || typeof node !== 'object') return null\n if (node['a:rPr']) {\n const rPr = node['a:rPr']\n return Array.isArray(rPr) ? rPr[0] : rPr\n }\n for (const [key, value] of Object.entries(node)) {\n if (key === 'attrs' || (skipCtrlPr && key === 'm:ctrlPr')) continue\n for (const child of toArray(value)) {\n const found = findMathRunPr(child, skipCtrlPr)\n if (found) return found\n }\n }\n return null\n}\n\n/**\n * Resolve the run properties that size/color an equation. Math glyph runs\n * (`m:r > a:rPr`) carry the visible size; `m:ctrlPr` is only a fallback since\n * it describes the control characters, not the rendered operands. Returns a\n * node shaped like a text run so the standard fontStyle resolution chain\n * (run -> paragraph -> layout -> master) applies unchanged.\n */\nexport function getMathRunStyleNode(mathRun) {\n const mathNode = mathRun && mathRun.node\n const rPr = findMathRunPr(mathNode, true) || findMathRunPr(mathNode, false)\n return rPr ? { 'a:rPr': rPr } : {}\n}\n\n/** True when the math run's own properties pin a font size. */\nexport function mathRunHasOwnSize(styleNode) {\n const rPr = styleNode && styleNode['a:rPr']\n return !!(rPr && rPr.attrs && rPr.attrs.sz)\n}\n\n/** True when the math run's own properties pin a fill color. */\nexport function mathRunHasOwnColor(styleNode) {\n const rPr = styleNode && styleNode['a:rPr']\n return !!(rPr && (rPr['a:solidFill'] || rPr['a:gradFill'] || rPr['a:pattFill']))\n}\n\nexport function latexFormart(latex) {\n return latex.replaceAll(/</g, '<')\n .replaceAll(/>/g, '>')\n .replaceAll(/&/g, '&')\n .replaceAll(/'/g, \"'\")\n .replaceAll(/"/g, '\"')\n}\n","import { getSolidFill } from './fill'\nimport { RATIO_EMUs_Points } from './constants'\n\nexport function getShadow(node, warpObj) {\n const chdwClrNode = getSolidFill(node, undefined, undefined, warpObj)\n const outerShdwAttrs = node['attrs']\n const dir = outerShdwAttrs['dir'] ? (parseInt(outerShdwAttrs['dir']) / 60000) : 0\n const dist = outerShdwAttrs['dist'] ? parseInt(outerShdwAttrs['dist']) * RATIO_EMUs_Points : 0\n const blurRad = outerShdwAttrs['blurRad'] ? parseInt(outerShdwAttrs['blurRad']) * RATIO_EMUs_Points : ''\n const vx = dist * Math.sin(dir * Math.PI / 180)\n const hx = dist * Math.cos(dir * Math.PI / 180)\n\n return {\n h: hx,\n v: vx,\n blur: blurRad,\n color: chdwClrNode,\n }\n}","import { getTextByPathList, isOoxmlTrue } from './utils'\nimport { getShadow } from './shadow'\nimport { getFillType, getGradientFill, getSolidFill } from './fill'\n\nfunction pushStyleNode(styleNodes, styleNode) {\n if (styleNode) styleNodes.push(styleNode)\n}\n\nfunction getLevelPath(lvl) {\n return `a:lvl${lvl}pPr`\n}\n\nfunction appendTextBodyStyleNodes(styleNodes, textBodyNode, lvl) {\n if (!textBodyNode) return\n\n const lvlPath = getLevelPath(lvl)\n pushStyleNode(styleNodes, getTextByPathList(textBodyNode, ['a:lstStyle', lvlPath, 'a:defRPr']))\n}\n\nfunction appendShapeStyleNodes(styleNodes, shapeNode, lvl) {\n if (!shapeNode) return\n\n const lvlPath = getLevelPath(lvl)\n pushStyleNode(styleNodes, getTextByPathList(shapeNode, ['p:txBody', 'a:lstStyle', lvlPath, 'a:defRPr']))\n pushStyleNode(styleNodes, getTextByPathList(shapeNode, ['p:txBody', 'a:p', 'a:pPr', 'a:defRPr']))\n}\n\nfunction appendMasterTextStyleNodes(styleNodes, type, lvl, slideMasterTextStyles) {\n if (!slideMasterTextStyles) return\n\n const lvlPath = getLevelPath(lvl)\n\n if (type === 'title' || type === 'ctrTitle' || type === 'subTitle') {\n pushStyleNode(styleNodes, getTextByPathList(slideMasterTextStyles, ['p:titleStyle', lvlPath, 'a:defRPr']))\n if (type === 'subTitle') {\n pushStyleNode(styleNodes, getTextByPathList(slideMasterTextStyles, ['p:bodyStyle', lvlPath, 'a:defRPr']))\n }\n }\n else if (type === 'body') {\n pushStyleNode(styleNodes, getTextByPathList(slideMasterTextStyles, ['p:bodyStyle', lvlPath, 'a:defRPr']))\n }\n else {\n pushStyleNode(styleNodes, getTextByPathList(slideMasterTextStyles, ['p:otherStyle', lvlPath, 'a:defRPr']))\n }\n}\n\nfunction appendDefaultTextStyleNodes(styleNodes, lvl, defaultTextStyle) {\n if (!defaultTextStyle) return\n\n const lvlPath = getLevelPath(lvl)\n pushStyleNode(styleNodes, getTextByPathList(defaultTextStyle, [lvlPath, 'a:defRPr']))\n pushStyleNode(styleNodes, getTextByPathList(defaultTextStyle, ['a:defPPr', 'a:defRPr']))\n}\n\nfunction getBaseFontStyleNodes(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, lvl) {\n const styleNodes = []\n const runStyleNode = getTextByPathList(node, ['a:rPr'])\n\n pushStyleNode(styleNodes, runStyleNode)\n if (!runStyleNode) {\n pushStyleNode(styleNodes, getTextByPathList(pNode, ['a:endParaRPr']))\n }\n pushStyleNode(styleNodes, getTextByPathList(pNode, ['a:pPr', 'a:defRPr']))\n\n appendTextBodyStyleNodes(styleNodes, textBodyNode, lvl)\n appendShapeStyleNodes(styleNodes, slideLayoutSpNode, lvl)\n appendShapeStyleNodes(styleNodes, slideMasterSpNode, lvl)\n\n return styleNodes\n}\n\nfunction getFontStyleNodes(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl\n) {\n const styleNodes = getBaseFontStyleNodes(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, lvl)\n appendMasterTextStyleNodes(styleNodes, type, lvl, slideMasterTextStyles)\n\n return styleNodes\n}\n\nfunction getFontAttr(styleNodes, attrName) {\n for (const styleNode of styleNodes) {\n const attrValue = getTextByPathList(styleNode, ['attrs', attrName])\n if (attrValue !== undefined && attrValue !== '') return attrValue\n }\n\n return ''\n}\n\nfunction containsEastAsian(text) {\n // 涵盖中日韩文字、标点符号、全角字符等\n return /[\\u2E80-\\u9FFF\\uF900-\\uFAFF\\uFF00-\\uFF60\\uFFE0-\\uFFE6\\u3000-\\u303F]/.test(text)\n}\n\nfunction getFontTypeface(styleNodes, text) {\n const isEA = containsEastAsian(text)\n\n for (const styleNode of styleNodes) {\n const latin = getTextByPathList(styleNode, ['a:latin', 'attrs', 'typeface'])\n const ea = getTextByPathList(styleNode, ['a:ea', 'attrs', 'typeface'])\n const cs = getTextByPathList(styleNode, ['a:cs', 'attrs', 'typeface'])\n const sym = getTextByPathList(styleNode, ['a:sym', 'attrs', 'typeface'])\n\n if (isEA && ea) return ea\n if (latin) return latin\n if (ea) return ea\n if (cs) return cs\n if (sym) return sym\n }\n\n return ''\n}\n\nfunction getColorFromNode(node, warpObj) {\n if (!node) return ''\n\n const fillType = getFillType(node)\n if (fillType === 'SOLID_FILL') {\n return getSolidFill(node['a:solidFill'], undefined, undefined, warpObj)\n }\n if (fillType === 'GRADIENT_FILL') {\n return getGradientFill(node['a:gradFill'], warpObj)\n }\n\n return ''\n}\n\nfunction getFontColorFromStyleNodes(styleNodes, warpObj) {\n for (const styleNode of styleNodes) {\n const color = getColorFromNode(styleNode, warpObj)\n if (color) return color\n }\n\n return ''\n}\n\nfunction getTextShadowFromStyleNodes(styleNodes, warpObj) {\n for (const styleNode of styleNodes) {\n const txtShadow = getTextByPathList(styleNode, ['a:effectLst', 'a:outerShdw'])\n if (!txtShadow) continue\n\n const shadow = getShadow(txtShadow, warpObj)\n if (shadow) return shadow\n }\n\n return null\n}\n\nexport function getFontType(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl,\n warpObj,\n text\n) {\n const isEA = containsEastAsian(text)\n\n const styleNodes = getFontStyleNodes(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl\n )\n let typeface = getFontTypeface(styleNodes, text)\n\n if (!typeface || typeface.startsWith('+')) {\n const fontSchemeNode = getTextByPathList(warpObj['themeContent'], ['a:theme', 'a:themeElements', 'a:fontScheme'])\n\n if (fontSchemeNode) {\n if (typeface && typeface.startsWith('+')) {\n switch (typeface) {\n case '+mj-lt':\n return getTextByPathList(fontSchemeNode, ['a:majorFont', 'a:latin', 'attrs', 'typeface'])\n case '+mn-lt':\n return getTextByPathList(fontSchemeNode, ['a:minorFont', 'a:latin', 'attrs', 'typeface'])\n case '+mj-ea':\n return getTextByPathList(fontSchemeNode, ['a:majorFont', 'a:ea', 'attrs', 'typeface'])\n case '+mn-ea':\n return getTextByPathList(fontSchemeNode, ['a:minorFont', 'a:ea', 'attrs', 'typeface'])\n case '+mj-cs':\n return getTextByPathList(fontSchemeNode, ['a:majorFont', 'a:cs', 'attrs', 'typeface'])\n case '+mn-cs':\n return getTextByPathList(fontSchemeNode, ['a:minorFont', 'a:cs', 'attrs', 'typeface'])\n default:\n return typeface.replace(/^\\+/, '')\n }\n }\n }\n\n if (type === 'title' || type === 'subTitle' || type === 'ctrTitle') {\n typeface =\n (isEA ? getTextByPathList(fontSchemeNode, ['a:majorFont', 'a:ea', 'attrs', 'typeface']) : '') ||\n getTextByPathList(fontSchemeNode, ['a:majorFont', 'a:latin', 'attrs', 'typeface']) ||\n getTextByPathList(fontSchemeNode, ['a:majorFont', 'a:ea', 'attrs', 'typeface'])\n }\n else {\n typeface =\n (isEA ? getTextByPathList(fontSchemeNode, ['a:minorFont', 'a:ea', 'attrs', 'typeface']) : '') ||\n getTextByPathList(fontSchemeNode, ['a:minorFont', 'a:latin', 'attrs', 'typeface']) ||\n getTextByPathList(fontSchemeNode, ['a:minorFont', 'a:ea', 'attrs', 'typeface'])\n }\n }\n\n return typeface || ''\n}\n\nexport function getFontColor(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl,\n pFontStyle,\n warpObj\n) {\n // run 级别(a:rPr)是最高优先级。如果明确声明了 noFill,\n // 表示文字颜色为透明,应直接返回 transparent,不再继续向上查找。\n const runStyleNode = getTextByPathList(node, ['a:rPr'])\n if (runStyleNode && getFillType(runStyleNode) === 'NO_FILL') {\n return 'transparent'\n }\n\n const styleNodes = getBaseFontStyleNodes(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, lvl)\n let color = getFontColorFromStyleNodes(styleNodes, warpObj)\n\n if (!color) {\n if (pFontStyle) color = getSolidFill(pFontStyle, undefined, undefined, warpObj)\n if (!color) {\n const layoutFontStyle = getTextByPathList(slideLayoutSpNode, ['p:style', 'a:fontRef'])\n if (layoutFontStyle) color = getSolidFill(layoutFontStyle, undefined, undefined, warpObj)\n }\n if (!color) {\n const masterFontStyle = getTextByPathList(slideMasterSpNode, ['p:style', 'a:fontRef'])\n if (masterFontStyle) color = getSolidFill(masterFontStyle, undefined, undefined, warpObj)\n }\n }\n\n if (!color) {\n appendMasterTextStyleNodes(styleNodes, type, lvl, slideMasterTextStyles)\n color = getFontColorFromStyleNodes(styleNodes, warpObj)\n }\n\n return color || ''\n}\n\nexport function getFontSize(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl,\n defaultTextStyle\n) {\n const styleNodes = getFontStyleNodes(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl\n )\n appendDefaultTextStyleNodes(styleNodes, lvl, defaultTextStyle)\n const sz = getFontAttr(styleNodes, 'sz')\n let fontSize = sz ? parseInt(sz) / 100 : undefined\n\n if ((isNaN(fontSize) || !fontSize) && (type === 'dt' || type === 'sldNum')) fontSize = 12\n\n fontSize = isNaN(fontSize) || !fontSize ? 18 : fontSize\n\n return fontSize + 'pt'\n}\n\nexport function getFontBold(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl) {\n const styleNodes = getFontStyleNodes(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl)\n return isOoxmlTrue(getFontAttr(styleNodes, 'b')) ? 'bold' : ''\n}\n\nexport function getFontItalic(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl) {\n const styleNodes = getFontStyleNodes(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl)\n return isOoxmlTrue(getFontAttr(styleNodes, 'i')) ? 'italic' : ''\n}\n\nexport function getFontDecoration(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl\n) {\n const styleNodes = getFontStyleNodes(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl\n )\n return getFontAttr(styleNodes, 'u') === 'sng' ? 'underline' : ''\n}\n\nexport function getFontDecorationLine(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl\n) {\n const styleNodes = getFontStyleNodes(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl\n )\n return getFontAttr(styleNodes, 'strike') === 'sngStrike' ? 'line-through' : ''\n}\n\nexport function getFontSpace(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl\n) {\n const styleNodes = getFontStyleNodes(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl\n )\n const spc = getFontAttr(styleNodes, 'spc')\n return spc && parseInt(spc) !== 0 ? parseInt(spc) / 100 + 'pt' : ''\n}\n\nexport function getFontSubscript(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl\n) {\n const styleNodes = getFontStyleNodes(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl\n )\n const baseline = getFontAttr(styleNodes, 'baseline')\n if (!baseline || parseInt(baseline) === 0) return ''\n return parseInt(baseline) > 0 ? 'super' : 'sub'\n}\n\nexport function getFontShadow(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl,\n warpObj\n) {\n const styleNodes = getFontStyleNodes(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl\n )\n const shadow = getTextShadowFromStyleNodes(styleNodes, warpObj)\n if (shadow) {\n const { h, v, blur, color } = shadow\n if (!isNaN(v) && !isNaN(h)) {\n return h + 'pt ' + v + 'pt ' + (blur ? blur + 'pt' : '') + ' ' + color\n }\n }\n return ''\n}\n","import { getHorizontalAlign, getParagraphSpacing, getParagraphIndent, getParagraphStyleNodes } from './paragraph'\nimport { getTextByPathList, escapeHtml } from './utils'\nimport { getInlineMathRuns, getMathRunStyleNode, mathRunHasOwnSize, mathRunHasOwnColor } from './math'\nimport { getFillType } from './fill'\nimport { getSchemeColorFromTheme } from './schemeColor'\n\nimport {\n getFontType,\n getFontColor,\n getFontSize,\n getFontBold,\n getFontItalic,\n getFontDecoration,\n getFontDecorationLine,\n getFontSpace,\n getFontSubscript,\n getFontShadow,\n} from './fontStyle'\n\nexport function getTextNodeValue(node) {\n if (typeof node === 'string') return node\n if (node && typeof node.value === 'string') return node.value\n return undefined\n}\n\nexport function genTextBody(textBodyNode, spNode, slideLayoutSpNode, slideMasterSpNode, type, warpObj) {\n if (!textBodyNode) return ''\n\n let text = ''\n\n const pFontStyle = getTextByPathList(spNode, ['p:style', 'a:fontRef'])\n const slideMasterTextStyles = spNode && spNode['a:tcPr'] ? undefined : warpObj['slideMasterTextStyles']\n const defaultTextStyle = spNode && spNode['a:tcPr'] ? warpObj['defaultTextStyle'] : undefined\n\n const pNode = textBodyNode['a:p']\n const pNodes = pNode.constructor === Array ? pNode : [pNode]\n\n const listTypes = []\n\n for (const pNode of pNodes) {\n let rNode = pNode['a:r']\n let fldNode = pNode['a:fld']\n let brNode = pNode['a:br']\n if (rNode) {\n rNode = (rNode.constructor === Array) ? rNode : [rNode]\n\n if (fldNode) {\n fldNode = (fldNode.constructor === Array) ? fldNode : [fldNode]\n rNode = rNode.concat(fldNode)\n }\n if (brNode) {\n brNode = (brNode.constructor === Array) ? brNode : [brNode]\n brNode.forEach(item => item.type = 'br')\n \n if (brNode.length > 1) brNode.shift()\n rNode = rNode.concat(brNode)\n rNode.sort((a, b) => {\n if (!a.attrs || !b.attrs) return true\n return a.attrs.order - b.attrs.order\n })\n }\n }\n\n // Inline OMML math (<a14:m>/<m:oMath> siblings of <a:r>) — merge into the\n // run list by document order so equations keep their place in the text.\n const mathRuns = getInlineMathRuns(pNode)\n if (mathRuns.length) {\n rNode = (rNode || []).concat(mathRuns)\n rNode.sort((a, b) => ((a.attrs && a.attrs.order) || 0) - ((b.attrs && b.attrs.order) || 0))\n }\n\n const align = getHorizontalAlign(pNode, spNode, type, slideLayoutSpNode, slideMasterSpNode, warpObj)\n const spacing = getParagraphSpacing(pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, warpObj)\n const indent = getParagraphIndent(pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, warpObj)\n const listType = getListType(pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, warpObj)\n const listLevel = getListLevel(pNode)\n\n let alignStyle = align\n if (align === 'distribute') alignStyle = 'justify'\n let styleText = `text-align: ${alignStyle};`\n if (align === 'distribute') styleText += `text-align-last: justify;text-justify: distribute;`\n if (spacing) {\n if (spacing.lineSpacing) styleText += `line-height: ${spacing.lineSpacing};`\n else styleText += `line-height: 1.2;`\n if (spacing.spaceBefore) styleText += `margin-top: ${spacing.spaceBefore};`\n if (spacing.spaceAfter) styleText += `margin-bottom: ${spacing.spaceAfter};`\n }\n else styleText += `line-height: 1.2;`\n if (indent) {\n if (!listType && indent.marginLeft) styleText += `margin-left: ${indent.marginLeft};`\n if (!listType && indent.textIndent) styleText += `text-indent: ${indent.textIndent};`\n }\n\n if (listType) {\n while (listTypes.length > listLevel + 1) {\n const closedListType = listTypes.pop()\n text += `</${closedListType}>`\n }\n\n if (listTypes[listLevel] === undefined) {\n text += `<${listType}>`\n listTypes[listLevel] = listType\n }\n else if (listTypes[listLevel] !== listType) {\n text += `</${listTypes[listLevel]}>`\n text += `<${listType}>`\n listTypes[listLevel] = listType\n }\n text += `<li><p style=\"${styleText}\">`\n }\n else {\n while (listTypes.length > 0) {\n const closedListType = listTypes.pop()\n text += `</${closedListType}>`\n }\n text += `<p style=\"${styleText}\">`\n }\n \n if (!rNode) {\n text += genSpanElement(pNode, spNode, textBodyNode, pFontStyle, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, defaultTextStyle, warpObj)\n } \n else {\n let prevStyleInfo = null\n let accumulatedText = ''\n\n // Nearest sibling text run supplies size/color a math run doesn't pin\n // itself — inline equations must look like the text they sit in.\n const firstTextRun = rNode.find(item => !item.type)\n let lastTextRun = null\n\n for (const rNodeItem of rNode) {\n if (rNodeItem.type === 'math') {\n if (accumulatedText && prevStyleInfo) {\n const processedText = accumulatedText.replace(/\\t/g, ' ').replace(/\\s/g, ' ')\n text += `<span style=\"${prevStyleInfo.styleText}\">${processedText}</span>`\n }\n accumulatedText = ''\n prevStyleInfo = null\n\n const latex = escapeHtml(rNodeItem.latex)\n const siblingRun = lastTextRun || firstTextRun\n const mathStyle = getMathRunStyleText(rNodeItem, siblingRun, pNode, textBodyNode, pFontStyle, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, defaultTextStyle, warpObj)\n text += `<span class=\"omml-math\" data-latex=\"${latex}\"${mathStyle ? ` style=\"${mathStyle}\"` : ''}>${latex}</span>`\n continue\n }\n if (!rNodeItem.type) lastTextRun = rNodeItem\n\n const styleInfo = getSpanStyleInfo(rNodeItem, pNode, textBodyNode, pFontStyle, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, defaultTextStyle, warpObj)\n\n if (!prevStyleInfo || prevStyleInfo.styleText !== styleInfo.styleText || prevStyleInfo.hasLink !== styleInfo.hasLink || styleInfo.hasLink) {\n if (accumulatedText) {\n const processedText = accumulatedText.replace(/\\t/g, ' ').replace(/\\s/g, ' ')\n text += `<span style=\"${prevStyleInfo.styleText}\">${processedText}</span>`\n accumulatedText = ''\n }\n\n if (styleInfo.hasLink) {\n const processedText = styleInfo.text.replace(/\\t/g, ' ').replace(/\\s/g, ' ')\n text += `<span style=\"${styleInfo.styleText}\"><a href=\"${styleInfo.linkURL}\" target=\"_blank\">${processedText}</a></span>`\n prevStyleInfo = null\n } \n else {\n prevStyleInfo = styleInfo\n accumulatedText = styleInfo.text\n }\n } \n else accumulatedText += styleInfo.text\n }\n\n if (accumulatedText && prevStyleInfo) {\n const processedText = accumulatedText.replace(/\\t/g, ' ').replace(/\\s/g, ' ')\n text += `<span style=\"${prevStyleInfo.styleText}\">${processedText}</span>`\n }\n }\n\n if (listType) text += '</p></li>'\n else text += '</p>'\n }\n while (listTypes.length > 0) {\n const closedListType = listTypes.pop()\n text += `</${closedListType}>`\n }\n return text\n}\n\n/**\n * Style text for an inline equation. Attributes the math run pins itself\n * (`m:r > a:rPr`) win; anything unspecified inherits from the nearest sibling\n * text run — matching how PowerPoint/LibreOffice render equations embedded in\n * a line of text — before falling back to the usual paragraph/layout/master\n * chain for math-only paragraphs.\n */\nfunction getMathRunStyleText(mathRun, siblingRun, pNode, textBodyNode, pFontStyle, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, defaultTextStyle, warpObj) {\n let lvl = 1\n const lvlNode = getTextByPathList(pNode, ['a:pPr', 'attrs', 'lvl'])\n if (lvlNode !== undefined) lvl = parseInt(lvlNode) + 1\n\n const styleNode = getMathRunStyleNode(mathRun)\n const sizeNode = mathRunHasOwnSize(styleNode) || !siblingRun ? styleNode : siblingRun\n const colorNode = mathRunHasOwnColor(styleNode) || !siblingRun ? styleNode : siblingRun\n\n const fontSize = getFontSize(sizeNode, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl, defaultTextStyle)\n const fontColor = getFontColor(colorNode, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl, pFontStyle, warpObj)\n\n let styleText = ''\n if (fontSize) styleText += `font-size: ${fontSize};`\n if (fontColor && typeof fontColor === 'string') styleText += `color: ${fontColor};`\n return styleText\n}\n\nexport function getListType(node, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, warpObj) {\n const hasContent = node['a:r'] || node['a:br'] || node['a:fld']\n if (!hasContent) return ''\n\n const styleNodes = getParagraphStyleNodes(node, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, warpObj)\n if (!styleNodes) return ''\n\n for (const styleNode of styleNodes) {\n if (styleNode['a:buNone']) return ''\n if (styleNode['a:buChar'] || styleNode['a:buBlip']) return 'ul'\n if (styleNode['a:buAutoNum']) return 'ol'\n }\n\n return ''\n}\nexport function getListLevel(node) {\n const pPrNode = node['a:pPr']\n if (!pPrNode) return 0\n\n const lvlNode = getTextByPathList(pPrNode, ['attrs', 'lvl'])\n if (lvlNode !== undefined) return parseInt(lvlNode)\n\n return 0\n}\n\nfunction schemeColorToCss(color) {\n if (!color) return ''\n return color.startsWith('#') ? color : `#${color}`\n}\n\nfunction applyHyperlinkRunStyle(styleText, node, warpObj) {\n let next = styleText\n const runStyleNode = getTextByPathList(node, ['a:rPr'])\n const runFill = runStyleNode ? getFillType(runStyleNode) : ''\n const runHasOwnColor = runFill === 'SOLID_FILL' || runFill === 'GRADIENT_FILL'\n if (!runHasOwnColor) {\n const hlinkColor = schemeColorToCss(getSchemeColorFromTheme('a:hlink', warpObj)) || '#0563C1'\n if (/color\\s*:/.test(next)) next = next.replace(/color\\s*:\\s*[^;]+;/, `color: ${hlinkColor};`)\n else next += `color: ${hlinkColor};`\n }\n\n const runUnderline = getTextByPathList(node, ['a:rPr', 'attrs', 'u'])\n if (runUnderline !== 'none' && !/text-decoration\\s*:\\s*underline/.test(next)) {\n next += 'text-decoration: underline;'\n }\n\n return next\n}\n\nexport function genSpanElement(node, pNode, textBodyNode, pFontStyle, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, defaultTextStyle, warpObj) {\n const { styleText, text, hasLink, linkURL } = getSpanStyleInfo(node, pNode, textBodyNode, pFontStyle, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, defaultTextStyle, warpObj)\n const processedText = text.replace(/\\t/g, ' ').replace(/\\s/g, ' ')\n\n if (hasLink) {\n return `<span style=\"${styleText}\"><a href=\"${linkURL}\" target=\"_blank\">${processedText}</a></span>`\n }\n return `<span style=\"${styleText}\">${processedText}</span>`\n}\n\nexport function getSpanStyleInfo(node, pNode, textBodyNode, pFontStyle, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, defaultTextStyle, warpObj) {\n let lvl = 1\n const pPrNode = pNode['a:pPr']\n const lvlNode = getTextByPathList(pPrNode, ['attrs', 'lvl'])\n if (lvlNode !== undefined) lvl = parseInt(lvlNode) + 1\n\n let text = getTextNodeValue(node['a:t'])\n if (typeof text !== 'string') text = getTextNodeValue(getTextByPathList(node, ['a:fld', 'a:t']))\n if (typeof text !== 'string') text = ' '\n\n let styleText = ''\n const fontColor = getFontColor(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl, pFontStyle, warpObj)\n const fontSize = getFontSize(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl, defaultTextStyle)\n const fontType = getFontType(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl, warpObj, text)\n const fontBold = getFontBold(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl)\n const fontItalic = getFontItalic(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl)\n const fontDecoration = getFontDecoration(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl)\n const fontDecorationLine = getFontDecorationLine(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl)\n const fontSpace = getFontSpace(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl)\n const shadow = getFontShadow(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl, warpObj)\n const subscript = getFontSubscript(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl)\n\n if (fontColor) {\n if (typeof fontColor === 'string') styleText += `color: ${fontColor};`\n else if (fontColor.colors) {\n const { colors, rot } = fontColor\n const stops = colors.map(item => `${item.color} ${item.pos}`).join(', ')\n const gradientStyle = `linear-gradient(${rot + 90}deg, ${stops})`\n styleText += `background: ${gradientStyle}; background-clip: text; color: transparent;`\n }\n }\n if (fontSize) styleText += `font-size: ${fontSize};`\n if (fontType) styleText += `font-family: ${fontType};`\n if (fontBold) styleText += `font-weight: ${fontBold};`\n if (fontItalic) styleText += `font-style: ${fontItalic};`\n if (fontDecoration) styleText += `text-decoration: ${fontDecoration};`\n if (fontDecorationLine) styleText += `text-decoration-line: ${fontDecorationLine};`\n if (fontSpace) styleText += `letter-spacing: ${fontSpace};`\n if (subscript) styleText += `vertical-align: ${subscript};`\n if (shadow) styleText += `text-shadow: ${shadow};`\n\n const linkID = getTextByPathList(node, ['a:rPr', 'a:hlinkClick', 'attrs', 'r:id'])\n const hasLink = linkID && warpObj['slideResObj'][linkID]\n if (hasLink) styleText = applyHyperlinkRunStyle(styleText, node, warpObj)\n\n return {\n styleText,\n text,\n hasLink,\n linkURL: hasLink ? warpObj['slideResObj'][linkID]['target'] : null\n }\n}\n","import { getTextByPathList } from './utils'\n\nexport function shapeArc(cX, cY, rX, rY, stAng, endAng, isClose) {\n let dData\n let angle = stAng\n if (endAng >= stAng) {\n while (angle <= endAng) {\n const radians = angle * (Math.PI / 180)\n const x = cX + Math.cos(radians) * rX\n const y = cY + Math.sin(radians) * rY\n if (angle === stAng) {\n dData = ' M' + x + ' ' + y\n }\n dData += ' L' + x + ' ' + y\n angle++\n }\n } \n else {\n while (angle > endAng) {\n const radians = angle * (Math.PI / 180)\n const x = cX + Math.cos(radians) * rX\n const y = cY + Math.sin(radians) * rY\n if (angle === stAng) {\n dData = ' M ' + x + ' ' + y\n }\n dData += ' L ' + x + ' ' + y\n angle--\n }\n }\n dData += (isClose ? ' z' : '')\n return dData\n}\n\nexport function getCustomShapePath(custShapType, w, h) {\n const pathLstNode = getTextByPathList(custShapType, ['a:pathLst'])\n let pathNodes = getTextByPathList(pathLstNode, ['a:path'])\n\n if (Array.isArray(pathNodes)) pathNodes = pathNodes.shift()\n\n const maxX = parseInt(pathNodes['attrs']['w']) || 0\n const maxY = parseInt(pathNodes['attrs']['h']) || 0\n const cX = maxX === 0 ? 0 : (1 / maxX) * w\n const cY = maxY === 0 ? 0 : (1 / maxY) * h\n let d = ''\n\n let moveToNode = getTextByPathList(pathNodes, ['a:moveTo'])\n\n let lnToNodes = pathNodes['a:lnTo']\n let cubicBezToNodes = pathNodes['a:cubicBezTo']\n let quadBezToNodes = pathNodes['a:quadBezTo']\n const arcToNodes = pathNodes['a:arcTo']\n let closeNode = getTextByPathList(pathNodes, ['a:close'])\n if (!Array.isArray(moveToNode)) moveToNode = [moveToNode]\n\n const multiSapeAry = []\n if (moveToNode.length > 0) {\n Object.keys(moveToNode).forEach(key => {\n if (!moveToNode[key]) return\n const moveToPtNode = moveToNode[key]['a:pt']\n if (moveToPtNode) {\n Object.keys(moveToPtNode).forEach(key => {\n const moveToNoPt = moveToPtNode[key]\n const spX = moveToNoPt['x']\n const spY = moveToNoPt['y']\n const order = moveToNoPt['order']\n multiSapeAry.push({\n type: 'movto',\n x: spX,\n y: spY,\n order,\n })\n })\n }\n })\n if (lnToNodes) {\n if (!Array.isArray(lnToNodes)) lnToNodes = [lnToNodes]\n Object.keys(lnToNodes).forEach(key => {\n if (!lnToNodes[key]) return\n const lnToPtNode = lnToNodes[key]['a:pt']\n if (lnToPtNode) {\n Object.keys(lnToPtNode).forEach(key => {\n const lnToNoPt = lnToPtNode[key]\n const ptX = lnToNoPt['x']\n const ptY = lnToNoPt['y']\n const order = lnToNoPt['order']\n multiSapeAry.push({\n type: 'lnto',\n x: ptX,\n y: ptY,\n order,\n })\n })\n }\n })\n }\n if (cubicBezToNodes) {\n const cubicBezToPtNodesAry = []\n if (!Array.isArray(cubicBezToNodes)) cubicBezToNodes = [cubicBezToNodes]\n Object.keys(cubicBezToNodes).forEach(key => {\n if (!cubicBezToNodes[key] || !cubicBezToNodes[key]['a:pt']) return\n cubicBezToPtNodesAry.push(cubicBezToNodes[key]['a:pt'])\n })\n\n cubicBezToPtNodesAry.forEach(key => {\n const pts_ary = []\n key.forEach(pt => {\n const pt_obj = {\n x: pt['attrs']['x'],\n y: pt['attrs']['y'],\n }\n pts_ary.push(pt_obj)\n })\n const order = key[0]['attrs']['order']\n multiSapeAry.push({\n type: 'cubicBezTo',\n cubBzPt: pts_ary,\n order,\n })\n })\n }\n if (quadBezToNodes) {\n const quadBezToPtNodesAry = []\n if (!Array.isArray(quadBezToNodes)) quadBezToNodes = [quadBezToNodes]\n Object.keys(quadBezToNodes).forEach(key => {\n if (!quadBezToNodes[key] || !quadBezToNodes[key]['a:pt']) return\n quadBezToPtNodesAry.push(quadBezToNodes[key]['a:pt'])\n })\n\n quadBezToPtNodesAry.forEach(key => {\n const pts_ary = []\n key.forEach(pt => {\n const pt_obj = {\n x: pt['attrs']['x'],\n y: pt['attrs']['y'],\n }\n pts_ary.push(pt_obj)\n })\n const order = key[0]['attrs']['order']\n multiSapeAry.push({\n type: 'quadBezTo',\n quadBzPt: pts_ary,\n order,\n })\n })\n }\n if (arcToNodes) {\n const arcToNodesAry = Array.isArray(arcToNodes) ? arcToNodes : [arcToNodes]\n arcToNodesAry.forEach(arcToNodes => {\n const arcToNodesAttrs = arcToNodes['attrs']\n const order = arcToNodesAttrs['order']\n const hR = arcToNodesAttrs['hR']\n const wR = arcToNodesAttrs['wR']\n const stAng = arcToNodesAttrs['stAng']\n const swAng = arcToNodesAttrs['swAng']\n let shftX = 0\n let shftY = 0\n const arcToPtNode = getTextByPathList(arcToNodes, ['a:pt', 'attrs'])\n if (arcToPtNode) {\n shftX = arcToPtNode['x']\n shftY = arcToPtNode['y']\n }\n multiSapeAry.push({\n type: 'arcTo',\n hR,\n wR,\n stAng,\n swAng,\n shftX,\n shftY,\n order,\n })\n })\n }\n if (closeNode) {\n if (!Array.isArray(closeNode)) closeNode = [closeNode]\n Object.keys(closeNode).forEach(() => {\n multiSapeAry.push({\n type: 'close',\n order: Infinity,\n })\n })\n }\n\n multiSapeAry.sort((a, b) => a.order - b.order)\n\n let k = 0\n while (k < multiSapeAry.length) {\n if (multiSapeAry[k].type === 'movto') {\n const spX = parseInt(multiSapeAry[k].x) * cX\n const spY = parseInt(multiSapeAry[k].y) * cY\n d += ' M' + spX + ',' + spY\n } \n else if (multiSapeAry[k].type === 'lnto') {\n const Lx = parseInt(multiSapeAry[k].x) * cX\n const Ly = parseInt(multiSapeAry[k].y) * cY\n d += ' L' + Lx + ',' + Ly\n } \n else if (multiSapeAry[k].type === 'cubicBezTo') {\n const Cx1 = parseInt(multiSapeAry[k].cubBzPt[0].x) * cX\n const Cy1 = parseInt(multiSapeAry[k].cubBzPt[0].y) * cY\n const Cx2 = parseInt(multiSapeAry[k].cubBzPt[1].x) * cX\n const Cy2 = parseInt(multiSapeAry[k].cubBzPt[1].y) * cY\n const Cx3 = parseInt(multiSapeAry[k].cubBzPt[2].x) * cX\n const Cy3 = parseInt(multiSapeAry[k].cubBzPt[2].y) * cY\n d += ' C' + Cx1 + ',' + Cy1 + ' ' + Cx2 + ',' + Cy2 + ' ' + Cx3 + ',' + Cy3\n }\n else if (multiSapeAry[k].type === 'quadBezTo') {\n const Qx1 = parseInt(multiSapeAry[k].quadBzPt[0].x) * cX\n const Qy1 = parseInt(multiSapeAry[k].quadBzPt[0].y) * cY\n const Qx2 = parseInt(multiSapeAry[k].quadBzPt[1].x) * cX\n const Qy2 = parseInt(multiSapeAry[k].quadBzPt[1].y) * cY\n d += ' Q' + Qx1 + ',' + Qy1 + ' ' + Qx2 + ',' + Qy2\n }\n else if (multiSapeAry[k].type === 'arcTo') {\n const hR = parseInt(multiSapeAry[k].hR) * cX\n const wR = parseInt(multiSapeAry[k].wR) * cY\n const stAng = parseInt(multiSapeAry[k].stAng) / 60000\n const swAng = parseInt(multiSapeAry[k].swAng) / 60000\n const endAng = stAng + swAng\n d += shapeArc(wR, hR, wR, hR, stAng, endAng, false)\n }\n else if (multiSapeAry[k].type === 'close') d += 'z'\n k++\n }\n }\n\n return d\n}\n\nexport function isStrokeOnlyCustomGeometry(custShapType) {\n const pathNodes = getTextByPathList(custShapType, ['a:pathLst', 'a:path'])\n if (!pathNodes) return false\n\n const pathNodeList = Array.isArray(pathNodes) ? pathNodes : [pathNodes]\n\n return pathNodeList.length === 1 && getTextByPathList(pathNodeList[0], ['attrs', 'fill']) === 'none'\n}\n\nexport function identifyShape(shapeData) {\n const pathLst = shapeData['a:pathLst']\n if (!pathLst || !pathLst['a:path']) return 'custom'\n\n const path = pathLst['a:path']\n const pathWidth = parseInt(path.attrs?.w) || 0\n const pathHeight = parseInt(path.attrs?.h) || 0\n\n const commands = extractPathCommands(path)\n \n if (commands.length === 0) return 'custom'\n\n const analysis = analyzePathCommands(commands, pathWidth, pathHeight)\n \n return matchShape(analysis)\n}\n\nfunction extractPathCommands(path) {\n const commands = []\n \n if (path['a:moveTo']) {\n const moveTo = path['a:moveTo']\n const pt = moveTo['a:pt']\n if (pt) {\n commands.push({\n type: 'moveTo',\n points: [{ x: parseInt(pt.attrs?.x) || 0, y: parseInt(pt.attrs?.y) || 0 }]\n })\n }\n }\n\n const lineToList = normalizeToArray(path['a:lnTo'])\n lineToList.forEach(lnTo => {\n const pt = lnTo['a:pt']\n if (pt) {\n commands.push({\n type: 'lineTo',\n points: [{ x: parseInt(pt.attrs?.x) || 0, y: parseInt(pt.attrs?.y) || 0 }]\n })\n }\n })\n\n const cubicList = normalizeToArray(path['a:cubicBezTo'])\n cubicList.forEach(cubic => {\n const pts = normalizeToArray(cubic['a:pt'])\n const points = pts.map(pt => ({\n x: parseInt(pt.attrs?.x) || 0,\n y: parseInt(pt.attrs?.y) || 0\n }))\n if (points.length === 3) {\n commands.push({ type: 'cubicBezTo', points })\n }\n })\n\n const arcList = normalizeToArray(path['a:arcTo'])\n arcList.forEach(arc => {\n commands.push({\n type: 'arcTo',\n wR: parseInt(arc.attrs?.wR) || 0,\n hR: parseInt(arc.attrs?.hR) || 0,\n stAng: parseInt(arc.attrs?.stAng) || 0,\n swAng: parseInt(arc.attrs?.swAng) || 0\n })\n })\n\n const quadList = normalizeToArray(path['a:quadBezTo'])\n quadList.forEach(quad => {\n const pts = normalizeToArray(quad['a:pt'])\n const points = pts.map(pt => ({\n x: parseInt(pt.attrs?.x) || 0,\n y: parseInt(pt.attrs?.y) || 0\n }))\n commands.push({ type: 'quadBezTo', points })\n })\n\n if (path['a:close']) {\n commands.push({ type: 'close' })\n }\n\n return commands\n}\n\nfunction normalizeToArray(value) {\n if (!value) return []\n return Array.isArray(value) ? value : [value]\n}\n\nfunction analyzePathCommands(commands, pathWidth, pathHeight) {\n const analysis = {\n lineCount: 0,\n curveCount: 0,\n arcCount: 0,\n isClosed: false,\n vertices: [],\n aspectRatio: pathHeight !== 0 ? pathWidth / pathHeight : 1,\n pathWidth,\n pathHeight,\n hasCurves: false,\n isCircular: false,\n commands\n }\n\n commands.forEach(cmd => {\n switch (cmd.type) {\n case 'moveTo':\n analysis.vertices.push(cmd.points[0])\n break\n case 'lineTo':\n analysis.lineCount++\n analysis.vertices.push(cmd.points[0])\n break\n case 'cubicBezTo':\n analysis.curveCount++\n analysis.hasCurves = true\n if (cmd.points.length === 3) {\n analysis.vertices.push(cmd.points[2])\n }\n break\n case 'quadBezTo':\n analysis.curveCount++\n analysis.hasCurves = true\n if (cmd.points.length >= 2) {\n analysis.vertices.push(cmd.points[cmd.points.length - 1])\n }\n break\n case 'arcTo':\n analysis.arcCount++\n analysis.hasCurves = true\n break\n case 'close':\n analysis.isClosed = true\n break\n default:\n break\n }\n })\n\n if (analysis.curveCount === 4 && analysis.lineCount === 0 && analysis.isClosed) {\n analysis.isCircular = checkIfCircular(commands, pathWidth, pathHeight)\n }\n\n return analysis\n}\n\nfunction checkIfCircular(commands, width, height) {\n const bezierCommands = commands.filter(c => c.type === 'cubicBezTo')\n if (bezierCommands.length !== 4) return false\n\n const endpoints = bezierCommands.map(cmd => cmd.points[2])\n \n const hasTop = endpoints.some(p => Math.abs(p.y) < height * 0.1)\n const hasBottom = endpoints.some(p => Math.abs(p.y - height) < height * 0.1)\n const hasLeft = endpoints.some(p => Math.abs(p.x) < width * 0.1)\n const hasRight = endpoints.some(p => Math.abs(p.x - width) < width * 0.1)\n\n return (hasTop || hasBottom) && (hasLeft || hasRight)\n}\n\nfunction matchShape(analysis) {\n const { \n lineCount,\n curveCount,\n isClosed,\n vertices,\n hasCurves,\n isCircular,\n pathWidth,\n pathHeight,\n } = analysis\n\n if (isCircular) return 'ellipse'\n\n if (analysis.arcCount >= 2 && isClosed && lineCount === 0) return 'ellipse'\n\n if (!hasCurves && isClosed && vertices.length >= 3) return matchPolygon(vertices, pathWidth, pathHeight)\n\n if (lineCount === 4 && curveCount === 4 && isClosed) return 'roundRect'\n\n if (lineCount >= 3 && curveCount > 0 && curveCount <= lineCount && isClosed) {\n const baseShape = matchPolygonByLineCount(lineCount)\n if (baseShape !== 'custom') return baseShape === 'rectangle' ? 'roundRect' : baseShape\n }\n return 'custom'\n}\n\nfunction matchPolygon(vertices, width, height) {\n const uniqueVertices = removeDuplicateVertices(vertices)\n const vertexCount = uniqueVertices.length\n\n switch (vertexCount) {\n case 3:\n return 'triangle'\n case 4:\n return matchQuadrilateral(uniqueVertices, width, height)\n case 5:\n return 'pentagon'\n case 6:\n return 'hexagon'\n case 7:\n return 'heptagon'\n case 8:\n return 'octagon'\n default:\n if (vertexCount > 8) {\n return 'ellipse'\n }\n return 'custom'\n }\n}\n\nfunction removeDuplicateVertices(vertices) {\n const threshold = 100\n const unique = []\n \n vertices.forEach(v => {\n const isDuplicate = unique.some(u => \n Math.abs(u.x - v.x) < threshold && Math.abs(u.y - v.y) < threshold\n )\n if (!isDuplicate) unique.push(v)\n })\n \n return unique\n}\n\nfunction matchQuadrilateral(vertices) {\n if (vertices.length !== 4) return 'custom'\n\n const edges = []\n for (let i = 0; i < 4; i++) {\n const p1 = vertices[i]\n const p2 = vertices[(i + 1) % 4]\n edges.push({\n dx: p2.x - p1.x,\n dy: p2.y - p1.y,\n length: Math.sqrt((p2.x - p1.x) ** 2 + (p2.y - p1.y) ** 2)\n })\n }\n\n if (isRectangle(edges)) return 'roundRect'\n if (isRhombus(edges)) return 'rhombus'\n if (isParallelogram(edges)) return 'parallelogram'\n if (isTrapezoid(edges)) return 'trapezoid'\n\n return 'custom'\n}\n\nfunction isRectangle(edges) {\n const tolerance = 0.1\n const edge02Similar = Math.abs(edges[0].length - edges[2].length) / Math.max(edges[0].length, edges[2].length) < tolerance\n const edge13Similar = Math.abs(edges[1].length - edges[3].length) / Math.max(edges[1].length, edges[3].length) < tolerance\n \n if (!edge02Similar || !edge13Similar) return false\n\n for (let i = 0; i < 4; i++) {\n const e1 = edges[i]\n const e2 = edges[(i + 1) % 4]\n const dotProduct = e1.dx * e2.dx + e1.dy * e2.dy\n const cosAngle = dotProduct / (e1.length * e2.length)\n if (Math.abs(cosAngle) > 0.1) return false\n }\n \n return true\n}\n\nfunction isRhombus(edges) {\n const tolerance = 0.1\n const avgLength = edges.reduce((sum, e) => sum + e.length, 0) / 4\n \n return edges.every(e => Math.abs(e.length - avgLength) / avgLength < tolerance)\n}\n\nfunction isParallelogram(edges) {\n const tolerance = 0.15\n \n const slope0 = edges[0].dx !== 0 ? edges[0].dy / edges[0].dx : Infinity\n const slope2 = edges[2].dx !== 0 ? edges[2].dy / edges[2].dx : Infinity\n const slope1 = edges[1].dx !== 0 ? edges[1].dy / edges[1].dx : Infinity\n const slope3 = edges[3].dx !== 0 ? edges[3].dy / edges[3].dx : Infinity\n\n const parallel02 = Math.abs(slope0 - slope2) < tolerance || \n (Math.abs(slope0) > 1000 && Math.abs(slope2) > 1000)\n const parallel13 = Math.abs(slope1 - slope3) < tolerance ||\n (Math.abs(slope1) > 1000 && Math.abs(slope3) > 1000)\n\n return parallel02 && parallel13\n}\n\nfunction isTrapezoid(edges) {\n const tolerance = 0.15\n \n const slope0 = edges[0].dx !== 0 ? edges[0].dy / edges[0].dx : Infinity\n const slope2 = edges[2].dx !== 0 ? edges[2].dy / edges[2].dx : Infinity\n const slope1 = edges[1].dx !== 0 ? edges[1].dy / edges[1].dx : Infinity\n const slope3 = edges[3].dx !== 0 ? edges[3].dy / edges[3].dx : Infinity\n\n const parallel02 = Math.abs(slope0 - slope2) < tolerance ||\n (Math.abs(slope0) > 1000 && Math.abs(slope2) > 1000)\n const parallel13 = Math.abs(slope1 - slope3) < tolerance ||\n (Math.abs(slope1) > 1000 && Math.abs(slope3) > 1000)\n\n return (parallel02 && !parallel13) || (!parallel02 && parallel13)\n}\n\nfunction matchPolygonByLineCount(lineCount) {\n switch (lineCount) {\n case 3: return 'triangle'\n case 4: return 'rectangle'\n case 5: return 'pentagon'\n case 6: return 'hexagon'\n case 7: return 'heptagon'\n case 8: return 'octagon'\n default: return 'custom'\n }\n}","/**\n * 将 EOT (.fntdata / .eot) 格式转换为 TTF 格式\n * EOT 文件结构:\n * - 0x00-0x03: EOT 头大小\n * - 0x04-0x07: 字体数据大小\n * - 0x08-0x0B: 版本号\n * - 0x0C-0x53: 字体元数据(Panose、字符集等)\n * - 0x54-...: 字体名称字符串\n * - ...: 可选的 RootString、签名等\n * - 最后部分:嵌入的 TTF/OTF 数据\n *\n * @param {ArrayBuffer} eotBuffer - EOT 文件数据\n * @returns {Uint8Array|null} TTF 数据,如果解析失败返回 null\n */\nfunction convertEOTtoTTF(eotBuffer) {\n const data = new DataView(eotBuffer)\n const bytes = new Uint8Array(eotBuffer)\n\n try {\n // 读取 EOT 头信息\n const eotSize = data.getUint32(0, true) // little-endian\n const fontDataSize = data.getUint32(4, true)\n const version = data.getUint32(8, true)\n const magicNumber = data.getUint16(34, true)\n\n // 验证 EOT 格式\n if (magicNumber !== 0x504c) {\n return null\n }\n\n // 验证版本(支持 1.0, 2.1, 2.2)\n if (version !== 0x00010000 && version !== 0x00020001 && version !== 0x00020002) {\n return null\n }\n\n // 计算 TTF 数据的起始位置\n // TTF 数据位于 EOT 文件的末尾,大小为 fontDataSize\n const ttfOffset = eotSize - fontDataSize\n\n if (ttfOffset < 0 || ttfOffset >= eotSize) {\n return null\n }\n\n // 提取 TTF 数据\n const ttfBytes = bytes.slice(ttfOffset, eotSize)\n\n // 验证 TTF 魔数\n if (ttfBytes.length >= 4) {\n const ttfMagic = (ttfBytes[0] << 24) | (ttfBytes[1] << 16) | (ttfBytes[2] << 8) | ttfBytes[3]\n if (ttfMagic !== 0x00010000 && ttfMagic !== 0x4f54544f) {\n return null\n }\n }\n\n return ttfBytes\n }\n catch (e) {\n return null\n }\n}\n\n/**\n * 从 JSZip 中读取字体文件,返回 Blob URL\n * 支持的格式:\n * - .fntdata / .eot - EOT 格式(PowerPoint 嵌入字体),会转换为 TTF\n * - 其他格式不处理\n */\nexport async function getFontData(zip, fontPath) {\n const fontFilename = fontPath.split('/').pop()\n\n try {\n const fontFile = zip.file(fontPath)\n if (!fontFile) return ''\n\n // 只处理 .fntdata 和 .eot 格式\n if (!fontFilename.toLowerCase().endsWith('.fntdata') && !fontFilename.toLowerCase().endsWith('.eot')) {\n return ''\n }\n\n const buffer = await fontFile.async('arraybuffer')\n\n // 将 EOT 转换为 TTF\n const ttfBytes = convertEOTtoTTF(buffer)\n if (!ttfBytes) {\n return ''\n }\n\n const mimeType = 'font/ttf'\n const blobObj = new Blob([ttfBytes], { type: mimeType })\n return URL.createObjectURL(blobObj)\n }\n catch (e) {\n return ''\n }\n}\n\nconst SYSTEM_FONT_FALLBACK_MAP = {\n // ========== 中文字体 ==========\n // 微软字体\n 微软雅黑: 'Microsoft YaHei, PingFang SC, Noto Sans CJK SC, sans-serif',\n 'Microsoft YaHei': 'Microsoft YaHei, PingFang SC, Noto Sans CJK SC, sans-serif',\n 'Microsoft YaHei UI': 'Microsoft YaHei UI, Microsoft YaHei, PingFang SC, sans-serif',\n '微软雅黑 UI': 'Microsoft YaHei UI, Microsoft YaHei, PingFang SC, sans-serif',\n 宋体: 'SimSun, STSong, serif',\n SimSun: 'SimSun, STSong, serif',\n 新宋体: 'NSimSun, SimSun, STSong, serif',\n NSimSun: 'NSimSun, SimSun, serif',\n 黑体: 'SimHei, STHeiti, Heiti SC, sans-serif',\n SimHei: 'SimHei, STHeiti, sans-serif',\n 仿宋: 'FangSong, STFangSong, serif',\n FangSong: 'FangSong, STFangSong, serif',\n 楷体: 'KaiTi, STKaiti, serif',\n KaiTi: 'KaiTi, STKaiti, serif',\n 仿宋_GB2312: 'FangSong_GB2312, FangSong, serif',\n 楷体_GB2312: 'KaiTi_GB2312, KaiTi, serif',\n 方正舒体: 'FZShuTi, STSong, serif',\n 方正姚体: 'FZYaoti, STSong, serif',\n 华文细黑: 'STXihei, Microsoft YaHei, sans-serif',\n 华文楷体: 'STKaiti, KaiTi, serif',\n 华文宋体: 'STSong, SimSun, serif',\n STSong: 'STSong, SimSun, serif',\n 华文中宋: 'STZhongsong, SimSun, serif',\n 华文仿宋: 'STFangSong, FangSong, serif',\n 华文彩云: 'STCaiyun, STSong, serif',\n 华文琥珀: 'STHupo, STSong, serif',\n 华文隶书: 'STLiti, serif',\n 华文行楷: 'STXingkai, serif',\n 华文新魏: 'STXinwei, serif',\n STHeiti: 'STHeiti, SimHei, sans-serif',\n 苹方: 'PingFang SC, Helvetica Neue, sans-serif',\n 'PingFang SC': 'PingFang SC, Helvetica Neue, sans-serif',\n 'PingFang TC': 'PingFang TC, PingFang SC, sans-serif',\n 'PingFang HK': 'PingFang HK, PingFang SC, sans-serif',\n 冬青黑体: 'Hiragino Sans GB, Microsoft YaHei, sans-serif',\n 'Hiragino Sans GB': 'Hiragino Sans GB, Microsoft YaHei, sans-serif',\n 幼圆: 'YouYuan, SimSun, sans-serif',\n YouYuan: 'YouYuan, SimSun, sans-serif',\n 隶书: 'LiSu, STLiti, serif',\n LiSu: 'LiSu, STLiti, serif',\n // 思源字体\n 'Noto Sans CJK SC': 'Noto Sans CJK SC, Microsoft YaHei, sans-serif',\n 'Noto Serif CJK SC': 'Noto Serif CJK SC, SimSun, serif',\n 'Source Han Sans CN': 'Source Han Sans CN, Microsoft YaHei, sans-serif',\n 'Source Han Serif CN': 'Source Han Serif CN, SimSun, serif',\n\n // ========== 日韩字体 ==========\n Meiryo: 'Meiryo, Microsoft YaHei, sans-serif',\n 'Meiryo UI': 'Meiryo UI, Meiryo, sans-serif',\n 'MS Gothic': 'MS Gothic, monospace',\n 'MS PGothic': 'MS PGothic, sans-serif',\n 'MS Mincho': 'MS Mincho, serif',\n 'Yu Gothic': 'Yu Gothic, Meiryo, sans-serif',\n 'Yu Mincho': 'Yu Mincho, serif',\n 'Malgun Gothic': 'Malgun Gothic, Apple SD Gothic Neo, sans-serif',\n Batang: 'Batang, serif',\n Gulim: 'Gulim, sans-serif',\n Dotum: 'Dotum, sans-serif',\n\n // ========== Office / Windows 内置英文字体 ==========\n Calibri: 'Calibri, Carlito, Helvetica Neue, Arial, sans-serif',\n Cambria: 'Cambria, Georgia, serif',\n 'Cambria Math': 'Cambria Math, Cambria, Georgia, serif',\n Candara: 'Candara, Optima, sans-serif',\n Consolas: 'Consolas, Menlo, monospace',\n Constantia: 'Constantia, Palatino, serif',\n Corbel: 'Corbel, Skia, sans-serif',\n 'Franklin Gothic Medium': 'Franklin Gothic Medium, Arial Narrow, sans-serif',\n 'Gill Sans MT': 'Gill Sans MT, Gill Sans, sans-serif',\n 'Gill Sans': 'Gill Sans, Optima, sans-serif',\n Verdana: 'Verdana, Geneva, Tahoma, sans-serif',\n Tahoma: 'Tahoma, Verdana, sans-serif',\n Arial: 'Arial, Helvetica, sans-serif',\n 'Arial Black': 'Arial Black, Gadget, sans-serif',\n 'Arial Narrow': 'Arial Narrow, Arial, sans-serif',\n 'Arial Unicode MS': 'Arial Unicode MS, Arial, sans-serif',\n 'Times New Roman': 'Times New Roman, Times, serif',\n 'Courier New': 'Courier New, Courier, monospace',\n Georgia: 'Georgia, Times New Roman, serif',\n 'Palatino Linotype': 'Palatino Linotype, Palatino, Book Antiqua, serif',\n 'Book Antiqua': 'Book Antiqua, Palatino, serif',\n Garamond: 'Garamond, Hoefler Text, serif',\n Century: 'Century, Times New Roman, serif',\n 'Century Gothic': 'Century Gothic, Futura, sans-serif',\n 'Comic Sans MS': 'Comic Sans MS, Chalkboard, cursive',\n Impact: 'Impact, Charcoal, sans-serif',\n 'Lucida Console': 'Lucida Console, Monaco, monospace',\n 'Lucida Sans Unicode': 'Lucida Sans Unicode, Lucida Grande, sans-serif',\n Symbol: 'Symbol, serif',\n Wingdings: 'Wingdings, Zapf Dingbats, sans-serif',\n 'Wingdings 2': 'Wingdings 2, sans-serif',\n 'Wingdings 3': 'Wingdings 3, sans-serif',\n Webdings: 'Webdings, sans-serif',\n 'Segoe UI': 'Segoe UI, Helvetica Neue, Arial, sans-serif',\n 'Segoe UI Light': 'Segoe UI Light, Segoe UI, sans-serif',\n 'Segoe UI Semibold': 'Segoe UI Semibold, Segoe UI, sans-serif',\n 'Segoe UI Black': 'Segoe UI Black, Segoe UI, sans-serif',\n 'Segoe Print': 'Segoe Print, Comic Sans MS, cursive',\n 'Segoe Script': 'Segoe Script, Comic Sans MS, cursive',\n 'Trebuchet MS': 'Trebuchet MS, Helvetica, sans-serif',\n Palatino: 'Palatino, Palatino Linotype, serif',\n Helvetica: 'Helvetica, Arial, sans-serif',\n 'Helvetica Neue': 'Helvetica Neue, Helvetica, Arial, sans-serif',\n Futura: 'Futura, Century Gothic, sans-serif',\n Optima: 'Optima, Segoe UI, sans-serif',\n Monaco: 'Monaco, Consolas, monospace',\n Menlo: 'Menlo, Consolas, monospace',\n Roboto: 'Roboto, Helvetica Neue, Arial, sans-serif',\n 'Open Sans': 'Open Sans, Helvetica Neue, Arial, sans-serif',\n Lato: 'Lato, Helvetica Neue, Arial, sans-serif',\n Oswald: 'Oswald, Impact, sans-serif',\n Raleway: 'Raleway, Helvetica Neue, Arial, sans-serif',\n Nunito: 'Nunito, Helvetica Neue, Arial, sans-serif',\n\n // ========== macOS 专有字体 ==========\n 'Hiragino Mincho Pro': 'Hiragino Mincho Pro, STSong, serif',\n 'Hiragino Kaku Gothic Pro': 'Hiragino Kaku Gothic Pro, Microsoft YaHei, sans-serif',\n 'Hiragino Kaku Gothic ProN': 'Hiragino Kaku Gothic ProN, sans-serif',\n 'Apple LiGothic': 'Apple LiGothic, Microsoft YaHei, sans-serif',\n 'Apple LiSung': 'Apple LiSung, STSong, serif',\n 'LiHei Pro': 'LiHei Pro, Microsoft YaHei, sans-serif',\n 'LiSong Pro': 'LiSong Pro, STSong, serif',\n}\n\n/**\n * 根据字体名称获取浏览器可用的回退字体栈\n * @param {string} fontName - 原始字体名\n * @returns {string} 完整的 font-family 回退字符串\n */\nexport function getFontFallback(fontName) {\n if (!fontName) return ''\n\n // 精确匹配\n if (SYSTEM_FONT_FALLBACK_MAP[fontName]) {\n return SYSTEM_FONT_FALLBACK_MAP[fontName]\n }\n\n // 大小写不敏感匹配\n const lowerName = fontName.toLowerCase()\n for (const [key, value] of Object.entries(SYSTEM_FONT_FALLBACK_MAP)) {\n if (key.toLowerCase() === lowerName) return value\n }\n\n // 部分匹配(如 \"Calibri Light\" → Calibri 回退)\n for (const [key, value] of Object.entries(SYSTEM_FONT_FALLBACK_MAP)) {\n if (lowerName.startsWith(key.toLowerCase())) {\n // 在回退栈前面插入原始字体名\n return `${fontName}, ${value}`\n }\n }\n\n // 无法匹配时,根据字体名猜测类型\n return guessGenericFamily(fontName)\n}\n\n/**\n * 根据字体名猜测通用字体族作为最终回退\n */\nfunction guessGenericFamily(fontName) {\n const name = fontName.toLowerCase()\n\n // 等宽/代码字体\n if (\n name.includes('mono') ||\n name.includes('code') ||\n name.includes('console') ||\n name.includes('courier') ||\n name.includes('terminal') ||\n name.includes('fixed')\n ) {\n return `${fontName}, monospace`\n }\n\n // 衬线字体\n if (\n name.includes('serif') ||\n name.includes('roman') ||\n name.includes('mincho') ||\n name.includes('song') ||\n name.includes('sung') ||\n name.includes('ming') ||\n name.includes('times') ||\n name.includes('georgia')\n ) {\n return `${fontName}, serif`\n }\n\n // 手写/草书\n if (\n name.includes('script') ||\n name.includes('cursive') ||\n name.includes('hand') ||\n name.includes('writing') ||\n name.includes('kai') ||\n name.includes('shu')\n ) {\n return `${fontName}, cursive`\n }\n\n // 默认 sans-serif\n return `${fontName}, sans-serif`\n}\n","import { getShapeFill, getSolidFill } from './fill'\nimport { getTextByPathList } from './utils'\nimport { getBorder } from './border'\n\nfunction getTableTextColor(tcTxStyle, warpObj) {\n if (!tcTxStyle) return undefined\n\n return getSolidFill(tcTxStyle['a:solidFill'] || tcTxStyle, undefined, undefined, warpObj)\n}\n\nexport function getTableBorders(node, warpObj) {\n const borders = {}\n if (node['a:bottom']) {\n const obj = {\n 'p:spPr': {\n 'a:ln': node['a:bottom']['a:ln']\n }\n }\n const border = getBorder(obj, undefined, warpObj)\n borders.bottom = border\n }\n if (node['a:top']) {\n const obj = {\n 'p:spPr': {\n 'a:ln': node['a:top']['a:ln']\n }\n }\n const border = getBorder(obj, undefined, warpObj)\n borders.top = border\n }\n if (node['a:right']) {\n const obj = {\n 'p:spPr': {\n 'a:ln': node['a:right']['a:ln']\n }\n }\n const border = getBorder(obj, undefined, warpObj)\n borders.right = border\n }\n if (node['a:left']) {\n const obj = {\n 'p:spPr': {\n 'a:ln': node['a:left']['a:ln']\n }\n }\n const border = getBorder(obj, undefined, warpObj)\n borders.left = border\n }\n return borders\n}\n\nexport async function getTableCellParams(tcNode, thisTblStyle, cellSource, warpObj) {\n const rowSpan = getTextByPathList(tcNode, ['attrs', 'rowSpan'])\n const colSpan = getTextByPathList(tcNode, ['attrs', 'gridSpan'])\n const vMerge = getTextByPathList(tcNode, ['attrs', 'vMerge'])\n const hMerge = getTextByPathList(tcNode, ['attrs', 'hMerge'])\n const anchor = getTextByPathList(tcNode, ['a:tcPr', 'attrs', 'anchor'])\n let fillColor\n let fontColor\n let fontBold\n\n const getCelFill = getTextByPathList(tcNode, ['a:tcPr'])\n if (getCelFill) {\n const cellObj = { 'p:spPr': getCelFill }\n const fill = await getShapeFill(cellObj, warpObj, 'slide')\n\n if (fill && fill.type === 'color' && fill.value) {\n fillColor = fill.value \n }\n }\n if (!fillColor) {\n let bgFillschemeClr\n if (cellSource) bgFillschemeClr = getTextByPathList(thisTblStyle, [cellSource, 'a:tcStyle', 'a:fill', 'a:solidFill'])\n if (bgFillschemeClr) {\n fillColor = getSolidFill(bgFillschemeClr, undefined, undefined, warpObj)\n }\n }\n\n let rowTxtStyl\n if (cellSource) rowTxtStyl = getTextByPathList(thisTblStyle, [cellSource, 'a:tcTxStyle'])\n if (rowTxtStyl) {\n fontColor = getTableTextColor(rowTxtStyl, warpObj)\n if (getTextByPathList(rowTxtStyl, ['attrs', 'b']) === 'on') fontBold = true\n }\n\n let lin_bottm = getTextByPathList(tcNode, ['a:tcPr', 'a:lnB'])\n if (!lin_bottm) {\n if (cellSource) lin_bottm = getTextByPathList(thisTblStyle && thisTblStyle[cellSource], ['a:tcStyle', 'a:tcBdr', 'a:bottom', 'a:ln'])\n if (!lin_bottm) lin_bottm = getTextByPathList(thisTblStyle, ['a:wholeTbl', 'a:tcStyle', 'a:tcBdr', 'a:bottom', 'a:ln'])\n }\n let lin_top = getTextByPathList(tcNode, ['a:tcPr', 'a:lnT'])\n if (!lin_top) {\n if (cellSource) lin_top = getTextByPathList(thisTblStyle && thisTblStyle[cellSource], ['a:tcStyle', 'a:tcBdr', 'a:top', 'a:ln'])\n if (!lin_top) lin_top = getTextByPathList(thisTblStyle, ['a:wholeTbl', 'a:tcStyle', 'a:tcBdr', 'a:top', 'a:ln'])\n }\n let lin_left = getTextByPathList(tcNode, ['a:tcPr', 'a:lnL'])\n if (!lin_left) {\n if (cellSource) lin_left = getTextByPathList(thisTblStyle && thisTblStyle[cellSource], ['a:tcStyle', 'a:tcBdr', 'a:left', 'a:ln'])\n if (!lin_left) lin_left = getTextByPathList(thisTblStyle, ['a:wholeTbl', 'a:tcStyle', 'a:tcBdr', 'a:left', 'a:ln'])\n }\n let lin_right = getTextByPathList(tcNode, ['a:tcPr', 'a:lnR'])\n if (!lin_right) {\n if (cellSource) lin_right = getTextByPathList(thisTblStyle && thisTblStyle[cellSource], ['a:tcStyle', 'a:tcBdr', 'a:right', 'a:ln'])\n if (!lin_right) lin_right = getTextByPathList(thisTblStyle, ['a:wholeTbl', 'a:tcStyle', 'a:tcBdr', 'a:right', 'a:ln'])\n }\n\n const borders = {}\n if (lin_bottm) borders.bottom = getBorder(lin_bottm, undefined, warpObj)\n if (lin_top) borders.top = getBorder(lin_top, undefined, warpObj)\n if (lin_left) borders.left = getBorder(lin_left, undefined, warpObj)\n if (lin_right) borders.right = getBorder(lin_right, undefined, warpObj)\n\n return {\n fillColor,\n fontColor,\n fontBold,\n borders,\n vAlign: (anchor === 'ctr') ? 'mid' : ((anchor === 'b') ? 'down' : 'up'),\n rowSpan: rowSpan ? +rowSpan : undefined,\n colSpan: colSpan ? +colSpan : undefined,\n vMerge: vMerge ? +vMerge : undefined,\n hMerge: hMerge ? +hMerge : undefined,\n }\n}\n\nexport function getTableRowParams(trNodes, i, tblStylAttrObj, thisTblStyle, warpObj) {\n let fillColor\n let fontColor\n let fontBold\n\n if (thisTblStyle && thisTblStyle['a:wholeTbl']) {\n const bgFillschemeClr = getTextByPathList(thisTblStyle, ['a:wholeTbl', 'a:tcStyle', 'a:fill', 'a:solidFill'])\n if (bgFillschemeClr) {\n const local_fillColor = getSolidFill(bgFillschemeClr, undefined, undefined, warpObj)\n if (local_fillColor) fillColor = local_fillColor\n }\n const rowTxtStyl = getTextByPathList(thisTblStyle, ['a:wholeTbl', 'a:tcTxStyle'])\n if (rowTxtStyl) {\n const local_fontColor = getTableTextColor(rowTxtStyl, warpObj)\n if (local_fontColor) fontColor = local_fontColor\n if (getTextByPathList(rowTxtStyl, ['attrs', 'b']) === 'on') fontBold = true\n }\n }\n if (i === 0 && tblStylAttrObj['isFrstRowAttr'] === 1 && thisTblStyle) {\n const bgFillschemeClr = getTextByPathList(thisTblStyle, ['a:firstRow', 'a:tcStyle', 'a:fill', 'a:solidFill'])\n if (bgFillschemeClr) {\n const local_fillColor = getSolidFill(bgFillschemeClr, undefined, undefined, warpObj)\n if (local_fillColor) fillColor = local_fillColor\n }\n const rowTxtStyl = getTextByPathList(thisTblStyle, ['a:firstRow', 'a:tcTxStyle'])\n if (rowTxtStyl) {\n const local_fontColor = getTableTextColor(rowTxtStyl, warpObj)\n if (local_fontColor) fontColor = local_fontColor\n if (getTextByPathList(rowTxtStyl, ['attrs', 'b']) === 'on') fontBold = true\n }\n }\n else if (i > 0 && tblStylAttrObj['isBandRowAttr'] === 1 && thisTblStyle) {\n fillColor = ''\n if ((i % 2) === 0 && thisTblStyle['a:band2H']) {\n const bgFillschemeClr = getTextByPathList(thisTblStyle, ['a:band2H', 'a:tcStyle', 'a:fill', 'a:solidFill'])\n if (bgFillschemeClr) {\n const local_fillColor = getSolidFill(bgFillschemeClr, undefined, undefined, warpObj)\n if (local_fillColor) fillColor = local_fillColor\n }\n const rowTxtStyl = getTextByPathList(thisTblStyle, ['a:band2H', 'a:tcTxStyle'])\n if (rowTxtStyl) {\n const local_fontColor = getTableTextColor(rowTxtStyl, warpObj)\n if (local_fontColor) fontColor = local_fontColor\n }\n if (getTextByPathList(rowTxtStyl, ['attrs', 'b']) === 'on') fontBold = true\n }\n if ((i % 2) !== 0 && thisTblStyle['a:band1H']) {\n const bgFillschemeClr = getTextByPathList(thisTblStyle, ['a:band1H', 'a:tcStyle', 'a:fill', 'a:solidFill'])\n if (bgFillschemeClr) {\n const local_fillColor = getSolidFill(bgFillschemeClr, undefined, undefined, warpObj)\n if (local_fillColor) fillColor = local_fillColor\n }\n const rowTxtStyl = getTextByPathList(thisTblStyle, ['a:band1H', 'a:tcTxStyle'])\n if (rowTxtStyl) {\n const local_fontColor = getTableTextColor(rowTxtStyl, warpObj)\n if (local_fontColor) fontColor = local_fontColor\n if (getTextByPathList(rowTxtStyl, ['attrs', 'b']) === 'on') fontBold = true\n }\n }\n }\n if (i === (trNodes.length - 1) && tblStylAttrObj['isLstRowAttr'] === 1 && thisTblStyle) {\n const bgFillschemeClr = getTextByPathList(thisTblStyle, ['a:lastRow', 'a:tcStyle', 'a:fill', 'a:solidFill'])\n if (bgFillschemeClr) {\n const local_fillColor = getSolidFill(bgFillschemeClr, undefined, undefined, warpObj)\n if (local_fillColor) {\n fillColor = local_fillColor\n }\n }\n const rowTxtStyl = getTextByPathList(thisTblStyle, ['a:lastRow', 'a:tcTxStyle'])\n if (rowTxtStyl) {\n const local_fontColor = getTableTextColor(rowTxtStyl, warpObj)\n if (local_fontColor) fontColor = local_fontColor\n if (getTextByPathList(rowTxtStyl, ['attrs', 'b']) === 'on') fontBold = true\n }\n }\n\n return {\n fillColor,\n fontColor,\n fontBold,\n }\n}\n","/* eslint-disable max-lines */\n\nimport { RATIO_EMUs_Points } from './constants'\nimport { getTextByPathList } from './utils'\n\nfunction shapePie(H, w, adj1, adj2, isClose) {\n const pieVal = parseFloat(adj2)\n const piAngle = parseFloat(adj1)\n const size = parseFloat(H)\n const radiusY = size / 2\n const radiusX = w / 2\n const centerX = radiusX\n const centerY = radiusY\n\n let value = pieVal - piAngle\n if (value < 0) value = 360 + value\n value = Math.min(Math.max(value, 0), 360)\n\n const startRadians = piAngle * Math.PI / 180\n const endRadians = (piAngle + value) * Math.PI / 180\n const startX = centerX + Math.cos(startRadians) * radiusX\n const startY = centerY + Math.sin(startRadians) * radiusY\n const endX = centerX + Math.cos(endRadians) * radiusX\n const endY = centerY + Math.sin(endRadians) * radiusY\n\n let longArc, d\n if (isClose) {\n longArc = (value <= 180) ? 0 : 1\n d = `M${centerX},${centerY} L${startX},${startY} A${radiusX},${radiusY} 0 ${longArc},1 ${endX},${endY} z`\n } \n else {\n longArc = (value <= 180) ? 0 : 1\n d = `M${startX},${startY} A${radiusX},${radiusY} 0 ${longArc},1 ${endX},${endY}`\n }\n\n return d\n}\nfunction shapeGear(h, points) {\n const innerRadius = h\n const outerRadius = 1.5 * innerRadius\n const cx = outerRadius\n const cy = outerRadius\n const notches = points\n const radiusO = outerRadius\n const radiusI = innerRadius\n const taperO = 50\n const taperI = 35\n const pi2 = 2 * Math.PI\n const angle = pi2 / (notches * 2)\n const taperAI = angle * taperI * 0.005\n const taperAO = angle * taperO * 0.005\n\n let a = angle\n let toggle = false\n\n let d = ' M' + (cx + radiusO * Math.cos(taperAO)) + ' ' + (cy + radiusO * Math.sin(taperAO))\n\n for (; a <= pi2 + angle; a += angle) {\n if (toggle) {\n d += ' L' + (cx + radiusI * Math.cos(a - taperAI)) + ',' + (cy + radiusI * Math.sin(a - taperAI))\n d += ' L' + (cx + radiusO * Math.cos(a + taperAO)) + ',' + (cy + radiusO * Math.sin(a + taperAO))\n } \n else {\n d += ' L' + (cx + radiusO * Math.cos(a - taperAO)) + ',' + (cy + radiusO * Math.sin(a - taperAO))\n d += ' L' + (cx + radiusI * Math.cos(a + taperAI)) + ',' + (cy + radiusI * Math.sin(a + taperAI))\n }\n toggle = !toggle\n }\n d += ' '\n return d\n}\n\nfunction shapeArc(cX, cY, rX, rY, stAng, endAng, isClose) {\n let dData = ''\n const increment = (endAng >= stAng) ? 1 : -1\n let angle = stAng\n\n const condition = (a) => (increment > 0 ? a <= endAng : a >= endAng)\n\n while (condition(angle)) {\n const radians = angle * (Math.PI / 180)\n const x = cX + Math.cos(radians) * rX\n const y = cY + Math.sin(radians) * rY\n if (angle === stAng) {\n dData = ` M${x} ${y}`\n }\n dData += ` L${x} ${y}`\n angle += increment\n }\n\n if (isClose) {\n dData += ' z'\n }\n return dData\n}\n\nfunction shapeSnipRoundRect(w, h, adj1, adj2, shapeType, adjType) {\n let adjA, adjB, adjC, adjD\n\n switch (adjType) {\n case 'cornr1':\n adjA = 0\n adjB = 0\n adjC = 0\n adjD = adj1\n break\n case 'cornr2':\n adjA = adj1\n adjB = adj2\n adjC = adj2\n adjD = adj1\n break\n case 'cornrAll':\n adjA = adj1\n adjB = adj1\n adjC = adj1\n adjD = adj1\n break\n case 'diag':\n adjA = adj1\n adjB = adj2\n adjC = adj1\n adjD = adj2\n break\n case 'cornrTL':\n adjA = adj1\n adjB = 0\n adjC = 0\n adjD = 0\n break\n default:\n adjA = adjB = adjC = adjD = 0\n }\n\n // A rounded or snipped corner is a single distance applied equally to both axes, derived from\n // the shorter side: OOXML defines it as `ss * adj / 100000` with `ss = min(w, h)`. Scaling it\n // by w/2 across and h/2 down instead -- which agrees only when the shape is square -- turns a\n // wide, flat roundRect into a lens, because at maximum adj the two corner curves meet in the\n // middle of the shape rather than a corner radius in from each end. `adjA`..`adjD` arrive here\n // already divided by 50000, so half the shorter side is the full-radius case.\n const rA = adjA * (Math.min(w, h) / 2)\n const rB = adjB * (Math.min(w, h) / 2)\n const rC = adjC * (Math.min(w, h) / 2)\n const rD = adjD * (Math.min(w, h) / 2)\n\n if (shapeType === 'round') {\n return `M0,${h - rB} Q0,${h} ${rB},${h} L${w - rC},${h} Q${w},${h} ${w},${h - rC} L${w},${rD} Q${w},0 ${w - rD},0 L${rA},0 Q0,0 0,${rA} z`\n } \n else if (shapeType === 'snip') {\n return `M0,${rA} L0,${h - rB} L${rB},${h} L${w - rC},${h} L${w},${h - rC} L${w},${rD} L${w - rD},0 L${rA},0 z`\n }\n return ''\n}\n\nexport function getShapePath(shapType, w, h, node) {\n let pathData = ''\n\n switch (shapType) {\n case 'rect':\n case 'actionButtonBlank':\n pathData = `M 0 0 L ${w} 0 L ${w} ${h} L 0 ${h} Z`\n break\n case 'flowChartPredefinedProcess':\n pathData = `M 0 0 L ${w} 0 L ${w} ${h} L 0 ${h} Z M ${w * (1 / 8)} 0 L ${w * (1 / 8)} ${h} M ${w * (7 / 8)} 0 L ${w * (7 / 8)} ${h}`\n break\n case 'flowChartInternalStorage':\n pathData = `M 0 0 L ${w} 0 L ${w} ${h} L 0 ${h} Z M ${w * (1 / 8)} 0 L ${w * (1 / 8)} ${h} M 0 ${h * (1 / 8)} L ${w} ${h * (1 / 8)}`\n break\n case 'flowChartCollate':\n pathData = `M 0,0 L ${w},0 L 0,${h} L ${w},${h} z`\n break\n case 'flowChartDocument':\n {\n const x1 = w * 10800 / 21600\n const y1 = h * 17322 / 21600\n const y2 = h * 20172 / 21600\n const y3 = h * 23922 / 21600\n pathData = `M 0,0 L ${w},0 L ${w},${y1} C ${x1},${y1} ${x1},${y3} 0,${y2} z`\n }\n break\n case 'flowChartMultidocument':\n {\n const y1 = h * 18022 / 21600\n const y2 = h * 3675 / 21600\n const y3 = h * 23542 / 21600\n const y4 = h * 1815 / 21600\n const y5 = h * 16252 / 21600\n const y6 = h * 16352 / 21600\n const y7 = h * 14392 / 21600\n const y8 = h * 20782 / 21600\n const y9 = h * 14467 / 21600\n const x1 = w * 1532 / 21600\n const x2 = w * 20000 / 21600\n const x3 = w * 9298 / 21600\n const x4 = w * 19298 / 21600\n const x5 = w * 18595 / 21600\n const x6 = w * 2972 / 21600\n const x7 = w * 20800 / 21600\n pathData = `M 0,${y2} L ${x5},${y2} L ${x5},${y1} C ${x3},${y1} ${x3},${y3} 0,${y8} z M ${x1},${y2} L ${x1},${y4} L ${x2},${y4} L ${x2},${y5} C ${x4},${y5} ${x5},${y6} ${x5},${y6} M ${x6},${y4} L ${x6},0 L ${w},0 L ${w},${y7} C ${x7},${y7} ${x2},${y9} ${x2},${y9}`\n }\n break\n case 'actionButtonBackPrevious':\n {\n const hc = w / 2,\n vc = h / 2,\n ss = Math.min(w, h)\n const dx2 = ss * 3 / 8\n const g9 = vc - dx2\n const g10 = vc + dx2\n const g11 = hc - dx2\n const g12 = hc + dx2\n pathData = `M 0,0 L ${w},0 L ${w},${h} L 0,${h} z M ${g11},${vc} L ${g12},${g9} L ${g12},${g10} z`\n }\n break\n case 'actionButtonBeginning':\n {\n const hc = w / 2,\n vc = h / 2,\n ss = Math.min(w, h)\n const dx2 = ss * 3 / 8\n const g9 = vc - dx2\n const g10 = vc + dx2\n const g11 = hc - dx2\n const g12 = hc + dx2\n const g13 = ss * 3 / 4\n const g14 = g13 / 8\n const g15 = g13 / 4\n const g16 = g11 + g14\n const g17 = g11 + g15\n pathData = `M 0,0 L ${w},0 L ${w},${h} L 0,${h} z M ${g17},${vc} L ${g12},${g9} L ${g12},${g10} z M ${g16},${g9} L ${g11},${g9} L ${g11},${g10} L ${g16},${g10} z`\n }\n break\n case 'actionButtonDocument':\n {\n const hc = w / 2,\n vc = h / 2,\n ss = Math.min(w, h)\n const dx2 = ss * 3 / 8\n const g9 = vc - dx2\n const g10 = vc + dx2\n const dx1 = ss * 9 / 32\n const g11 = hc - dx1\n const g12 = hc + dx1\n const g13 = ss * 3 / 16\n const g14 = g12 - g13\n const g15 = g9 + g13\n pathData = `M 0,0 L ${w},0 L ${w},${h} L 0,${h} z M ${g11},${g9} L ${g14},${g9} L ${g12},${g15} L ${g12},${g10} L ${g11},${g10} z M ${g14},${g9} L ${g14},${g15} L ${g12},${g15} z`\n }\n break\n case 'actionButtonEnd':\n {\n const hc = w / 2,\n vc = h / 2,\n ss = Math.min(w, h)\n const dx2 = ss * 3 / 8\n const g9 = vc - dx2\n const g10 = vc + dx2\n const g11 = hc - dx2\n const g12 = hc + dx2\n const g13 = ss * 3 / 4\n const g14 = g13 * 3 / 4\n const g15 = g13 * 7 / 8\n const g16 = g11 + g14\n const g17 = g11 + g15\n pathData = `M 0,${h} L ${w},${h} L ${w},0 L 0,0 z M ${g17},${g9} L ${g12},${g9} L ${g12},${g10} L ${g17},${g10} z M ${g16},${vc} L ${g11},${g9} L ${g11},${g10} z`\n }\n break\n case 'actionButtonForwardNext':\n {\n const hc = w / 2,\n vc = h / 2,\n ss = Math.min(w, h)\n const dx2 = ss * 3 / 8\n const g9 = vc - dx2\n const g10 = vc + dx2\n const g11 = hc - dx2\n const g12 = hc + dx2\n pathData = `M 0,${h} L ${w},${h} L ${w},0 L 0,0 z M ${g12},${vc} L ${g11},${g9} L ${g11},${g10} z`\n }\n break\n case 'actionButtonHelp':\n {\n const hc = w / 2,\n vc = h / 2,\n ss = Math.min(w, h)\n const dx2 = ss * 3 / 8\n const g9 = vc - dx2\n const g11 = hc - dx2\n const g13 = ss * 3 / 4\n const g14 = g13 / 7\n const g15 = g13 * 3 / 14\n const g16 = g13 * 2 / 7\n const g19 = g13 * 3 / 7\n const g20 = g13 * 4 / 7\n const g21 = g13 * 17 / 28\n const g23 = g13 * 21 / 28\n const g24 = g13 * 11 / 14\n const g27 = g9 + g16\n const g29 = g9 + g21\n const g30 = g9 + g23\n const g31 = g9 + g24\n const g33 = g11 + g15\n const g36 = g11 + g19\n const g37 = g11 + g20\n const g41 = g13 / 14\n const g42 = g13 * 3 / 28\n const cX1 = g33 + g16\n const cX2 = g36 + g14\n const cY3 = g31 + g42\n const cX4 = (g37 + g36 + g16) / 2\n pathData = `M 0,0 L ${w},0 L ${w},${h} L 0,${h} z M ${g33},${g27} ${shapeArc(cX1, g27, g16, g16, 180, 360, false).replace('M', 'L')} ${shapeArc(cX4, g27, g14, g15, 0, 90, false).replace('M', 'L')} ${shapeArc(cX4, g29, g41, g42, 270, 180, false).replace('M', 'L')} L ${g37},${g30} L ${g36},${g30} L ${g36},${g29} ${shapeArc(cX2, g29, g14, g15, 180, 270, false).replace('M', 'L')} ${shapeArc(g37, g27, g41, g42, 90, 0, false).replace('M', 'L')} ${shapeArc(cX1, g27, g14, g14, 0, -180, false).replace('M', 'L')} z M ${hc},${g31} ${shapeArc(hc, cY3, g42, g42, 270, 630, false).replace('M', 'L')} z`\n }\n break\n case 'actionButtonHome':\n {\n const hc = w / 2,\n vc = h / 2,\n ss = Math.min(w, h)\n const dx2 = ss * 3 / 8\n const g9 = vc - dx2\n const g10 = vc + dx2\n const g11 = hc - dx2\n const g12 = hc + dx2\n const g13 = ss * 3 / 4\n const g14 = g13 / 16\n const g15 = g13 / 8\n const g16 = g13 * 3 / 16\n const g17 = g13 * 5 / 16\n const g18 = g13 * 7 / 16\n const g19 = g13 * 9 / 16\n const g20 = g13 * 11 / 16\n const g21 = g13 * 3 / 4\n const g22 = g13 * 13 / 16\n const g23 = g13 * 7 / 8\n const g24 = g9 + g14\n const g25 = g9 + g16\n const g26 = g9 + g17\n const g27 = g9 + g21\n const g28 = g11 + g15\n const g29 = g11 + g18\n const g30 = g11 + g19\n const g31 = g11 + g20\n const g32 = g11 + g22\n const g33 = g11 + g23\n pathData = `M 0,0 L ${w},0 L ${w},${h} L 0,${h} z M ${hc},${g9} L ${g11},${vc} L ${g28},${vc} L ${g28},${g10} L ${g33},${g10} L ${g33},${vc} L ${g12},${vc} L ${g32},${g26} L ${g32},${g24} L ${g31},${g24} L ${g31},${g25} z M ${g29},${g27} L ${g30},${g27} L ${g30},${g10} L ${g29},${g10} z`\n }\n break\n case 'actionButtonInformation':\n {\n const hc = w / 2,\n vc = h / 2,\n ss = Math.min(w, h)\n const dx2 = ss * 3 / 8\n const g9 = vc - dx2\n const g11 = hc - dx2\n const g13 = ss * 3 / 4\n const g14 = g13 / 32\n const g17 = g13 * 5 / 16\n const g18 = g13 * 3 / 8\n const g19 = g13 * 13 / 32\n const g20 = g13 * 19 / 32\n const g22 = g13 * 11 / 16\n const g23 = g13 * 13 / 16\n const g24 = g13 * 7 / 8\n const g25 = g9 + g14\n const g28 = g9 + g17\n const g29 = g9 + g18\n const g30 = g9 + g23\n const g31 = g9 + g24\n const g32 = g11 + g17\n const g34 = g11 + g19\n const g35 = g11 + g20\n const g37 = g11 + g22\n const g38 = g13 * 3 / 32\n const cY1 = g9 + dx2\n const cY2 = g25 + g38\n pathData = `M 0,0 L ${w},0 L ${w},${h} L 0,${h} z M ${hc},${g9} ${shapeArc(hc, cY1, dx2, dx2, 270, 630, false).replace('M', 'L')} z M ${hc},${g25} ${shapeArc(hc, cY2, g38, g38, 270, 630, false).replace('M', 'L')} M ${g32},${g28} L ${g35},${g28} L ${g35},${g30} L ${g37},${g30} L ${g37},${g31} L ${g32},${g31} L ${g32},${g30} L ${g34},${g30} L ${g34},${g29} L ${g32},${g29} z`\n }\n break\n case 'actionButtonMovie':\n {\n const hc = w / 2,\n vc = h / 2,\n ss = Math.min(w, h)\n const g11 = hc - (ss * 3 / 8)\n const g9 = vc - (ss * 3 / 8)\n const g12 = hc + (ss * 3 / 8)\n const g13 = ss * 3 / 4\n const g14 = g13 * 1455 / 21600\n const g15 = g13 * 1905 / 21600\n const g16 = g13 * 2325 / 21600\n const g17 = g13 * 16155 / 21600\n const g18 = g13 * 17010 / 21600\n const g19 = g13 * 19335 / 21600\n const g20 = g13 * 19725 / 21600\n const g21 = g13 * 20595 / 21600\n const g22 = g13 * 5280 / 21600\n const g23 = g13 * 5730 / 21600\n const g24 = g13 * 6630 / 21600\n const g25 = g13 * 7492 / 21600\n const g26 = g13 * 9067 / 21600\n const g27 = g13 * 9555 / 21600\n const g28 = g13 * 13342 / 21600\n const g29 = g13 * 14580 / 21600\n const g30 = g13 * 15592 / 21600\n const g31 = g11 + g14\n const g32 = g11 + g15\n const g33 = g11 + g16\n const g34 = g11 + g17\n const g35 = g11 + g18\n const g36 = g11 + g19\n const g37 = g11 + g20\n const g38 = g11 + g21\n const g39 = g9 + g22\n const g40 = g9 + g23\n const g41 = g9 + g24\n const g42 = g9 + g25\n const g43 = g9 + g26\n const g44 = g9 + g27\n const g45 = g9 + g28\n const g46 = g9 + g29\n const g47 = g9 + g30\n pathData = `M 0,${h} L ${w},${h} L ${w},0 L 0,0 z M ${g11},${g39} L ${g11},${g44} L ${g31},${g44} L ${g32},${g43} L ${g33},${g43} L ${g33},${g47} L ${g35},${g47} L ${g35},${g45} L ${g36},${g45} L ${g38},${g46} L ${g12},${g46} L ${g12},${g41} L ${g38},${g41} L ${g37},${g42} L ${g35},${g42} L ${g35},${g41} L ${g34},${g40} L ${g32},${g40} L ${g31},${g39} z`\n }\n break\n case 'actionButtonReturn':\n {\n const hc = w / 2,\n vc = h / 2,\n ss = Math.min(w, h)\n const dx2 = ss * 3 / 8\n const g9 = vc - dx2\n const g10 = vc + dx2\n const g11 = hc - dx2\n const g12 = hc + dx2\n const g13 = ss * 3 / 4\n const g14 = g13 * 7 / 8\n const g15 = g13 * 3 / 4\n const g16 = g13 * 5 / 8\n const g17 = g13 * 3 / 8\n const g18 = g13 / 4\n const g19 = g9 + g15\n const g20 = g9 + g16\n const g21 = g9 + g18\n const g22 = g11 + g14\n const g23 = g11 + g15\n const g24 = g11 + g16\n const g25 = g11 + g17\n const g26 = g11 + g18\n const g27 = g13 / 8\n const cX1 = g24 - g27\n const cY2 = g19 - g27\n const cX3 = g11 + g17\n const cY4 = g10 - g17\n pathData = `M 0,${h} L ${w},${h} L ${w},0 L 0,0 z M ${g12},${g21} L ${g23},${g9} L ${hc},${g21} L ${g24},${g21} L ${g24},${g20} ${shapeArc(cX1, g20, g27, g27, 0, 90, false).replace('M', 'L')} L ${g25},${g19} ${shapeArc(g25, cY2, g27, g27, 90, 180, false).replace('M', 'L')} L ${g26},${g21} L ${g11},${g21} L ${g11},${g20} ${shapeArc(cX3, g20, g17, g17, 180, 90, false).replace('M', 'L')} L ${hc},${g10} ${shapeArc(hc, cY4, g17, g17, 90, 0, false).replace('M', 'L')} L ${g22},${g21} z`\n }\n break\n case 'actionButtonSound':\n {\n const hc = w / 2,\n vc = h / 2,\n ss = Math.min(w, h)\n const dx2 = ss * 3 / 8\n const g9 = vc - dx2\n const g10 = vc + dx2\n const g11 = hc - dx2\n const g12 = hc + dx2\n const g13 = ss * 3 / 4\n const g14 = g13 / 8\n const g15 = g13 * 5 / 16\n const g16 = g13 * 5 / 8\n const g17 = g13 * 11 / 16\n const g18 = g13 * 3 / 4\n const g19 = g13 * 7 / 8\n const g20 = g9 + g14\n const g21 = g9 + g15\n const g22 = g9 + g17\n const g23 = g9 + g19\n const g24 = g11 + g15\n const g25 = g11 + g16\n const g26 = g11 + g18\n pathData = `M 0,0 L ${w},0 L ${w},${h} L 0,${h} z M ${g11},${g21} L ${g24},${g21} L ${g25},${g9} L ${g25},${g10} L ${g24},${g22} L ${g11},${g22} z M ${g26},${g21} L ${g12},${g20} M ${g26},${vc} L ${g12},${vc} M ${g26},${g22} L ${g12},${g23}`\n }\n break\n case 'irregularSeal1':\n pathData = `M ${w * 10800 / 21600},${h * 5800 / 21600} L ${w * 14522 / 21600},0 L ${w * 14155 / 21600},${h * 5325 / 21600} L ${w * 18380 / 21600},${h * 4457 / 21600} L ${w * 16702 / 21600},${h * 7315 / 21600} L ${w * 21097 / 21600},${h * 8137 / 21600} L ${w * 17607 / 21600},${h * 10475 / 21600} L ${w},${h * 13290 / 21600} L ${w * 16837 / 21600},${h * 12942 / 21600} L ${w * 18145 / 21600},${h * 18095 / 21600} L ${w * 14020 / 21600},${h * 14457 / 21600} L ${w * 13247 / 21600},${h * 19737 / 21600} L ${w * 10532 / 21600},${h * 14935 / 21600} L ${w * 8485 / 21600},${h} L ${w * 7715 / 21600},${h * 15627 / 21600} L ${w * 4762 / 21600},${h * 17617 / 21600} L ${w * 5667 / 21600},${h * 13937 / 21600} L ${w * 135 / 21600},${h * 14587 / 21600} L ${w * 3722 / 21600},${h * 11775 / 21600} L 0,${h * 8615 / 21600} L ${w * 4627 / 21600},${h * 7617 / 21600} L ${w * 370 / 21600},${h * 2295 / 21600} L ${w * 7312 / 21600},${h * 6320 / 21600} L ${w * 8352 / 21600},${h * 2295 / 21600} z`\n break\n case 'irregularSeal2':\n pathData = `M ${w * 11462 / 21600},${h * 4342 / 21600} L ${w * 14790 / 21600},0 L ${w * 14525 / 21600},${h * 5777 / 21600} L ${w * 18007 / 21600},${h * 3172 / 21600} L ${w * 16380 / 21600},${h * 6532 / 21600} L ${w},${h * 6645 / 21600} L ${w * 16985 / 21600},${h * 9402 / 21600} L ${w * 18270 / 21600},${h * 11290 / 21600} L ${w * 16380 / 21600},${h * 12310 / 21600} L ${w * 18877 / 21600},${h * 15632 / 21600} L ${w * 14640 / 21600},${h * 14350 / 21600} L ${w * 14942 / 21600},${h * 17370 / 21600} L ${w * 12180 / 21600},${h * 15935 / 21600} L ${w * 11612 / 21600},${h * 18842 / 21600} L ${w * 9872 / 21600},${h * 17370 / 21600} L ${w * 8700 / 21600},${h * 19712 / 21600} L ${w * 7527 / 21600},${h * 18125 / 21600} L ${w * 4917 / 21600},${h} L ${w * 4805 / 21600},${h * 18240 / 21600} L ${w * 1285 / 21600},${h * 17825 / 21600} L ${w * 3330 / 21600},${h * 15370 / 21600} L 0,${h * 12877 / 21600} L ${w * 3935 / 21600},${h * 11592 / 21600} L ${w * 1172 / 21600},${h * 8270 / 21600} L ${w * 5372 / 21600},${h * 7817 / 21600} L ${w * 4502 / 21600},${h * 3625 / 21600} L ${w * 8550 / 21600},${h * 6382 / 21600} L ${w * 9722 / 21600},${h * 1887 / 21600} z`\n break\n case 'flowChartTerminator':\n {\n const cd2 = 180,\n cd4 = 90,\n c3d4 = 270\n const x1 = w * 3475 / 21600\n const x2 = w * 18125 / 21600\n const y1 = h * 10800 / 21600\n pathData = `M ${x1},0 L ${x2},0 ${shapeArc(x2, h / 2, x1, y1, c3d4, c3d4 + cd2, false).replace('M', 'L')} L ${x1},${h} ${shapeArc(x1, h / 2, x1, y1, cd4, cd4 + cd2, false).replace('M', 'L')} z`\n }\n break\n case 'flowChartPunchedTape':\n {\n const cd2 = 180\n const x1 = w * 5 / 20\n const y1 = h * 2 / 20\n const y2 = h * 18 / 20\n pathData = `M 0,${y1} ${shapeArc(x1, y1, x1, y1, cd2, 0, false).replace('M', 'L')} ${shapeArc(w * (3 / 4), y1, x1, y1, cd2, 360, false).replace('M', 'L')} L ${w},${y2} ${shapeArc(w * (3 / 4), y2, x1, y1, 0, -cd2, false).replace('M', 'L')} ${shapeArc(x1, y2, x1, y1, 0, cd2, false).replace('M', 'L')} z`\n }\n break\n case 'flowChartOnlineStorage':\n {\n const c3d4 = 270,\n cd4 = 90\n const x1 = w * 1 / 6\n const y1 = h * 3 / 6\n pathData = `M ${x1},0 L ${w},0 ${shapeArc(w, h / 2, x1, y1, c3d4, 90, false).replace('M', 'L')} L ${x1},${h} ${shapeArc(x1, h / 2, x1, y1, cd4, 270, false).replace('M', 'L')} z`\n }\n break\n case 'flowChartDisplay':\n {\n const c3d4 = 270,\n cd2 = 180\n const x1 = w * 1 / 6\n const x2 = w * 5 / 6\n const y1 = h * 3 / 6\n pathData = `M 0,${y1} L ${x1},0 L ${x2},0 ${shapeArc(w, h / 2, x1, y1, c3d4, c3d4 + cd2, false).replace('M', 'L')} L ${x1},${h} z`\n }\n break\n case 'flowChartDelay':\n {\n const wd2 = w / 2,\n hd2 = h / 2,\n cd2 = 180,\n c3d4 = 270\n pathData = `M 0,0 L ${wd2},0 ${shapeArc(wd2, hd2, wd2, hd2, c3d4, c3d4 + cd2, false).replace('M', 'L')} L 0,${h} z`\n }\n break\n case 'flowChartMagneticTape':\n {\n const wd2 = w / 2,\n hd2 = h / 2,\n cd2 = 180,\n c3d4 = 270,\n cd4 = 90\n const idy = hd2 * Math.sin(Math.PI / 4)\n const ib = hd2 + idy\n const ang1 = Math.atan(h / w)\n const ang1Dg = ang1 * 180 / Math.PI\n pathData = `M ${wd2},${h} ${shapeArc(wd2, hd2, wd2, hd2, cd4, cd2, false).replace('M', 'L')} ${shapeArc(wd2, hd2, wd2, hd2, cd2, c3d4, false).replace('M', 'L')} ${shapeArc(wd2, hd2, wd2, hd2, c3d4, 360, false).replace('M', 'L')} ${shapeArc(wd2, hd2, wd2, hd2, 0, ang1Dg, false).replace('M', 'L')} L ${w},${ib} L ${w},${h} z`\n }\n break\n case 'ellipse':\n case 'flowChartConnector':\n case 'flowChartSummingJunction':\n case 'flowChartOr':\n {\n const cx = w / 2\n const cy = h / 2\n const rx = w / 2\n const ry = h / 2\n\n pathData = `M ${cx - rx},${cy} A ${rx},${ry} 0 1,0 ${cx + rx},${cy} A ${rx},${ry} 0 1,0 ${cx - rx},${cy} Z`\n\n if (shapType === 'flowChartOr') {\n pathData += ` M ${w / 2} 0 L ${w / 2} ${h} M 0 ${h / 2} L ${w} ${h / 2}`\n } \n else if (shapType === 'flowChartSummingJunction') {\n const angVal = Math.PI / 4\n const iDx = (w / 2) * Math.cos(angVal)\n const idy = (h / 2) * Math.sin(angVal)\n const il = cx - iDx\n const ir = cx + iDx\n const it = cy - idy\n const ib = cy + idy\n pathData += ` M ${il} ${it} L ${ir} ${ib} M ${ir} ${it} L ${il} ${ib}`\n }\n }\n break\n case 'roundRect':\n case 'round1Rect':\n case 'round2DiagRect':\n case 'round2SameRect':\n case 'snip1Rect':\n case 'snip2DiagRect':\n case 'snip2SameRect':\n case 'flowChartAlternateProcess':\n case 'flowChartPunchedCard':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let sAdj1_val, sAdj2_val\n let shpTyp, adjTyp\n\n if (shapAdjst_ary && Array.isArray(shapAdjst_ary)) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n const sAdj1 = getTextByPathList(adj, ['attrs', 'fmla'])\n sAdj1_val = parseInt(sAdj1.substring(4)) / 50000\n } \n else if (sAdj_name === 'adj2') {\n const sAdj2 = getTextByPathList(adj, ['attrs', 'fmla'])\n sAdj2_val = parseInt(sAdj2.substring(4)) / 50000\n }\n }\n } \n else if (shapAdjst_ary) {\n const sAdj = getTextByPathList(shapAdjst_ary, ['attrs', 'fmla'])\n sAdj1_val = parseInt(sAdj.substring(4)) / 50000\n sAdj2_val = 0\n }\n\n switch (shapType) {\n case 'roundRect':\n case 'flowChartAlternateProcess':\n shpTyp = 'round'\n adjTyp = 'cornrAll'\n if (sAdj1_val === undefined) sAdj1_val = 0.33334\n sAdj2_val = 0\n break\n case 'round1Rect':\n shpTyp = 'round'\n adjTyp = 'cornr1'\n if (sAdj1_val === undefined) sAdj1_val = 0.33334\n sAdj2_val = 0\n break\n case 'round2DiagRect':\n shpTyp = 'round'\n adjTyp = 'diag'\n if (sAdj1_val === undefined) sAdj1_val = 0.33334\n if (sAdj2_val === undefined) sAdj2_val = 0\n break\n case 'round2SameRect':\n shpTyp = 'round'\n adjTyp = 'cornr2'\n if (sAdj1_val === undefined) sAdj1_val = 0.33334\n if (sAdj2_val === undefined) sAdj2_val = 0\n break\n case 'snip1Rect':\n shpTyp = 'snip'\n adjTyp = 'cornr1'\n if (sAdj1_val === undefined) sAdj1_val = 0.33334\n sAdj2_val = 0\n break\n case 'flowChartPunchedCard':\n shpTyp = 'snip'\n adjTyp = 'cornrTL'\n if (sAdj1_val === undefined) sAdj1_val = 0.33334\n sAdj2_val = 0\n break\n case 'snip2DiagRect':\n shpTyp = 'snip'\n adjTyp = 'diag'\n if (sAdj1_val === undefined) sAdj1_val = 0\n if (sAdj2_val === undefined) sAdj2_val = 0.33334\n break\n case 'snip2SameRect':\n shpTyp = 'snip'\n adjTyp = 'cornr2'\n if (sAdj1_val === undefined) sAdj1_val = 0.33334\n if (sAdj2_val === undefined) sAdj2_val = 0\n break\n default:\n }\n pathData = shapeSnipRoundRect(w, h, sAdj1_val, sAdj2_val, shpTyp, adjTyp)\n }\n break\n case 'snipRoundRect':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let sAdj1_val = 0.33334\n let sAdj2_val = 0.33334\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n const sAdj1 = getTextByPathList(adj, ['attrs', 'fmla'])\n sAdj1_val = parseInt(sAdj1.substring(4)) / 50000\n } \n else if (sAdj_name === 'adj2') {\n const sAdj2 = getTextByPathList(adj, ['attrs', 'fmla'])\n sAdj2_val = parseInt(sAdj2.substring(4)) / 50000\n }\n }\n }\n pathData = `M0,${h} L${w},${h} L${w},${(h / 2) * sAdj2_val} L${w / 2 + (w / 2) * (1 - sAdj2_val)},0 L${(w / 2) * sAdj1_val},0 Q0,0 0,${(h / 2) * sAdj1_val} z`\n }\n break\n case 'bentConnector2':\n pathData = `M ${w} 0 L ${w} ${h} L 0 ${h}`\n break\n case 'rtTriangle':\n pathData = `M 0 0 L 0 ${h} L ${w} ${h} Z`\n break\n case 'triangle':\n case 'flowChartExtract':\n case 'flowChartMerge':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let shapAdjst_val = 0.5\n if (shapAdjst) {\n shapAdjst_val = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n\n let p1x = w * shapAdjst_val\n let p1y = 0\n let p2x = 0\n let p2y = h\n let p3x = w\n let p3y = h\n\n if (shapType === 'flowChartMerge') {\n [p1x, p1y] = [w - p1x, h - p1y]\n ;[p2x, p2y] = [w - p2x, h - p2y]\n ;[p3x, p3y] = [w - p3x, h - p3y]\n }\n\n pathData = `M ${p1x} ${p1y} L ${p2x} ${p2y} L ${p3x} ${p3y} Z`\n }\n break\n case 'diamond':\n case 'flowChartDecision':\n case 'flowChartSort':\n pathData = `M ${w / 2} 0 L 0 ${h / 2} L ${w / 2} ${h} L ${w} ${h / 2} Z`\n if (shapType === 'flowChartSort') {\n pathData += ` M 0 ${h / 2} L ${w} ${h / 2}`\n }\n break\n case 'trapezoid':\n case 'flowChartManualOperation':\n case 'flowChartManualInput':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adjst_val = 0.2\n if (shapAdjst) {\n // The adjust value is a fraction of the shorter side in 100000ths, not an EMU length,\n // so RATIO_EMUs_Points has no business here; putting it through produced a top edge\n // wider than the shape itself and a self-crossing bow tie. `maxAdj` is where the two\n // top corners meet, past which the shape would invert.\n const ss = Math.min(w, h)\n const a = Math.max(0, Math.min(parseInt(shapAdjst.substring(4)), (50000 * w) / ss))\n adjst_val = (ss * a) / 100000 / w\n }\n\n let p1x = w * adjst_val,\n p1y = 0\n let p2x = 0,\n p2y = h\n let p3x = w,\n p3y = h\n let p4x = (1 - adjst_val) * w,\n p4y = 0\n\n if (shapType === 'flowChartManualInput') {\n adjst_val = 0\n p1y = h / 5\n p1x = w * adjst_val\n p4x = (1 - adjst_val) * w\n }\n\n if (shapType === 'flowChartManualOperation') {\n [p1x, p1y] = [w - p1x, h - p1y]\n ;[p2x, p2y] = [w - p2x, h - p2y]\n ;[p3x, p3y] = [w - p3x, h - p3y]\n ;[p4x, p4y] = [w - p4x, h - p4y]\n }\n\n pathData = `M ${p1x} ${p1y} L ${p2x} ${p2y} L ${p3x} ${p3y} L ${p4x} ${p4y} Z`\n }\n break\n case 'parallelogram':\n case 'flowChartInputOutput':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adjst_val = 0.25\n if (shapAdjst) {\n // Same rule as the trapezoid: the offset is `ss * adj / 200000`, a fraction of the\n // shorter side. Dividing by the aspect ratio instead leaves the slant too steep on\n // any shape that is not square.\n const ss = Math.min(w, h)\n const a = Math.max(0, Math.min(parseInt(shapAdjst.substring(4)), (100000 * w) / ss))\n adjst_val = (ss * a) / 200000 / w\n }\n pathData = `M ${adjst_val * w} 0 L 0 ${h} L ${(1 - adjst_val) * w} ${h} L ${w} 0 Z`\n }\n break\n case 'pentagon':\n pathData = `M ${0.5 * w} 0 L 0 ${0.375 * h} L ${0.15 * w} ${h} L ${0.85 * w} ${h} L ${w} ${0.375 * h} Z`\n break\n case 'hexagon':\n case 'flowChartPreparation':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj = 25000 * RATIO_EMUs_Points\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n const vf = 115470 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const angVal1 = 60 * Math.PI / 180\n const ss = Math.min(w, h)\n const maxAdj = cnstVal1 * w / ss\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n const hd2 = h / 2\n const shd2 = hd2 * vf / cnstVal2\n const x1 = ss * a / cnstVal2\n const x2 = w - x1\n const dy1 = shd2 * Math.sin(angVal1)\n const vc = h / 2\n const y1 = vc - dy1\n const y2 = vc + dy1\n pathData = `M 0,${vc} L ${x1},${y1} L ${x2},${y1} L ${w},${vc} L ${x2},${y2} L ${x1},${y2} z`\n }\n break\n case 'heptagon':\n pathData = `M ${0.5 * w} 0 L ${w / 8} ${h / 4} L 0 ${5 / 8 * h} L ${w / 4} ${h} L ${3 / 4 * w} ${h} L ${w} ${5 / 8 * h} L ${7 / 8 * w} ${h / 4} Z`\n break\n case 'octagon':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj1 = 0.25\n if (shapAdjst) {\n adj1 = parseInt(shapAdjst.substring(4)) / 100000\n }\n const adj2 = (1 - adj1)\n pathData = `M ${adj1 * w} 0 L 0 ${adj1 * h} L 0 ${adj2 * h} L ${adj1 * w} ${h} L ${adj2 * w} ${h} L ${w} ${adj2 * h} L ${w} ${adj1 * h} L ${adj2 * w} 0 Z`\n }\n break\n case 'decagon':\n pathData = `M ${3 / 8 * w} 0 L ${w / 8} ${h / 8} L 0 ${h / 2} L ${w / 8} ${7 / 8 * h} L ${3 / 8 * w} ${h} L ${5 / 8 * w} ${h} L ${7 / 8 * w} ${7 / 8 * h} L ${w} ${h / 2} L ${7 / 8 * w} ${h / 8} L ${5 / 8 * w} 0 Z`\n break\n case 'dodecagon':\n pathData = `M ${3 / 8 * w} 0 L ${w / 8} ${h / 8} L 0 ${3 / 8 * h} L 0 ${5 / 8 * h} L ${w / 8} ${7 / 8 * h} L ${3 / 8 * w} ${h} L ${5 / 8 * w} ${h} L ${7 / 8 * w} ${7 / 8 * h} L ${w} ${5 / 8 * h} L ${w} ${3 / 8 * h} L ${7 / 8 * w} ${h / 8} L ${5 / 8 * w} 0 Z`\n break\n case 'star4':\n {\n const hc = w / 2,\n vc = h / 2,\n wd2 = w / 2,\n hd2 = h / 2\n let adj = 19098 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n if (shapAdjst) {\n const name = shapAdjst['attrs']['name']\n if (name === 'adj') {\n adj = parseInt(shapAdjst['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n }\n }\n const a = (adj < 0) ? 0 : (adj > cnstVal1) ? cnstVal1 : adj\n const iwd2 = wd2 * a / cnstVal1\n const ihd2 = hd2 * a / cnstVal1\n const sdx = iwd2 * Math.cos(0.7853981634)\n const sdy = ihd2 * Math.sin(0.7853981634)\n const sx1 = hc - sdx\n const sx2 = hc + sdx\n const sy1 = vc - sdy\n const sy2 = vc + sdy\n pathData = `M 0,${vc} L ${sx1},${sy1} L ${hc},0 L ${sx2},${sy1} L ${w},${vc} L ${sx2},${sy2} L ${hc},${h} L ${sx1},${sy2} z`\n }\n break\n case 'star5':\n {\n const hc = w / 2,\n vc = h / 2,\n wd2 = w / 2,\n hd2 = h / 2\n let adj = 19098 * RATIO_EMUs_Points\n let hf = 105146 * RATIO_EMUs_Points\n let vf = 110557 * RATIO_EMUs_Points\n const maxAdj = 50000 * RATIO_EMUs_Points\n const cnstVal1 = 100000 * RATIO_EMUs_Points\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n if (shapAdjst) {\n Object.keys(shapAdjst).forEach(key => {\n const name = shapAdjst[key]['attrs']['name']\n if (name === 'adj') {\n adj = parseInt(shapAdjst[key]['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n } \n else if (name === 'hf') {\n hf = parseInt(shapAdjst[key]['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n } \n else if (name === 'vf') {\n vf = parseInt(shapAdjst[key]['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n }\n })\n }\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n const swd2 = wd2 * hf / cnstVal1\n const shd2 = hd2 * vf / cnstVal1\n const svc = vc * vf / cnstVal1\n const dx1 = swd2 * Math.cos(0.31415926536)\n const dx2 = swd2 * Math.cos(5.3407075111)\n const dy1 = shd2 * Math.sin(0.31415926536)\n const dy2 = shd2 * Math.sin(5.3407075111)\n const x1 = hc - dx1\n const x2 = hc - dx2\n const x3 = hc + dx2\n const x4 = hc + dx1\n const y1 = svc - dy1\n const y2 = svc - dy2\n const iwd2 = swd2 * a / maxAdj\n const ihd2 = shd2 * a / maxAdj\n const sdx1 = iwd2 * Math.cos(5.9690260418)\n const sdx2 = iwd2 * Math.cos(0.94247779608)\n const sdy1 = ihd2 * Math.sin(0.94247779608)\n const sdy2 = ihd2 * Math.sin(5.9690260418)\n const sx1 = hc - sdx1\n const sx2 = hc - sdx2\n const sx3 = hc + sdx2\n const sx4 = hc + sdx1\n const sy1 = svc - sdy1\n const sy2 = svc - sdy2\n const sy3 = svc + ihd2\n pathData = `M ${x1},${y1} L ${sx2},${sy1} L ${hc},0 L ${sx3},${sy1} L ${x4},${y1} L ${sx4},${sy2} L ${x3},${y2} L ${hc},${sy3} L ${x2},${y2} L ${sx1},${sy2} z`\n }\n break\n case 'star6':\n {\n const hc = w / 2,\n vc = h / 2,\n wd2 = w / 2,\n hd2 = h / 2,\n hd4 = h / 4\n let adj = 28868 * RATIO_EMUs_Points\n let hf = 115470 * RATIO_EMUs_Points\n const maxAdj = 50000 * RATIO_EMUs_Points\n const cnstVal1 = 100000 * RATIO_EMUs_Points\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n if (shapAdjst) {\n Object.keys(shapAdjst).forEach(key => {\n const name = shapAdjst[key]['attrs']['name']\n if (name === 'adj') {\n adj = parseInt(shapAdjst[key]['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n } \n else if (name === 'hf') {\n hf = parseInt(shapAdjst[key]['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n }\n })\n }\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n const swd2 = wd2 * hf / cnstVal1\n const dx1 = swd2 * Math.cos(0.5235987756)\n const x1 = hc - dx1\n const x2 = hc + dx1\n const y2 = vc + hd4\n const iwd2 = swd2 * a / maxAdj\n const ihd2 = hd2 * a / maxAdj\n const sdx2 = iwd2 / 2\n const sx1 = hc - iwd2\n const sx2 = hc - sdx2\n const sx3 = hc + sdx2\n const sx4 = hc + iwd2\n const sdy1 = ihd2 * Math.sin(1.0471975512)\n const sy1 = vc - sdy1\n const sy2 = vc + sdy1\n pathData = `M ${x1},${hd4} L ${sx2},${sy1} L ${hc},0 L ${sx3},${sy1} L ${x2},${hd4} L ${sx4},${vc} L ${x2},${y2} L ${sx3},${sy2} L ${hc},${h} L ${sx2},${sy2} L ${x1},${y2} L ${sx1},${vc} z`\n }\n break\n case 'star7':\n {\n const hc = w / 2,\n vc = h / 2,\n wd2 = w / 2,\n hd2 = h / 2\n let adj = 34601 * RATIO_EMUs_Points\n let hf = 102572 * RATIO_EMUs_Points\n let vf = 105210 * RATIO_EMUs_Points\n const maxAdj = 50000 * RATIO_EMUs_Points\n const cnstVal1 = 100000 * RATIO_EMUs_Points\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n if (shapAdjst) {\n Object.keys(shapAdjst).forEach(key => {\n const name = shapAdjst[key]['attrs']['name']\n if (name === 'adj') {\n adj = parseInt(shapAdjst[key]['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n } \n else if (name === 'hf') {\n hf = parseInt(shapAdjst[key]['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n } \n else if (name === 'vf') {\n vf = parseInt(shapAdjst[key]['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n }\n })\n }\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n const swd2 = wd2 * hf / cnstVal1\n const shd2 = hd2 * vf / cnstVal1\n const svc = vc * vf / cnstVal1\n const dx1 = swd2 * 97493 / 100000\n const dx2 = swd2 * 78183 / 100000\n const dx3 = swd2 * 43388 / 100000\n const dy1 = shd2 * 62349 / 100000\n const dy2 = shd2 * 22252 / 100000\n const dy3 = shd2 * 90097 / 100000\n const x1 = hc - dx1\n const x2 = hc - dx2\n const x3 = hc - dx3\n const x4 = hc + dx3\n const x5 = hc + dx2\n const x6 = hc + dx1\n const y1 = svc - dy1\n const y2 = svc + dy2\n const y3 = svc + dy3\n const iwd2 = swd2 * a / maxAdj\n const ihd2 = shd2 * a / maxAdj\n const sdx1 = iwd2 * 97493 / 100000\n const sdx2 = iwd2 * 78183 / 100000\n const sdx3 = iwd2 * 43388 / 100000\n const sx1 = hc - sdx1\n const sx2 = hc - sdx2\n const sx3 = hc - sdx3\n const sx4 = hc + sdx3\n const sx5 = hc + sdx2\n const sx6 = hc + sdx1\n const sdy1 = ihd2 * 90097 / 100000\n const sdy2 = ihd2 * 22252 / 100000\n const sdy3 = ihd2 * 62349 / 100000\n const sy1 = svc - sdy1\n const sy2 = svc - sdy2\n const sy3 = svc + sdy3\n const sy4 = svc + ihd2\n pathData = `M ${x1},${y2} L ${sx1},${sy2} L ${x2},${y1} L ${sx3},${sy1} L ${hc},0 L ${sx4},${sy1} L ${x5},${y1} L ${sx6},${sy2} L ${x6},${y2} L ${sx5},${sy3} L ${x4},${y3} L ${hc},${sy4} L ${x3},${y3} L ${sx2},${sy3} z`\n }\n break\n case 'star8':\n {\n const hc = w / 2,\n vc = h / 2,\n wd2 = w / 2,\n hd2 = h / 2\n let adj = 37500 * RATIO_EMUs_Points\n const maxAdj = 50000 * RATIO_EMUs_Points\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n if (shapAdjst) {\n const name = shapAdjst['attrs']['name']\n if (name === 'adj') {\n adj = parseInt(shapAdjst['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n }\n }\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n const dx1 = wd2 * Math.cos(0.7853981634)\n const x1 = hc - dx1\n const x2 = hc + dx1\n const dy1 = hd2 * Math.sin(0.7853981634)\n const y1 = vc - dy1\n const y2 = vc + dy1\n const iwd2 = wd2 * a / maxAdj\n const ihd2 = hd2 * a / maxAdj\n const sdx1 = iwd2 * 92388 / 100000\n const sdx2 = iwd2 * 38268 / 100000\n const sdy1 = ihd2 * 92388 / 100000\n const sdy2 = ihd2 * 38268 / 100000\n const sx1 = hc - sdx1\n const sx2 = hc - sdx2\n const sx3 = hc + sdx2\n const sx4 = hc + sdx1\n const sy1 = vc - sdy1\n const sy2 = vc - sdy2\n const sy3 = vc + sdy2\n const sy4 = vc + sdy1\n pathData = `M 0,${vc} L ${sx1},${sy2} L ${x1},${y1} L ${sx2},${sy1} L ${hc},0 L ${sx3},${sy1} L ${x2},${y1} L ${sx4},${sy2} L ${w},${vc} L ${sx4},${sy3} L ${x2},${y2} L ${sx3},${sy4} L ${hc},${h} L ${sx2},${sy4} L ${x1},${y2} L ${sx1},${sy3} z`\n }\n break\n case 'star10':\n {\n const hc = w / 2,\n vc = h / 2,\n wd2 = w / 2,\n hd2 = h / 2\n let adj = 42533 * RATIO_EMUs_Points\n let hf = 105146 * RATIO_EMUs_Points\n const maxAdj = 50000 * RATIO_EMUs_Points\n const cnstVal1 = 100000 * RATIO_EMUs_Points\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n if (shapAdjst) {\n Object.keys(shapAdjst).forEach(key => {\n const name = shapAdjst[key]['attrs']['name']\n if (name === 'adj') {\n adj = parseInt(shapAdjst[key]['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n } \n else if (name === 'hf') {\n hf = parseInt(shapAdjst[key]['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n }\n })\n }\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n const swd2 = wd2 * hf / cnstVal1\n const dx1 = swd2 * 95106 / 100000\n const dx2 = swd2 * 58779 / 100000\n const x1 = hc - dx1\n const x2 = hc - dx2\n const x3 = hc + dx2\n const x4 = hc + dx1\n const dy1 = hd2 * 80902 / 100000\n const dy2 = hd2 * 30902 / 100000\n const y1 = vc - dy1\n const y2 = vc - dy2\n const y3 = vc + dy2\n const y4 = vc + dy1\n const iwd2 = swd2 * a / maxAdj\n const ihd2 = hd2 * a / maxAdj\n const sdx1 = iwd2 * 80902 / 100000\n const sdx2 = iwd2 * 30902 / 100000\n const sdy1 = ihd2 * 95106 / 100000\n const sdy2 = ihd2 * 58779 / 100000\n const sx1 = hc - iwd2\n const sx2 = hc - sdx1\n const sx3 = hc - sdx2\n const sx4 = hc + sdx2\n const sx5 = hc + sdx1\n const sx6 = hc + iwd2\n const sy1 = vc - sdy1\n const sy2 = vc - sdy2\n const sy3 = vc + sdy2\n const sy4 = vc + sdy1\n pathData = `M ${x1},${y2} L ${sx2},${sy2} L ${x2},${y1} L ${sx3},${sy1} L ${hc},0 L ${sx4},${sy1} L ${x3},${y1} L ${sx5},${sy2} L ${x4},${y2} L ${sx6},${vc} L ${x4},${y3} L ${sx5},${sy3} L ${x3},${y4} L ${sx4},${sy4} L ${hc},${h} L ${sx3},${sy4} L ${x2},${y4} L ${sx2},${sy3} L ${x1},${y3} L ${sx1},${vc} z`\n }\n break\n case 'star12':\n {\n const hc = w / 2,\n vc = h / 2,\n wd2 = w / 2,\n hd2 = h / 2,\n hd4 = h / 4,\n wd4 = w / 4\n let adj = 37500 * RATIO_EMUs_Points\n const maxAdj = 50000 * RATIO_EMUs_Points\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n if (shapAdjst) {\n const name = shapAdjst['attrs']['name']\n if (name === 'adj') {\n adj = parseInt(shapAdjst['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n }\n }\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n const dx1 = wd2 * Math.cos(0.5235987756)\n const dy1 = hd2 * Math.sin(1.0471975512)\n const x1 = hc - dx1\n const x3 = w * 3 / 4\n const x4 = hc + dx1\n const y1 = vc - dy1\n const y3 = h * 3 / 4\n const y4 = vc + dy1\n const iwd2 = wd2 * a / maxAdj\n const ihd2 = hd2 * a / maxAdj\n const sdx1 = iwd2 * Math.cos(0.2617993878)\n const sdx2 = iwd2 * Math.cos(0.7853981634)\n const sdx3 = iwd2 * Math.cos(1.308996939)\n const sdy1 = ihd2 * Math.sin(1.308996939)\n const sdy2 = ihd2 * Math.sin(0.7853981634)\n const sdy3 = ihd2 * Math.sin(0.2617993878)\n const sx1 = hc - sdx1\n const sx2 = hc - sdx2\n const sx3 = hc - sdx3\n const sx4 = hc + sdx3\n const sx5 = hc + sdx2\n const sx6 = hc + sdx1\n const sy1 = vc - sdy1\n const sy2 = vc - sdy2\n const sy3 = vc - sdy3\n const sy4 = vc + sdy3\n const sy5 = vc + sdy2\n const sy6 = vc + sdy1\n pathData = `M 0,${vc} L ${sx1},${sy3} L ${x1},${hd4} L ${sx2},${sy2} L ${wd4},${y1} L ${sx3},${sy1} L ${hc},0 L ${sx4},${sy1} L ${x3},${y1} L ${sx5},${sy2} L ${x4},${hd4} L ${sx6},${sy3} L ${w},${vc} L ${sx6},${sy4} L ${x4},${y3} L ${sx5},${sy5} L ${x3},${y4} L ${sx4},${sy6} L ${hc},${h} L ${sx3},${sy6} L ${wd4},${y4} L ${sx2},${sy5} L ${x1},${y3} L ${sx1},${sy4} z`\n }\n break\n case 'star16':\n {\n const hc = w / 2,\n vc = h / 2,\n wd2 = w / 2,\n hd2 = h / 2\n let adj = 37500 * RATIO_EMUs_Points\n const maxAdj = 50000 * RATIO_EMUs_Points\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n if (shapAdjst) {\n const name = shapAdjst['attrs']['name']\n if (name === 'adj') {\n adj = parseInt(shapAdjst['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n }\n }\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n const dx1 = wd2 * 92388 / 100000\n const dx2 = wd2 * 70711 / 100000\n const dx3 = wd2 * 38268 / 100000\n const dy1 = hd2 * 92388 / 100000\n const dy2 = hd2 * 70711 / 100000\n const dy3 = hd2 * 38268 / 100000\n const x1 = hc - dx1\n const x2 = hc - dx2\n const x3 = hc - dx3\n const x4 = hc + dx3\n const x5 = hc + dx2\n const x6 = hc + dx1\n const y1 = vc - dy1\n const y2 = vc - dy2\n const y3 = vc - dy3\n const y4 = vc + dy3\n const y5 = vc + dy2\n const y6 = vc + dy1\n const iwd2 = wd2 * a / maxAdj\n const ihd2 = hd2 * a / maxAdj\n const sdx1 = iwd2 * 98079 / 100000\n const sdx2 = iwd2 * 83147 / 100000\n const sdx3 = iwd2 * 55557 / 100000\n const sdx4 = iwd2 * 19509 / 100000\n const sdy1 = ihd2 * 98079 / 100000\n const sdy2 = ihd2 * 83147 / 100000\n const sdy3 = ihd2 * 55557 / 100000\n const sdy4 = ihd2 * 19509 / 100000\n const sx1 = hc - sdx1\n const sx2 = hc - sdx2\n const sx3 = hc - sdx3\n const sx4 = hc - sdx4\n const sx5 = hc + sdx4\n const sx6 = hc + sdx3\n const sx7 = hc + sdx2\n const sx8 = hc + sdx1\n const sy1 = vc - sdy1\n const sy2 = vc - sdy2\n const sy3 = vc - sdy3\n const sy4 = vc - sdy4\n const sy5 = vc + sdy4\n const sy6 = vc + sdy3\n const sy7 = vc + sdy2\n const sy8 = vc + sdy1\n pathData = `M 0,${vc} L ${sx1},${sy4} L ${x1},${y3} L ${sx2},${sy3} L ${x2},${y2} L ${sx3},${sy2} L ${x3},${y1} L ${sx4},${sy1} L ${hc},0 L ${sx5},${sy1} L ${x4},${y1} L ${sx6},${sy2} L ${x5},${y2} L ${sx7},${sy3} L ${x6},${y3} L ${sx8},${sy4} L ${w},${vc} L ${sx8},${sy5} L ${x6},${y4} L ${sx7},${sy6} L ${x5},${y5} L ${sx6},${sy7} L ${x4},${y6} L ${sx5},${sy8} L ${hc},${h} L ${sx4},${sy8} L ${x3},${y6} L ${sx3},${sy7} L ${x2},${y5} L ${sx2},${sy6} L ${x1},${y4} L ${sx1},${sy5} z`\n }\n break\n case 'star24':\n {\n const hc = w / 2,\n vc = h / 2,\n wd2 = w / 2,\n hd2 = h / 2,\n hd4 = h / 4,\n wd4 = w / 4\n let adj = 37500 * RATIO_EMUs_Points\n const maxAdj = 50000 * RATIO_EMUs_Points\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n if (shapAdjst) {\n const name = shapAdjst['attrs']['name']\n if (name === 'adj') {\n adj = parseInt(shapAdjst['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n }\n }\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n const dx1 = wd2 * Math.cos(0.2617993878)\n const dx2 = wd2 * Math.cos(0.5235987756)\n const dx3 = wd2 * Math.cos(0.7853981634)\n const dx4 = wd4\n const dx5 = wd2 * Math.cos(1.308996939)\n const dy1 = hd2 * Math.sin(1.308996939)\n const dy2 = hd2 * Math.sin(1.0471975512)\n const dy3 = hd2 * Math.sin(0.7853981634)\n const dy4 = hd4\n const dy5 = hd2 * Math.sin(0.2617993878)\n const x1 = hc - dx1\n const x2 = hc - dx2\n const x3 = hc - dx3\n const x4 = hc - dx4\n const x5 = hc - dx5\n const x6 = hc + dx5\n const x7 = hc + dx4\n const x8 = hc + dx3\n const x9 = hc + dx2\n const x10 = hc + dx1\n const y1 = vc - dy1\n const y2 = vc - dy2\n const y3 = vc - dy3\n const y4 = vc - dy4\n const y5 = vc - dy5\n const y6 = vc + dy5\n const y7 = vc + dy4\n const y8 = vc + dy3\n const y9 = vc + dy2\n const y10 = vc + dy1\n const iwd2 = wd2 * a / maxAdj\n const ihd2 = hd2 * a / maxAdj\n const sdx1 = iwd2 * 99144 / 100000\n const sdx2 = iwd2 * 92388 / 100000\n const sdx3 = iwd2 * 79335 / 100000\n const sdx4 = iwd2 * 60876 / 100000\n const sdx5 = iwd2 * 38268 / 100000\n const sdx6 = iwd2 * 13053 / 100000\n const sdy1 = ihd2 * 99144 / 100000\n const sdy2 = ihd2 * 92388 / 100000\n const sdy3 = ihd2 * 79335 / 100000\n const sdy4 = ihd2 * 60876 / 100000\n const sdy5 = ihd2 * 38268 / 100000\n const sdy6 = ihd2 * 13053 / 100000\n const sx1 = hc - sdx1\n const sx2 = hc - sdx2\n const sx3 = hc - sdx3\n const sx4 = hc - sdx4\n const sx5 = hc - sdx5\n const sx6 = hc - sdx6\n const sx7 = hc + sdx6\n const sx8 = hc + sdx5\n const sx9 = hc + sdx4\n const sx10 = hc + sdx3\n const sx11 = hc + sdx2\n const sx12 = hc + sdx1\n const sy1 = vc - sdy1\n const sy2 = vc - sdy2\n const sy3 = vc - sdy3\n const sy4 = vc - sdy4\n const sy5 = vc - sdy5\n const sy6 = vc - sdy6\n const sy7 = vc + sdy6\n const sy8 = vc + sdy5\n const sy9 = vc + sdy4\n const sy10 = vc + sdy3\n const sy11 = vc + sdy2\n const sy12 = vc + sdy1\n pathData = `M 0,${vc} L ${sx1},${sy6} L ${x1},${y5} L ${sx2},${sy5} L ${x2},${y4} L ${sx3},${sy4} L ${x3},${y3} L ${sx4},${sy3} L ${x4},${y2} L ${sx5},${sy2} L ${x5},${y1} L ${sx6},${sy1} L ${hc},0 L ${sx7},${sy1} L ${x6},${y1} L ${sx8},${sy2} L ${x7},${y2} L ${sx9},${sy3} L ${x8},${y3} L ${sx10},${sy4} L ${x9},${y4} L ${sx11},${sy5} L ${x10},${y5} L ${sx12},${sy6} L ${w},${vc} L ${sx12},${sy7} L ${x10},${y6} L ${sx11},${sy8} L ${x9},${y7} L ${sx10},${sy9} L ${x8},${y8} L ${sx9},${sy10} L ${x7},${y9} L ${sx8},${sy11} L ${x6},${y10} L ${sx7},${sy12} L ${hc},${h} L ${sx6},${sy12} L ${x5},${y10} L ${sx5},${sy11} L ${x4},${y9} L ${sx4},${sy10} L ${x3},${y8} L ${sx3},${sy9} L ${x2},${y7} L ${sx2},${sy8} L ${x1},${y6} L ${sx1},${sy7} z`\n }\n break\n case 'star32':\n {\n const hc = w / 2,\n vc = h / 2,\n wd2 = w / 2,\n hd2 = h / 2\n let adj = 37500 * RATIO_EMUs_Points\n const maxAdj = 50000 * RATIO_EMUs_Points\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n if (shapAdjst) {\n const name = shapAdjst['attrs']['name']\n if (name === 'adj') {\n adj = parseInt(shapAdjst['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n }\n }\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n const dx1 = wd2 * 98079 / 100000\n const dx2 = wd2 * 92388 / 100000\n const dx3 = wd2 * 83147 / 100000\n const dx4 = wd2 * Math.cos(0.7853981634)\n const dx5 = wd2 * 55557 / 100000\n const dx6 = wd2 * 38268 / 100000\n const dx7 = wd2 * 19509 / 100000\n const dy1 = hd2 * 98079 / 100000\n const dy2 = hd2 * 92388 / 100000\n const dy3 = hd2 * 83147 / 100000\n const dy4 = hd2 * Math.sin(0.7853981634)\n const dy5 = hd2 * 55557 / 100000\n const dy6 = hd2 * 38268 / 100000\n const dy7 = hd2 * 19509 / 100000\n const x1 = hc - dx1\n const x2 = hc - dx2\n const x3 = hc - dx3\n const x4 = hc - dx4\n const x5 = hc - dx5\n const x6 = hc - dx6\n const x7 = hc - dx7\n const x8 = hc + dx7\n const x9 = hc + dx6\n const x10 = hc + dx5\n const x11 = hc + dx4\n const x12 = hc + dx3\n const x13 = hc + dx2\n const x14 = hc + dx1\n const y1 = vc - dy1\n const y2 = vc - dy2\n const y3 = vc - dy3\n const y4 = vc - dy4\n const y5 = vc - dy5\n const y6 = vc - dy6\n const y7 = vc - dy7\n const y8 = vc + dy7\n const y9 = vc + dy6\n const y10 = vc + dy5\n const y11 = vc + dy4\n const y12 = vc + dy3\n const y13 = vc + dy2\n const y14 = vc + dy1\n const iwd2 = wd2 * a / maxAdj\n const ihd2 = hd2 * a / maxAdj\n const sdx1 = iwd2 * 99518 / 100000\n const sdx2 = iwd2 * 95694 / 100000\n const sdx3 = iwd2 * 88192 / 100000\n const sdx4 = iwd2 * 77301 / 100000\n const sdx5 = iwd2 * 63439 / 100000\n const sdx6 = iwd2 * 47140 / 100000\n const sdx7 = iwd2 * 29028 / 100000\n const sdx8 = iwd2 * 9802 / 100000\n const sdy1 = ihd2 * 99518 / 100000\n const sdy2 = ihd2 * 95694 / 100000\n const sdy3 = ihd2 * 88192 / 100000\n const sdy4 = ihd2 * 77301 / 100000\n const sdy5 = ihd2 * 63439 / 100000\n const sdy6 = ihd2 * 47140 / 100000\n const sdy7 = ihd2 * 29028 / 100000\n const sdy8 = ihd2 * 9802 / 100000\n const sx1 = hc - sdx1\n const sx2 = hc - sdx2\n const sx3 = hc - sdx3\n const sx4 = hc - sdx4\n const sx5 = hc - sdx5\n const sx6 = hc - sdx6\n const sx7 = hc - sdx7\n const sx8 = hc - sdx8\n const sx9 = hc + sdx8\n const sx10 = hc + sdx7\n const sx11 = hc + sdx6\n const sx12 = hc + sdx5\n const sx13 = hc + sdx4\n const sx14 = hc + sdx3\n const sx15 = hc + sdx2\n const sx16 = hc + sdx1\n const sy1 = vc - sdy1\n const sy2 = vc - sdy2\n const sy3 = vc - sdy3\n const sy4 = vc - sdy4\n const sy5 = vc - sdy5\n const sy6 = vc - sdy6\n const sy7 = vc - sdy7\n const sy8 = vc - sdy8\n const sy9 = vc + sdy8\n const sy10 = vc + sdy7\n const sy11 = vc + sdy6\n const sy12 = vc + sdy5\n const sy13 = vc + sdy4\n const sy14 = vc + sdy3\n const sy15 = vc + sdy2\n const sy16 = vc + sdy1\n pathData = `M 0,${vc} L ${sx1},${sy8} L ${x1},${y7} L ${sx2},${sy7} L ${x2},${y6} L ${sx3},${sy6} L ${x3},${y5} L ${sx4},${sy5} L ${x4},${y4} L ${sx5},${sy4} L ${x5},${y3} L ${sx6},${sy3} L ${x6},${y2} L ${sx7},${sy2} L ${x7},${y1} L ${sx8},${sy1} L ${hc},0 L ${sx9},${sy1} L ${x8},${y1} L ${sx10},${sy2} L ${x9},${y2} L ${sx11},${sy3} L ${x10},${y3} L ${sx12},${sy4} L ${x11},${y4} L ${sx13},${sy5} L ${x12},${y5} L ${sx14},${sy6} L ${x13},${y6} L ${sx15},${sy7} L ${x14},${y7} L ${sx16},${sy8} L ${w},${vc} L ${sx16},${sy9} L ${x14},${y8} L ${sx15},${sy10} L ${x13},${y9} L ${sx14},${sy11} L ${x12},${y10} L ${sx13},${sy12} L ${x11},${y11} L ${sx12},${sy13} L ${x10},${y12} L ${sx11},${sy14} L ${x9},${y13} L ${sx10},${sy15} L ${x8},${y14} L ${sx9},${sy16} L ${hc},${h} L ${sx8},${sy16} L ${x7},${y14} L ${sx7},${sy15} L ${x6},${y13} L ${sx6},${sy14} L ${x5},${y12} L ${sx5},${sy13} L ${x4},${y11} L ${sx4},${sy12} L ${x3},${y10} L ${sx3},${sy11} L ${x2},${y9} L ${sx2},${sy10} L ${x1},${y8} L ${sx1},${sy9} z`\n }\n break\n case 'pie':\n case 'pieWedge':\n case 'arc':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1, adj2, H, isClose\n\n if (shapType === 'pie') {\n adj1 = 0\n adj2 = 270\n H = h\n isClose = true\n } \n else if (shapType === 'pieWedge') {\n adj1 = 180\n adj2 = 270\n H = 2 * h\n isClose = true\n } \n else if (shapType === 'arc') {\n adj1 = 270\n adj2 = 0\n H = h\n isClose = false\n }\n\n if (shapAdjst) {\n const shapAdjstAry = Array.isArray(shapAdjst) ? shapAdjst : [shapAdjst]\n for (const adj of shapAdjstAry) {\n const name = getTextByPathList(adj, ['attrs', 'name'])\n const fmla = getTextByPathList(adj, ['attrs', 'fmla'])\n if (!name || !fmla) continue\n\n if (name === 'adj1') {\n adj1 = parseInt(fmla.substring(4)) / 60000\n }\n else if (name === 'adj2') {\n adj2 = parseInt(fmla.substring(4)) / 60000\n }\n }\n }\n\n pathData = shapePie(H, w, adj1, adj2, isClose)\n }\n break\n case 'chord':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let sAdj1_val = 45\n let sAdj2_val = 270\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n const sAdj1 = getTextByPathList(adj, ['attrs', 'fmla'])\n sAdj1_val = parseInt(sAdj1.substring(4)) / 60000\n } \n else if (sAdj_name === 'adj2') {\n const sAdj2 = getTextByPathList(adj, ['attrs', 'fmla'])\n sAdj2_val = parseInt(sAdj2.substring(4)) / 60000\n }\n }\n }\n const hR = h / 2\n const wR = w / 2\n pathData = shapeArc(wR, hR, wR, hR, sAdj1_val, sAdj2_val, true)\n }\n break\n case 'frame':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj1 = 12500 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n if (shapAdjst) {\n adj1 = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal1) ? cnstVal1 : adj1\n const x1 = Math.min(w, h) * a1 / cnstVal2\n const x4 = w - x1\n const y4 = h - x1\n pathData = `M 0,0 L ${w},0 L ${w},${h} L 0,${h} z M ${x1},${x1} L ${x1},${y4} L ${x4},${y4} L ${x4},${x1} z`\n }\n break\n case 'donut':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj = 25000 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n const a = (adj < 0) ? 0 : (adj > cnstVal1) ? cnstVal1 : adj\n const dr = Math.min(w, h) * a / cnstVal2\n const iwd2 = w / 2 - dr\n const ihd2 = h / 2 - dr\n const outerPath = `M ${w / 2 - w / 2},${h / 2} A ${w / 2},${h / 2} 0 1,0 ${w / 2 + w / 2},${h / 2} A ${w / 2},${h / 2} 0 1,0 ${w / 2 - w / 2},${h / 2} Z`\n const innerPath = `M ${w / 2 + iwd2},${h / 2} A ${iwd2},${ihd2} 0 1,0 ${w / 2 - iwd2},${h / 2} A ${iwd2},${ihd2} 0 1,0 ${w / 2 + iwd2},${h / 2} Z`\n pathData = `${outerPath} ${innerPath}`\n }\n break\n case 'noSmoking':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj = 18750 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n const a = (adj < 0) ? 0 : (adj > cnstVal1) ? cnstVal1 : adj\n const dr = Math.min(w, h) * a / cnstVal2\n const iwd2 = w / 2 - dr\n const ihd2 = h / 2 - dr\n const ang = Math.atan(h / w)\n const ct = ihd2 * Math.cos(ang)\n const st = iwd2 * Math.sin(ang)\n const m = Math.sqrt(ct * ct + st * st)\n const n = iwd2 * ihd2 / m\n const drd2 = dr / 2\n const dang = Math.atan(drd2 / n)\n const swAng = -Math.PI + (dang * 2)\n const stAng1 = ang - dang\n const stAng2 = stAng1 - Math.PI\n const ct1 = ihd2 * Math.cos(stAng1)\n const st1 = iwd2 * Math.sin(stAng1)\n const m1 = Math.sqrt(ct1 * ct1 + st1 * st1)\n const n1 = iwd2 * ihd2 / m1\n const dx1 = n1 * Math.cos(stAng1)\n const dy1 = n1 * Math.sin(stAng1)\n const x1 = w / 2 + dx1\n const y1 = h / 2 + dy1\n const x2 = w / 2 - dx1\n const y2 = h / 2 - dy1\n const stAng1deg = stAng1 * 180 / Math.PI\n const stAng2deg = stAng2 * 180 / Math.PI\n const swAng2deg = swAng * 180 / Math.PI\n const outerCircle = `M ${w / 2 - w / 2},${h / 2} A ${w / 2},${h / 2} 0 1,0 ${w / 2 + w / 2},${h / 2} A ${w / 2},${h / 2} 0 1,0 ${w / 2 - w / 2},${h / 2} Z`\n const slash1 = `M ${x1},${y1} ${shapeArc(w / 2, h / 2, iwd2, ihd2, stAng1deg, (stAng1deg + swAng2deg), false).replace('M', 'L')} z`\n const slash2 = `M ${x2},${y2} ${shapeArc(w / 2, h / 2, iwd2, ihd2, stAng2deg, (stAng2deg + swAng2deg), false).replace('M', 'L')} z`\n pathData = `${outerCircle} ${slash1} ${slash2}`\n }\n break\n case 'halfFrame':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let sAdj1_val = 3.5\n let sAdj2_val = 3.5\n const cnsVal = 100000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n sAdj1_val = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj2') {\n sAdj2_val = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const minWH = Math.min(w, h)\n const maxAdj2 = (cnsVal * w) / minWH\n const a2 = (sAdj2_val < 0) ? 0 : (sAdj2_val > maxAdj2) ? maxAdj2 : sAdj2_val\n const x1 = (minWH * a2) / cnsVal\n const g2 = h - (h * x1 / w)\n const maxAdj1 = (cnsVal * g2) / minWH\n const a1 = (sAdj1_val < 0) ? 0 : (sAdj1_val > maxAdj1) ? maxAdj1 : sAdj1_val\n const y1 = minWH * a1 / cnsVal\n const x2 = w - (y1 * w / h)\n const y2 = h - (x1 * h / w)\n pathData = `M 0,0 L ${w},0 L ${x2},${y1} L ${x1},${y1} L ${x1},${y2} L 0,${h} z`\n }\n break\n case 'blockArc':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 180\n let adj2 = 0\n let adj3 = 25000 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 60000\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 60000\n } \n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const cd1 = 360\n const stAng = (adj1 < 0) ? 0 : (adj1 > cd1) ? cd1 : adj1\n const istAng = (adj2 < 0) ? 0 : (adj2 > cd1) ? cd1 : adj2\n const a3 = (adj3 < 0) ? 0 : (adj3 > cnstVal1) ? cnstVal1 : adj3\n const sw11 = istAng - stAng\n const sw12 = sw11 + cd1\n const swAng = (sw11 > 0) ? sw11 : sw12\n const iswAng = -swAng\n const endAng = stAng + swAng\n const iendAng = istAng + iswAng\n const stRd = stAng * (Math.PI) / 180\n const istRd = istAng * (Math.PI) / 180\n const wd2 = w / 2\n const hd2 = h / 2\n const hc = w / 2\n const vc = h / 2\n let x1, y1\n if (stAng > 90 && stAng < 270) {\n const wt1 = wd2 * (Math.sin((Math.PI) / 2 - stRd))\n const ht1 = hd2 * (Math.cos((Math.PI) / 2 - stRd))\n const dx1 = wd2 * (Math.cos(Math.atan(ht1 / wt1)))\n const dy1 = hd2 * (Math.sin(Math.atan(ht1 / wt1)))\n x1 = hc - dx1\n y1 = vc - dy1\n } \n else {\n const wt1 = wd2 * (Math.sin(stRd))\n const ht1 = hd2 * (Math.cos(stRd))\n const dx1 = wd2 * (Math.cos(Math.atan(wt1 / ht1)))\n const dy1 = hd2 * (Math.sin(Math.atan(wt1 / ht1)))\n x1 = hc + dx1\n y1 = vc + dy1\n }\n const dr = Math.min(w, h) * a3 / cnstVal2\n const iwd2 = wd2 - dr\n const ihd2 = hd2 - dr\n let x2, y2\n if ((endAng <= 450 && endAng > 270) || ((endAng >= 630 && endAng < 720))) {\n const wt2 = iwd2 * (Math.sin(istRd))\n const ht2 = ihd2 * (Math.cos(istRd))\n const dx2 = iwd2 * (Math.cos(Math.atan(wt2 / ht2)))\n const dy2 = ihd2 * (Math.sin(Math.atan(wt2 / ht2)))\n x2 = hc + dx2\n y2 = vc + dy2\n } \n else {\n const wt2 = iwd2 * (Math.sin((Math.PI) / 2 - istRd))\n const ht2 = ihd2 * (Math.cos((Math.PI) / 2 - istRd))\n const dx2 = iwd2 * (Math.cos(Math.atan(ht2 / wt2)))\n const dy2 = ihd2 * (Math.sin(Math.atan(ht2 / wt2)))\n x2 = hc - dx2\n y2 = vc - dy2\n }\n pathData = `M ${x1},${y1} ${shapeArc(wd2, hd2, wd2, hd2, stAng, endAng, false).replace('M', 'L')} L ${x2},${y2} ${shapeArc(wd2, hd2, iwd2, ihd2, istAng, iendAng, false).replace('M', 'L')} z`\n }\n break\n case 'bracePair':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj = 8333 * RATIO_EMUs_Points\n const cnstVal1 = 25000 * RATIO_EMUs_Points\n const cnstVal2 = 50000 * RATIO_EMUs_Points\n const cnstVal3 = 100000 * RATIO_EMUs_Points\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n const vc = h / 2,\n cd2 = 180,\n cd4 = 90,\n c3d4 = 270\n const a = (adj < 0) ? 0 : (adj > cnstVal1) ? cnstVal1 : adj\n const minWH = Math.min(w, h)\n const x1 = minWH * a / cnstVal3\n const x2 = minWH * a / cnstVal2\n const x3 = w - x2\n const x4 = w - x1\n const y2 = vc - x1\n const y3 = vc + x1\n const y4 = h - x1\n pathData = `M ${x2},${h} ${shapeArc(x2, y4, x1, x1, cd4, cd2, false).replace('M', 'L')} L ${x1},${y3} ${shapeArc(0, y3, x1, x1, 0, (-cd4), false).replace('M', 'L')} ${shapeArc(0, y2, x1, x1, cd4, 0, false).replace('M', 'L')} L ${x1},${x1} ${shapeArc(x2, x1, x1, x1, cd2, c3d4, false).replace('M', 'L')} M ${x3},0 ${shapeArc(x3, x1, x1, x1, c3d4, 360, false).replace('M', 'L')} L ${x4},${y2} ${shapeArc(w, y2, x1, x1, cd2, cd4, false).replace('M', 'L')} ${shapeArc(w, y3, x1, x1, c3d4, cd2, false).replace('M', 'L')} L ${x4},${y4} ${shapeArc(x3, y4, x1, x1, 0, cd4, false).replace('M', 'L')}`\n }\n break\n case 'leftBrace':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 8333 * RATIO_EMUs_Points\n let adj2 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const cd2 = 180,\n cd4 = 90,\n c3d4 = 270\n const a2 = (adj2 < 0) ? 0 : (adj2 > cnstVal2) ? cnstVal2 : adj2\n const minWH = Math.min(w, h)\n const q1 = cnstVal2 - a2\n const q2 = (q1 < a2) ? q1 : a2\n const q3 = q2 / 2\n const maxAdj1 = q3 * h / minWH\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const y1 = minWH * a1 / cnstVal2\n const y3 = h * a2 / cnstVal2\n const y2 = y3 - y1\n const y4 = y3 + y1\n pathData = `M ${w},${h} ${shapeArc(w, h - y1, w / 2, y1, cd4, cd2, false).replace('M', 'L')} L ${w / 2},${y4} ${shapeArc(0, y4, w / 2, y1, 0, (-cd4), false).replace('M', 'L')} ${shapeArc(0, y2, w / 2, y1, cd4, 0, false).replace('M', 'L')} L ${w / 2},${y1} ${shapeArc(w, y1, w / 2, y1, cd2, c3d4, false).replace('M', 'L')}`\n }\n break\n case 'rightBrace':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 8333 * RATIO_EMUs_Points\n let adj2 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const cd = 360,\n cd2 = 180,\n cd4 = 90,\n c3d4 = 270\n const a2 = (adj2 < 0) ? 0 : (adj2 > cnstVal2) ? cnstVal2 : adj2\n const minWH = Math.min(w, h)\n const q1 = cnstVal2 - a2\n const q2 = (q1 < a2) ? q1 : a2\n const q3 = q2 / 2\n const maxAdj1 = q3 * h / minWH\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const y1 = minWH * a1 / cnstVal2\n const y3 = h * a2 / cnstVal2\n const y2 = y3 - y1\n const y4 = h - y1\n pathData = `M 0,0 ${shapeArc(0, y1, w / 2, y1, c3d4, cd, false).replace('M', 'L')} L ${w / 2},${y2} ${shapeArc(w, y2, w / 2, y1, cd2, cd4, false).replace('M', 'L')} ${shapeArc(w, y3 + y1, w / 2, y1, c3d4, cd2, false).replace('M', 'L')} L ${w / 2},${y4} ${shapeArc(0, y4, w / 2, y1, 0, cd4, false).replace('M', 'L')}`\n }\n break\n case 'bracketPair':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj = 16667 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n const cd2 = 180,\n cd4 = 90,\n c3d4 = 270\n const a = (adj < 0) ? 0 : (adj > cnstVal1) ? cnstVal1 : adj\n const x1 = Math.min(w, h) * a / cnstVal2\n const x2 = w - x1\n const y2 = h - x1\n pathData = `${shapeArc(x1, x1, x1, x1, c3d4, cd2, false)} ${shapeArc(x1, y2, x1, x1, cd2, cd4, false).replace('M', 'L')} ${shapeArc(x2, x1, x1, x1, c3d4, (c3d4 + cd4), false)} ${shapeArc(x2, y2, x1, x1, 0, cd4, false).replace('M', 'L')}`\n }\n break\n case 'leftBracket':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj = 8333 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const maxAdj = cnstVal1 * h / Math.min(w, h)\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n const cd2 = 180,\n cd4 = 90,\n c3d4 = 270\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n let y1 = Math.min(w, h) * a / cnstVal2\n if (y1 > w) y1 = w\n const y2 = h - y1\n pathData = `M ${w},${h} ${shapeArc(y1, y2, y1, y1, cd4, cd2, false).replace('M', 'L')} L 0,${y1} ${shapeArc(y1, y1, y1, y1, cd2, c3d4, false).replace('M', 'L')} L ${w},0`\n }\n break\n case 'rightBracket':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj = 8333 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const maxAdj = cnstVal1 * h / Math.min(w, h)\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n const cd = 360,\n cd4 = 90,\n c3d4 = 270\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n const y1 = Math.min(w, h) * a / cnstVal2\n const y2 = h - y1\n const y3 = w - y1\n pathData = `M 0,${h} ${shapeArc(y3, y2, y1, y1, cd4, 0, false).replace('M', 'L')} L ${w},${h / 2} ${shapeArc(y3, y1, y1, y1, cd, c3d4, false).replace('M', 'L')} L 0,0`\n }\n break\n case 'moon':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj = 0.5\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) / 100000\n }\n const hd2 = h / 2\n const cd2 = 180\n const cd4 = 90\n const adj2 = (1 - adj) * w\n pathData = `M ${w},${h} ${shapeArc(w, hd2, w, hd2, cd4, (cd4 + cd2), false).replace('M', 'L')} ${shapeArc(w, hd2, adj2, hd2, (cd4 + cd2), cd4, false).replace('M', 'L')} z`\n }\n break\n case 'corner':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let sAdj1_val = 50000 * RATIO_EMUs_Points\n let sAdj2_val = 50000 * RATIO_EMUs_Points\n const cnsVal = 100000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n sAdj1_val = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj2') {\n sAdj2_val = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const minWH = Math.min(w, h)\n const maxAdj1 = cnsVal * h / minWH\n const maxAdj2 = cnsVal * w / minWH\n const a1 = (sAdj1_val < 0) ? 0 : (sAdj1_val > maxAdj1) ? maxAdj1 : sAdj1_val\n const a2 = (sAdj2_val < 0) ? 0 : (sAdj2_val > maxAdj2) ? maxAdj2 : sAdj2_val\n const x1 = minWH * a2 / cnsVal\n const dy1 = minWH * a1 / cnsVal\n const y1 = h - dy1\n pathData = `M 0,0 L ${x1},0 L ${x1},${y1} L ${w},${y1} L ${w},${h} L 0,${h} z`\n }\n break\n case 'diagStripe':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let sAdj1_val = 50000 * RATIO_EMUs_Points\n const cnsVal = 100000 * RATIO_EMUs_Points\n if (shapAdjst) {\n sAdj1_val = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n const a1 = (sAdj1_val < 0) ? 0 : (sAdj1_val > cnsVal) ? cnsVal : sAdj1_val\n const x2 = w * a1 / cnsVal\n const y2 = h * a1 / cnsVal\n pathData = `M 0,${y2} L ${x2},0 L ${w},0 L 0,${h} z`\n }\n break\n case 'gear6':\n case 'gear9':\n pathData = shapeGear(w, h / 3.5, parseInt(shapType.substring(4)))\n break\n case 'bentConnector3':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let shapAdjst_val = 0.5\n if (shapAdjst) {\n shapAdjst_val = parseInt(shapAdjst.substring(4)) / 100000\n }\n pathData = `M 0 0 L ${shapAdjst_val * w} 0 L ${shapAdjst_val * w} ${h} L ${w} ${h}`\n }\n break\n case 'plus':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj1 = 0.25\n if (shapAdjst) {\n adj1 = parseInt(shapAdjst.substring(4)) / 100000\n }\n const adj2 = (1 - adj1)\n pathData = `M ${adj1 * w} 0 L ${adj1 * w} ${adj1 * h} L 0 ${adj1 * h} L 0 ${adj2 * h} L ${adj1 * w} ${adj2 * h} L ${adj1 * w} ${h} L ${adj2 * w} ${h} L ${adj2 * w} ${adj2 * h} L ${w} ${adj2 * h} L ${w} ${adj1 * h} L ${adj2 * w} ${adj1 * h} L ${adj2 * w} 0 Z`\n }\n break\n case 'teardrop':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj1 = 100000 * RATIO_EMUs_Points\n const cnsVal1 = adj1\n const cnsVal2 = 200000 * RATIO_EMUs_Points\n if (shapAdjst) {\n adj1 = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnsVal2) ? cnsVal2 : adj1\n const r2 = Math.sqrt(2)\n const tw = r2 * (w / 2)\n const th = r2 * (h / 2)\n const sw = (tw * a1) / cnsVal1\n const sh = (th * a1) / cnsVal1\n const rd45 = (45 * (Math.PI) / 180)\n const dx1 = sw * (Math.cos(rd45))\n const dy1 = sh * (Math.cos(rd45))\n const x1 = (w / 2) + dx1\n const y1 = (h / 2) - dy1\n const x2 = ((w / 2) + x1) / 2\n const y2 = ((h / 2) + y1) / 2\n pathData = `${shapeArc(w / 2, h / 2, w / 2, h / 2, 180, 270, false)} Q ${x2},0 ${x1},${y1} Q ${w},${y2} ${w},${h / 2} ${shapeArc(w / 2, h / 2, w / 2, h / 2, 0, 90, false).replace('M', 'L')} ${shapeArc(w / 2, h / 2, w / 2, h / 2, 90, 180, false).replace('M', 'L')} z`\n }\n break\n case 'plaque':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj1 = 16667 * RATIO_EMUs_Points\n const cnsVal1 = 50000 * RATIO_EMUs_Points\n const cnsVal2 = 100000 * RATIO_EMUs_Points\n if (shapAdjst) {\n adj1 = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnsVal1) ? cnsVal1 : adj1\n const x1 = a1 * (Math.min(w, h)) / cnsVal2\n const x2 = w - x1\n const y2 = h - x1\n pathData = `M 0,${x1} ${shapeArc(0, 0, x1, x1, 90, 0, false).replace('M', 'L')} L ${x2},0 ${shapeArc(w, 0, x1, x1, 180, 90, false).replace('M', 'L')} L ${w},${y2} ${shapeArc(w, h, x1, x1, 270, 180, false).replace('M', 'L')} L ${x1},${h} ${shapeArc(0, h, x1, x1, 0, -90, false).replace('M', 'L')} z`\n }\n break\n case 'sun':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n const refr = RATIO_EMUs_Points\n let adj1 = 25000 * refr\n const cnstVal1 = 12500 * refr\n const cnstVal2 = 46875 * refr\n if (shapAdjst) {\n adj1 = parseInt(shapAdjst.substring(4)) * refr\n }\n const a1 = (adj1 < cnstVal1) ? cnstVal1 : (adj1 > cnstVal2) ? cnstVal2 : adj1\n const cnstVa3 = 50000 * refr\n const cnstVa4 = 100000 * refr\n const g0 = cnstVa3 - a1\n const g1 = g0 * 30274 / 32768\n const g2 = g0 * 12540 / 32768\n const g5 = cnstVa3 - g1\n const g6 = cnstVa3 - g2\n const g10 = g5 * 3 / 4\n const g11 = g6 * 3 / 4\n const g12 = g10 + 3662 * refr\n const g13 = g11 + 36620 * refr\n const g14 = g11 + 12500 * refr\n const g15 = cnstVa4 - g10\n const g16 = cnstVa4 - g12\n const g17 = cnstVa4 - g13\n const g18 = cnstVa4 - g14\n const ox1 = w * 18436 / 21600\n const oy1 = h * 3163 / 21600\n const ox2 = w * 3163 / 21600\n const oy2 = h * 18436 / 21600\n const x10 = w * g10 / cnstVa4\n const x12 = w * g12 / cnstVa4\n const x13 = w * g13 / cnstVa4\n const x14 = w * g14 / cnstVa4\n const x15 = w * g15 / cnstVa4\n const x16 = w * g16 / cnstVa4\n const x17 = w * g17 / cnstVa4\n const x18 = w * g18 / cnstVa4\n const x19 = w * a1 / cnstVa4\n const wR = w * g0 / cnstVa4\n const hR = h * g0 / cnstVa4\n const y10 = h * g10 / cnstVa4\n const y12 = h * g12 / cnstVa4\n const y13 = h * g13 / cnstVa4\n const y14 = h * g14 / cnstVa4\n const y15 = h * g15 / cnstVa4\n const y16 = h * g16 / cnstVa4\n const y17 = h * g17 / cnstVa4\n const y18 = h * g18 / cnstVa4\n pathData = `M ${w},${h / 2} L ${x15},${y18} L ${x15},${y14} z M ${ox1},${oy1} L ${x16},${y17} L ${x13},${y12} z M ${w / 2},0 L ${x18},${y10} L ${x14},${y10} z M ${ox2},${oy1} L ${x17},${y12} L ${x12},${y17} z M 0,${h / 2} L ${x10},${y14} L ${x10},${y18} z M ${ox2},${oy2} L ${x12},${y13} L ${x17},${y16} z M ${w / 2},${h} L ${x14},${y15} L ${x18},${y15} z M ${ox1},${oy2} L ${x13},${y16} L ${x16},${y13} z M ${x19},${h / 2} ${shapeArc(w / 2, h / 2, wR, hR, 180, 540, false).replace('M', 'L')} z`\n }\n break\n case 'heart':\n {\n const dx1 = w * 49 / 48\n const dx2 = w * 10 / 48\n const x1 = w / 2 - dx1\n const x2 = w / 2 - dx2\n const x3 = w / 2 + dx2\n const x4 = w / 2 + dx1\n const y1 = -h / 3\n pathData = `M ${w / 2},${h / 4} C ${x3},${y1} ${x4},${h / 4} ${w / 2},${h} C ${x1},${h / 4} ${x2},${y1} ${w / 2},${h / 4} z`\n }\n break\n case 'lightningBolt':\n {\n const x1 = w * 5022 / 21600,\n x2 = w * 11050 / 21600,\n x3 = w * 8472 / 21600,\n x5 = w * 10012 / 21600,\n x6 = w * 14767 / 21600,\n x7 = w * 12222 / 21600,\n x8 = w * 12860 / 21600,\n x10 = w * 7602 / 21600,\n x11 = w * 16577 / 21600,\n y1 = h * 3890 / 21600,\n y2 = h * 6080 / 21600,\n y3 = h * 6797 / 21600,\n y5 = h * 12877 / 21600,\n y6 = h * 9705 / 21600,\n y7 = h * 12007 / 21600,\n y8 = h * 13987 / 21600,\n y9 = h * 8382 / 21600,\n y11 = h * 14915 / 21600\n pathData = `M ${x3},0 L ${x8},${y2} L ${x2},${y3} L ${x11},${y7} L ${x6},${y5} L ${w},${h} L ${x5},${y11} L ${x7},${y8} L ${x1},${y6} L ${x10},${y9} L 0,${y1} z`\n }\n break\n case 'cube':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n const refr = RATIO_EMUs_Points\n let adj = 25000 * refr\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * refr\n }\n const cnstVal2 = 100000 * refr\n const ss = Math.min(w, h)\n const a = (adj < 0) ? 0 : (adj > cnstVal2) ? cnstVal2 : adj\n const y1 = ss * a / cnstVal2\n const y4 = h - y1\n const x4 = w - y1\n pathData = `M 0,${y1} L ${y1},0 L ${w},0 L ${w},${y4} L ${x4},${h} L 0,${h} z M 0,${y1} L ${x4},${y1} M ${x4},${y1} L ${w},0 M ${x4},${y1} L ${x4},${h}`\n }\n break\n case 'bevel':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n const refr = RATIO_EMUs_Points\n let adj = 12500 * refr\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * refr\n }\n const cnstVal1 = 50000 * refr\n const cnstVal2 = 100000 * refr\n const ss = Math.min(w, h)\n const a = (adj < 0) ? 0 : (adj > cnstVal1) ? cnstVal1 : adj\n const x1 = ss * a / cnstVal2\n const x2 = w - x1\n const y2 = h - x1\n pathData = `M 0,0 L ${w},0 L ${w},${h} L 0,${h} z M ${x1},${x1} L ${x2},${x1} L ${x2},${y2} L ${x1},${y2} z M 0,0 L ${x1},${x1} M 0,${h} L ${x1},${y2} M ${w},0 L ${x2},${x1} M ${w},${h} L ${x2},${y2}`\n }\n break\n case 'foldedCorner':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n const refr = RATIO_EMUs_Points\n let adj = 16667 * refr\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * refr\n }\n const cnstVal1 = 50000 * refr\n const cnstVal2 = 100000 * refr\n const ss = Math.min(w, h)\n const a = (adj < 0) ? 0 : (adj > cnstVal1) ? cnstVal1 : adj\n const dy2 = ss * a / cnstVal2\n const dy1 = dy2 / 5\n const x1 = w - dy2\n const x2 = x1 + dy1\n const y2 = h - dy2\n const y1 = y2 + dy1\n pathData = `M ${x1},${h} L ${x2},${y1} L ${w},${y2} L ${x1},${h} L 0,${h} L 0,0 L ${w},0 L ${w},${y2}`\n }\n break\n case 'cloud':\n case 'cloudCallout':\n {\n const x0 = w * 3900 / 43200\n const y0 = h * 14370 / 43200\n const rX1 = w * 6753 / 43200,\n rY1 = h * 9190 / 43200,\n rX2 = w * 5333 / 43200,\n rY2 = h * 7267 / 43200,\n rX3 = w * 4365 / 43200,\n rY3 = h * 5945 / 43200,\n rX4 = w * 4857 / 43200,\n rY4 = h * 6595 / 43200,\n rY5 = h * 7273 / 43200,\n rX6 = w * 6775 / 43200,\n rY6 = h * 9220 / 43200,\n rX7 = w * 5785 / 43200,\n rY7 = h * 7867 / 43200,\n rX8 = w * 6752 / 43200,\n rY8 = h * 9215 / 43200,\n rX9 = w * 7720 / 43200,\n rY9 = h * 10543 / 43200,\n rX10 = w * 4360 / 43200,\n rY10 = h * 5918 / 43200,\n rX11 = w * 4345 / 43200\n const sA1 = -11429249 / 60000,\n wA1 = 7426832 / 60000,\n sA2 = -8646143 / 60000,\n wA2 = 5396714 / 60000,\n sA3 = -8748475 / 60000,\n wA3 = 5983381 / 60000,\n sA4 = -7859164 / 60000,\n wA4 = 7034504 / 60000,\n sA5 = -4722533 / 60000,\n wA5 = 6541615 / 60000,\n sA6 = -2776035 / 60000,\n wA6 = 7816140 / 60000,\n sA7 = 37501 / 60000,\n wA7 = 6842000 / 60000,\n sA8 = 1347096 / 60000,\n wA8 = 6910353 / 60000,\n sA9 = 3974558 / 60000,\n wA9 = 4542661 / 60000,\n sA10 = -16496525 / 60000,\n wA10 = 8804134 / 60000,\n sA11 = -14809710 / 60000,\n wA11 = 9151131 / 60000\n\n const getArc = (startX, startY, rX, rY, sA, wA) => {\n const cX = startX - rX * Math.cos(sA * Math.PI / 180)\n const cY = startY - rY * Math.sin(sA * Math.PI / 180)\n return shapeArc(cX, cY, rX, rY, sA, sA + wA, false).replace('M', 'L')\n }\n\n let cloudPath = `M ${x0},${y0}`\n let lastPoint = [x0, y0]\n const arcs = [\n [rX1, rY1, sA1, wA1],\n [rX2, rY2, sA2, wA2],\n [rX3, rY3, sA3, wA3],\n [rX4, rY4, sA4, wA4],\n [rX2, rY5, sA5, wA5],\n [rX6, rY6, sA6, wA6],\n [rX7, rY7, sA7, wA7],\n [rX8, rY8, sA8, wA8],\n [rX9, rY9, sA9, wA9],\n [rX10, rY10, sA10, wA10],\n [rX11, rY3, sA11, wA11]\n ]\n\n for (const arcParams of arcs) {\n const arcPath = getArc(lastPoint[0], lastPoint[1], ...arcParams)\n cloudPath += arcPath\n const lastL = arcPath.lastIndexOf('L')\n const coords = arcPath.substring(lastL + 1).split(' ')\n lastPoint = [parseFloat(coords[0]), parseFloat(coords[1])]\n }\n cloudPath += ' z'\n\n if (shapType === 'cloudCallout') {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n const refr = RATIO_EMUs_Points\n let adj1 = -20833 * refr\n let adj2 = 62500 * refr\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n }\n }\n }\n const cnstVal2 = 100000 * refr\n const ss = Math.min(w, h)\n const wd2 = w / 2,\n hd2 = h / 2\n const dxPos = w * adj1 / cnstVal2\n const dyPos = h * adj2 / cnstVal2\n const xPos = wd2 + dxPos\n const yPos = hd2 + dyPos\n const ht = hd2 * Math.cos(Math.atan(dyPos / dxPos))\n const wt = wd2 * Math.sin(Math.atan(dyPos / dxPos))\n const g2 = wd2 * Math.cos(Math.atan(wt / ht))\n const g3 = hd2 * Math.sin(Math.atan(wt / ht))\n const g4 = (adj1 >= 0) ? wd2 + g2 : wd2 - g2\n const g5 = (adj1 >= 0) ? hd2 + g3 : hd2 - g3\n const g6 = g4 - xPos\n const g7 = g5 - yPos\n const g8 = Math.sqrt(g6 * g6 + g7 * g7)\n const g9 = ss * 6600 / 21600\n const g10 = g8 - g9\n const g11 = g10 / 3\n const g12 = ss * 1800 / 21600\n const g13 = g11 + g12\n const g16 = (g13 * g6 / g8) + xPos\n const g17 = (g13 * g7 / g8) + yPos\n const g18 = ss * 4800 / 21600\n const g20 = g18 + (g11 * 2)\n const g23 = (g20 * g6 / g8) + xPos\n const g24 = (g20 * g7 / g8) + yPos\n const g25 = ss * 1200 / 21600\n const g26 = ss * 600 / 21600\n const x23 = xPos + g26\n const x24 = g16 + g25\n const x25 = g23 + g12\n const calloutPath = `${shapeArc(x23 - g26, yPos, g26, g26, 0, 360, true)} M ${x24},${g17} ${shapeArc(x24 - g25, g17, g25, g25, 0, 360, true).replace('M', 'L')} M ${x25},${g24} ${shapeArc(x25 - g12, g24, g12, g12, 0, 360, true).replace('M', 'L')}`\n cloudPath += calloutPath\n }\n pathData = cloudPath\n }\n break\n case 'smileyFace':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n const refr = RATIO_EMUs_Points\n let adj = 4653 * refr\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * refr\n }\n const cnstVal1 = 50000 * refr\n const cnstVal2 = 100000 * refr\n const cnstVal3 = 4653 * refr\n const wd2 = w / 2,\n hd2 = h / 2\n const a = (adj < -cnstVal3) ? -cnstVal3 : (adj > cnstVal3) ? cnstVal3 : adj\n const x2 = w * 6215 / 21600\n const x3 = w * 13135 / 21600\n const x4 = w * 16640 / 21600\n const y1 = h * 7570 / 21600\n const y3 = h * 16515 / 21600\n const dy2 = h * a / cnstVal2\n const y2 = y3 - dy2\n const y4 = y3 + dy2\n const dy3 = h * a / cnstVal1\n const y5 = y4 + dy3\n const wR = w * 1125 / 21600\n const hR = h * 1125 / 21600\n const cX1 = x2\n const cY1 = y1\n const cX2 = x3\n const x1_mouth = w * 4969 / 21699\n pathData = `${shapeArc(cX1, cY1, wR, hR, 0, 360, true)} ${shapeArc(cX2, cY1, wR, hR, 0, 360, true)} M ${x1_mouth},${y2} Q ${wd2},${y5} ${x4},${y2} Q ${wd2},${y5} ${x1_mouth},${y2} M 0,${hd2} ${shapeArc(wd2, hd2, wd2, hd2, 180, 540, false).replace('M', 'L')} z`\n }\n break\n case 'verticalScroll':\n case 'horizontalScroll':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n const refr = RATIO_EMUs_Points\n let adj = 12500 * refr\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * refr\n }\n const cnstVal1 = 25000 * refr\n const cnstVal2 = 100000 * refr\n const ss = Math.min(w, h)\n const t = 0,\n l = 0,\n b = h,\n r = w\n const a = (adj < 0) ? 0 : (adj > cnstVal1) ? cnstVal1 : adj\n const ch = ss * a / cnstVal2\n const ch2 = ch / 2\n const ch4 = ch / 4\n if (shapType === 'verticalScroll') {\n const x3 = ch + ch2\n const x4 = ch + ch\n const x6 = r - ch\n const x7 = r - ch2\n const x5 = x6 - ch2\n const y3 = b - ch\n const y4 = b - ch2\n pathData = `M ${ch},${y3} L ${ch},${ch2} ${shapeArc(x3, ch2, ch2, ch2, 180, 270, false).replace('M', 'L')} L ${x7},${t} ${shapeArc(x7, ch2, ch2, ch2, 270, 450, false).replace('M', 'L')} L ${x6},${ch} L ${x6},${y4} ${shapeArc(x5, y4, ch2, ch2, 0, 90, false).replace('M', 'L')} L ${ch2},${b} ${shapeArc(ch2, y4, ch2, ch2, 90, 270, false).replace('M', 'L')} z M ${x3},${t} ${shapeArc(x3, ch2, ch2, ch2, 270, 450, false).replace('M', 'L')} ${shapeArc(x3, x3 / 2, ch4, ch4, 90, 270, false).replace('M', 'L')} L ${x4},${ch2} M ${x6},${ch} L ${x3},${ch} M ${ch},${y4} ${shapeArc(ch2, y4, ch2, ch2, 0, 270, false).replace('M', 'L')} ${shapeArc(ch2, (y4 + y3) / 2, ch4, ch4, 270, 450, false).replace('M', 'L')} z M ${ch},${y4} L ${ch},${y3}`\n } \n else if (shapType === 'horizontalScroll') {\n const y3 = ch + ch2\n const y4 = ch + ch\n const y6 = b - ch\n const y7 = b - ch2\n const y5 = y6 - ch2\n const x3 = r - ch\n const x4 = r - ch2\n pathData = `M ${l},${y3} ${shapeArc(ch2, y3, ch2, ch2, 180, 270, false).replace('M', 'L')} L ${x3},${ch} L ${x3},${ch2} ${shapeArc(x4, ch2, ch2, ch2, 180, 360, false).replace('M', 'L')} L ${r},${y5} ${shapeArc(x4, y5, ch2, ch2, 0, 90, false).replace('M', 'L')} L ${ch},${y6} L ${ch},${y7} ${shapeArc(ch2, y7, ch2, ch2, 0, 180, false).replace('M', 'L')} z M ${x4},${ch} ${shapeArc(x4, ch2, ch2, ch2, 90, -180, false).replace('M', 'L')} ${shapeArc((x3 + x4) / 2, ch2, ch4, ch4, 180, 0, false).replace('M', 'L')} z M ${x4},${ch} L ${x3},${ch} M ${ch2},${y4} L ${ch2},${y3} ${shapeArc(y3 / 2, y3, ch4, ch4, 180, 360, false).replace('M', 'L')} ${shapeArc(ch2, y3, ch2, ch2, 0, 180, false).replace('M', 'L')} M ${ch},${y3} L ${ch},${y6}`\n }\n }\n break\n case 'wedgeEllipseCallout':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n const refr = RATIO_EMUs_Points\n let adj1 = -20833 * refr\n let adj2 = 62500 * refr\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n }\n }\n }\n const cnstVal1 = 100000 * RATIO_EMUs_Points\n const angVal1 = 11 * Math.PI / 180\n const vc = h / 2,\n hc = w / 2\n const dxPos = w * adj1 / cnstVal1\n const dyPos = h * adj2 / cnstVal1\n const xPos = hc + dxPos\n const yPos = vc + dyPos\n const pang = Math.atan2(dyPos * w, dxPos * h)\n const stAng = pang + angVal1\n const enAng = pang - angVal1\n const dx1 = hc * Math.cos(stAng)\n const dy1 = vc * Math.sin(stAng)\n const dx2 = hc * Math.cos(enAng)\n const dy2 = vc * Math.sin(enAng)\n const x1 = hc + dx1\n const y1 = vc + dy1\n const x2 = hc + dx2\n const y2 = vc + dy2\n pathData = `M ${x1},${y1} L ${xPos},${yPos} L ${x2},${y2} ${shapeArc(hc, vc, hc, vc, enAng * 180 / Math.PI, stAng * 180 / Math.PI, true).replace('M', 'L')}`\n }\n break\n case 'wedgeRectCallout':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n const refr = RATIO_EMUs_Points\n let adj1 = -20833 * refr\n let adj2 = 62500 * refr\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n }\n }\n }\n const cnstVal1 = 100000 * RATIO_EMUs_Points\n const vc = h / 2,\n hc = w / 2\n const dxPos = w * adj1 / cnstVal1\n const dyPos = h * adj2 / cnstVal1\n const xPos = hc + dxPos\n const yPos = vc + dyPos\n const dq = dxPos * h / w\n const dz = Math.abs(dyPos) - Math.abs(dq)\n const xg1 = (dxPos > 0) ? 7 : 2\n const xg2 = (dxPos > 0) ? 10 : 5\n const x1 = w * xg1 / 12\n const x2 = w * xg2 / 12\n const yg1 = (dyPos > 0) ? 7 : 2\n const yg2 = (dyPos > 0) ? 10 : 5\n const y1 = h * yg1 / 12\n const y2 = h * yg2 / 12\n const xl = (dz > 0) ? 0 : ((dxPos > 0) ? 0 : xPos)\n const xt = (dz > 0) ? ((dyPos > 0) ? x1 : xPos) : x1\n const xr = (dz > 0) ? w : ((dxPos > 0) ? xPos : w)\n const xb = (dz > 0) ? ((dyPos > 0) ? xPos : x1) : x1\n const yl = (dz > 0) ? y1 : ((dxPos > 0) ? y1 : yPos)\n const yt = (dz > 0) ? ((dyPos > 0) ? 0 : yPos) : 0\n const yr = (dz > 0) ? y1 : ((dxPos > 0) ? yPos : y1)\n const yb = (dz > 0) ? ((dyPos > 0) ? yPos : h) : h\n pathData = `M 0,0 L ${x1},0 L ${xt},${yt} L ${x2},0 L ${w},0 L ${w},${y1} L ${xr},${yr} L ${w},${y2} L ${w},${h} L ${x2},${h} L ${xb},${yb} L ${x1},${h} L 0,${h} L 0,${y2} L ${xl},${yl} L 0,${y1} z`\n }\n break\n case 'wedgeRoundRectCallout':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n const refr = RATIO_EMUs_Points\n let adj1 = -20833 * refr\n let adj2 = 62500 * refr\n let adj3 = 16667 * refr\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n } \n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n }\n }\n }\n const cnstVal1 = 100000 * RATIO_EMUs_Points\n const ss = Math.min(w, h)\n const vc = h / 2,\n hc = w / 2\n const dxPos = w * adj1 / cnstVal1\n const dyPos = h * adj2 / cnstVal1\n const xPos = hc + dxPos\n const yPos = vc + dyPos\n const dq = dxPos * h / w\n const dz = Math.abs(dyPos) - Math.abs(dq)\n const xg1 = (dxPos > 0) ? 7 : 2\n const xg2 = (dxPos > 0) ? 10 : 5\n const x1 = w * xg1 / 12\n const x2 = w * xg2 / 12\n const yg1 = (dyPos > 0) ? 7 : 2\n const yg2 = (dyPos > 0) ? 10 : 5\n const y1 = h * yg1 / 12\n const y2 = h * yg2 / 12\n const xl = (dz > 0) ? 0 : ((dxPos > 0) ? 0 : xPos)\n const xt = (dz > 0) ? ((dyPos > 0) ? x1 : xPos) : x1\n const xr = (dz > 0) ? w : ((dxPos > 0) ? xPos : w)\n const xb = (dz > 0) ? ((dyPos > 0) ? xPos : x1) : x1\n const yl = (dz > 0) ? y1 : ((dxPos > 0) ? y1 : yPos)\n const yt = (dz > 0) ? ((dyPos > 0) ? 0 : yPos) : 0\n const yr = (dz > 0) ? y1 : ((dxPos > 0) ? yPos : y1)\n const yb = (dz > 0) ? ((dyPos > 0) ? yPos : h) : h\n const u1 = ss * adj3 / cnstVal1\n const u2 = w - u1\n const v2 = h - u1\n pathData = `M 0,${u1} ${shapeArc(u1, u1, u1, u1, 180, 270, false).replace('M', 'L')} L ${x1},0 L ${xt},${yt} L ${x2},0 L ${u2},0 ${shapeArc(u2, u1, u1, u1, 270, 360, false).replace('M', 'L')} L ${w},${y1} L ${xr},${yr} L ${w},${y2} L ${w},${v2} ${shapeArc(u2, v2, u1, u1, 0, 90, false).replace('M', 'L')} L ${x2},${h} L ${xb},${yb} L ${x1},${h} L ${u1},${h} ${shapeArc(u1, v2, u1, u1, 90, 180, false).replace('M', 'L')} L 0,${y2} L ${xl},${yl} L 0,${y1} z`\n }\n break\n case 'accentBorderCallout1':\n case 'accentBorderCallout2':\n case 'accentBorderCallout3':\n case 'borderCallout1':\n case 'borderCallout2':\n case 'borderCallout3':\n case 'accentCallout1':\n case 'accentCallout2':\n case 'accentCallout3':\n case 'callout1':\n case 'callout2':\n case 'callout3':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n const refr = RATIO_EMUs_Points\n let adj1 = 18750 * refr\n let adj2 = -8333 * refr\n let adj3 = 18750 * refr\n let adj4 = -16667 * refr\n let adj5 = 100000 * refr\n let adj6 = -16667 * refr\n let adj7 = 112963 * refr\n let adj8 = -8333 * refr\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n }\n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n }\n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n }\n else if (sAdj_name === 'adj4') {\n adj4 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n }\n else if (sAdj_name === 'adj5') {\n adj5 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n }\n else if (sAdj_name === 'adj6') {\n adj6 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n }\n else if (sAdj_name === 'adj7') {\n adj7 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n }\n else if (sAdj_name === 'adj8') {\n adj8 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n }\n }\n }\n const cnstVal1 = 100000 * refr\n let x1, y1, x2, y2, x3, y3, x4, y4\n const baseRect = `M 0,0 L ${w},0 L ${w},${h} L 0,${h} z`\n switch (shapType) {\n case 'borderCallout1':\n case 'callout1':\n if (!shapAdjst_ary) {\n adj1 = 18750 * refr\n adj2 = -8333 * refr\n adj3 = 112500 * refr\n adj4 = -38333 * refr\n }\n y1 = h * adj1 / cnstVal1\n x1 = w * adj2 / cnstVal1\n y2 = h * adj3 / cnstVal1\n x2 = w * adj4 / cnstVal1\n pathData = `${baseRect} M ${x1},${y1} L ${x2},${y2}`\n break\n case 'borderCallout2':\n case 'callout2':\n if (!shapAdjst_ary) {\n adj1 = 18750 * refr\n adj2 = -8333 * refr\n adj3 = 18750 * refr\n adj4 = -16667 * refr\n adj5 = 112500 * refr\n adj6 = -46667 * refr\n }\n y1 = h * adj1 / cnstVal1\n x1 = w * adj2 / cnstVal1\n y2 = h * adj3 / cnstVal1\n x2 = w * adj4 / cnstVal1\n y3 = h * adj5 / cnstVal1\n x3 = w * adj6 / cnstVal1\n pathData = `${baseRect} M ${x1},${y1} L ${x2},${y2} L ${x3},${y3}`\n break\n case 'borderCallout3':\n case 'callout3':\n if (!shapAdjst_ary) {\n adj1 = 18750 * refr\n adj2 = -8333 * refr\n adj3 = 18750 * refr\n adj4 = -16667 * refr\n adj5 = 100000 * refr\n adj6 = -16667 * refr\n adj7 = 112963 * refr\n adj8 = -8333 * refr\n }\n y1 = h * adj1 / cnstVal1\n x1 = w * adj2 / cnstVal1\n y2 = h * adj3 / cnstVal1\n x2 = w * adj4 / cnstVal1\n y3 = h * adj5 / cnstVal1\n x3 = w * adj6 / cnstVal1\n y4 = h * adj7 / cnstVal1\n x4 = w * adj8 / cnstVal1\n pathData = `${baseRect} M ${x1},${y1} L ${x2},${y2} L ${x3},${y3} L ${x4},${y4}`\n break\n case 'accentBorderCallout1':\n case 'accentCallout1':\n if (!shapAdjst_ary) {\n adj1 = 18750 * refr\n adj2 = -8333 * refr\n adj3 = 112500 * refr\n adj4 = -38333 * refr\n }\n y1 = h * adj1 / cnstVal1\n x1 = w * adj2 / cnstVal1\n y2 = h * adj3 / cnstVal1\n x2 = w * adj4 / cnstVal1\n pathData = `${baseRect} M ${x1},${y1} L ${x2},${y2} M ${x1},0 L ${x1},${h}`\n break\n case 'accentBorderCallout2':\n case 'accentCallout2':\n if (!shapAdjst_ary) {\n adj1 = 18750 * refr\n adj2 = -8333 * refr\n adj3 = 18750 * refr\n adj4 = -16667 * refr\n adj5 = 112500 * refr\n adj6 = -46667 * refr\n }\n y1 = h * adj1 / cnstVal1\n x1 = w * adj2 / cnstVal1\n y2 = h * adj3 / cnstVal1\n x2 = w * adj4 / cnstVal1\n y3 = h * adj5 / cnstVal1\n x3 = w * adj6 / cnstVal1\n pathData = `${baseRect} M ${x1},${y1} L ${x2},${y2} L ${x3},${y3} M ${x1},0 L ${x1},${h}`\n break\n case 'accentBorderCallout3':\n case 'accentCallout3':\n if (!shapAdjst_ary) {\n adj1 = 18750 * refr\n adj2 = -8333 * refr\n adj3 = 18750 * refr\n adj4 = -16667 * refr\n adj5 = 100000 * refr\n adj6 = -16667 * refr\n adj7 = 112963 * refr\n adj8 = -8333 * refr\n }\n y1 = h * adj1 / cnstVal1\n x1 = w * adj2 / cnstVal1\n y2 = h * adj3 / cnstVal1\n x2 = w * adj4 / cnstVal1\n y3 = h * adj5 / cnstVal1\n x3 = w * adj6 / cnstVal1\n y4 = h * adj7 / cnstVal1\n x4 = w * adj8 / cnstVal1\n pathData = `${baseRect} M ${x1},${y1} L ${x2},${y2} L ${x3},${y3} L ${x4},${y4} M ${x1},0 L ${x1},${h}`\n break\n default:\n }\n }\n break\n case 'leftRightRibbon':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n const refr = RATIO_EMUs_Points\n let adj1 = 50000 * refr\n let adj2 = 50000 * refr\n let adj3 = 16667 * refr\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n } \n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n }\n }\n }\n const cnstVal1 = 33333 * refr\n const cnstVal2 = 100000 * refr\n const cnstVal3 = 200000 * refr\n const cnstVal4 = 400000 * refr\n const ss = Math.min(w, h)\n const hc = w / 2,\n vc = h / 2\n const a3 = (adj3 < 0) ? 0 : (adj3 > cnstVal1) ? cnstVal1 : adj3\n const maxAdj1 = cnstVal2 - a3\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const w1 = hc - (w / 32)\n const maxAdj2 = cnstVal2 * w1 / ss\n const a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2\n const x1 = ss * a2 / cnstVal2\n const x4 = w - x1\n const dy1 = h * a1 / cnstVal3\n const dy2 = h * a3 / -cnstVal3\n const ly1 = vc + dy2 - dy1\n const ry4 = vc + dy1 - dy2\n const ly2 = ly1 + dy1\n const ry3 = h - ly2\n const ly4 = ly2 * 2\n const ry2 = h - (ly4 - ly1)\n const hR = a3 * ss / cnstVal4\n const x2 = hc - (w / 32)\n const x3 = hc + (w / 32)\n const y1 = ly1 + hR\n const y2_arc = ry2 - hR\n pathData = `M 0,${ly2} L ${x1},0 L ${x1},${ly1} L ${hc},${ly1} ${shapeArc(hc, y1, w / 32, hR, 270, 450, false).replace('M', 'L')} ${shapeArc(hc, y2_arc, w / 32, hR, 270, 90, false).replace('M', 'L')} L ${x4},${ry2} L ${x4},${h - ly4} L ${w},${ry3} L ${x4},${h} L ${x4},${ry4} L ${hc},${ry4} ${shapeArc(hc, ry4 - hR, w / 32, hR, 90, 180, false).replace('M', 'L')} L ${x2},${ly4 - ly1} L ${x1},${ly4 - ly1} L ${x1},${ly4} z M ${x3},${y1} L ${x3},${ry2} M ${x2},${y2_arc} L ${x2},${ly4 - ly1}`\n }\n break\n case 'ribbon':\n case 'ribbon2':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 16667 * RATIO_EMUs_Points\n let adj2 = 50000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const cnstVal1 = 25000 * RATIO_EMUs_Points\n const cnstVal2 = 33333 * RATIO_EMUs_Points\n const cnstVal3 = 75000 * RATIO_EMUs_Points\n const cnstVal4 = 100000 * RATIO_EMUs_Points\n const cnstVal5 = 200000 * RATIO_EMUs_Points\n const cnstVal6 = 400000 * RATIO_EMUs_Points\n const hc = w / 2,\n t = 0,\n l = 0,\n b = h,\n r = w,\n wd8 = w / 8,\n wd32 = w / 32\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal2) ? cnstVal2 : adj1\n const a2 = (adj2 < cnstVal1) ? cnstVal1 : (adj2 > cnstVal3) ? cnstVal3 : adj2\n const x10 = r - wd8\n const dx2 = w * a2 / cnstVal5\n const x2 = hc - dx2\n const x9 = hc + dx2\n const x3 = x2 + wd32\n const x8 = x9 - wd32\n const x5 = x2 + wd8\n const x6 = x9 - wd8\n const x4 = x5 - wd32\n const x7 = x6 + wd32\n const hR = h * a1 / cnstVal6\n if (shapType === 'ribbon2') {\n const dy1 = h * a1 / cnstVal5\n const y1 = b - dy1\n const dy2 = h * a1 / cnstVal4\n const y2 = b - dy2\n const y4 = t + dy2\n const y3 = (y4 + b) / 2\n const y6 = b - hR\n const y7 = y1 - hR\n pathData = `M ${l},${b} L ${wd8},${y3} L ${l},${y4} L ${x2},${y4} L ${x2},${hR} ${shapeArc(x3, hR, wd32, hR, 180, 270, false).replace('M', 'L')} L ${x8},${t} ${shapeArc(x8, hR, wd32, hR, 270, 360, false).replace('M', 'L')} L ${x9},${y4} L ${r},${y4} L ${x10},${y3} L ${r},${b} L ${x7},${b} ${shapeArc(x7, y6, wd32, hR, 90, 270, false).replace('M', 'L')} L ${x8},${y1} ${shapeArc(x8, y7, wd32, hR, 90, -90, false).replace('M', 'L')} L ${x3},${y2} ${shapeArc(x3, y7, wd32, hR, 270, 90, false).replace('M', 'L')} L ${x4},${y1} ${shapeArc(x4, y6, wd32, hR, 270, 450, false).replace('M', 'L')} z M ${x5},${y2} L ${x5},${y6} M ${x6},${y6} L ${x6},${y2} M ${x2},${y7} L ${x2},${y4} M ${x9},${y4} L ${x9},${y7}`\n } \n else if (shapType === 'ribbon') {\n const y1 = h * a1 / cnstVal5\n const y2 = h * a1 / cnstVal4\n const y4 = b - y2\n const y3 = y4 / 2\n const y5 = b - hR\n const y6 = y2 - hR\n pathData = `M ${l},${t} L ${x4},${t} ${shapeArc(x4, hR, wd32, hR, 270, 450, false).replace('M', 'L')} L ${x3},${y1} ${shapeArc(x3, y6, wd32, hR, 270, 90, false).replace('M', 'L')} L ${x8},${y2} ${shapeArc(x8, y6, wd32, hR, 90, -90, false).replace('M', 'L')} L ${x7},${y1} ${shapeArc(x7, hR, wd32, hR, 90, 270, false).replace('M', 'L')} L ${r},${t} L ${x10},${y3} L ${r},${y4} L ${x9},${y4} L ${x9},${y5} ${shapeArc(x8, y5, wd32, hR, 0, 90, false).replace('M', 'L')} L ${x3},${b} ${shapeArc(x3, y5, wd32, hR, 90, 180, false).replace('M', 'L')} L ${x2},${y4} L ${l},${y4} L ${wd8},${y3} z M ${x5},${hR} L ${x5},${y2} M ${x6},${y2} L ${x6},${hR} M ${x2},${y4} L ${x2},${y6} M ${x9},${y6} L ${x9},${y4}`\n }\n }\n break\n case 'doubleWave':\n case 'wave':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = (shapType === 'doubleWave') ? 6250 * RATIO_EMUs_Points : 12500 * RATIO_EMUs_Points\n let adj2 = 0\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const cnstVal2 = -10000 * RATIO_EMUs_Points\n const cnstVal3 = 50000 * RATIO_EMUs_Points\n const cnstVal4 = 100000 * RATIO_EMUs_Points\n const l = 0,\n b = h,\n r = w\n if (shapType === 'doubleWave') {\n const cnstVal1 = 12500 * RATIO_EMUs_Points\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal1) ? cnstVal1 : adj1\n const a2 = (adj2 < cnstVal2) ? cnstVal2 : (adj2 > cnstVal4) ? cnstVal4 : adj2\n const y1 = h * a1 / cnstVal4\n const dy2 = y1 * 10 / 3\n const y2 = y1 - dy2\n const y3 = y1 + dy2\n const y4 = b - y1\n const y5 = y4 - dy2\n const y6 = y4 + dy2\n const of2 = w * a2 / cnstVal3\n const dx2 = (of2 > 0) ? 0 : of2\n const x2 = l - dx2\n const dx8 = (of2 > 0) ? of2 : 0\n const x8 = r - dx8\n const dx3 = (dx2 + x8) / 6\n const x3 = x2 + dx3\n const dx4 = (dx2 + x8) / 3\n const x4 = x2 + dx4\n const x5 = (x2 + x8) / 2\n const x6 = x5 + dx3\n const x7 = (x6 + x8) / 2\n const x9 = l + dx8\n const x15 = r + dx2\n const x10 = x9 + dx3\n const x11 = x9 + dx4\n const x12 = (x9 + x15) / 2\n const x13 = x12 + dx3\n const x14 = (x13 + x15) / 2\n pathData = `M ${x2},${y1} C ${x3},${y2} ${x4},${y3} ${x5},${y1} C ${x6},${y2} ${x7},${y3} ${x8},${y1} L ${x15},${y4} C ${x14},${y6} ${x13},${y5} ${x12},${y4} C ${x11},${y6} ${x10},${y5} ${x9},${y4} z`\n } \n else if (shapType === 'wave') {\n const cnstVal5 = 20000 * RATIO_EMUs_Points\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal5) ? cnstVal5 : adj1\n const a2 = (adj2 < cnstVal2) ? cnstVal2 : (adj2 > cnstVal4) ? cnstVal4 : adj2\n const y1 = h * a1 / cnstVal4\n const dy2 = y1 * 10 / 3\n const y2 = y1 - dy2\n const y3 = y1 + dy2\n const y4 = b - y1\n const y5 = y4 - dy2\n const y6 = y4 + dy2\n const of2 = w * a2 / cnstVal3\n const dx2 = (of2 > 0) ? 0 : of2\n const x2 = l - dx2\n const dx5 = (of2 > 0) ? of2 : 0\n const x5 = r - dx5\n const dx3 = (dx2 + x5) / 3\n const x3 = x2 + dx3\n const x4 = (x3 + x5) / 2\n const x6 = l + dx5\n const x10 = r + dx2\n const x7 = x6 + dx3\n const x8 = (x7 + x10) / 2\n pathData = `M ${x2},${y1} C ${x3},${y2} ${x4},${y3} ${x5},${y1} L ${x10},${y4} C ${x8},${y6} ${x7},${y5} ${x6},${y4} z`\n }\n }\n break\n case 'ellipseRibbon':\n case 'ellipseRibbon2':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 50000 * RATIO_EMUs_Points\n let adj3 = 12500 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const cnstVal1 = 25000 * RATIO_EMUs_Points\n const cnstVal3 = 75000 * RATIO_EMUs_Points\n const cnstVal4 = 100000 * RATIO_EMUs_Points\n const cnstVal5 = 200000 * RATIO_EMUs_Points\n const hc = w / 2,\n t = 0,\n l = 0,\n b = h,\n r = w,\n wd8 = w / 8\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal4) ? cnstVal4 : adj1\n const a2 = (adj2 < cnstVal1) ? cnstVal1 : (adj2 > cnstVal3) ? cnstVal3 : adj2\n const q10 = cnstVal4 - a1\n const minAdj3 = (a1 - (q10 / 2) > 0) ? a1 - (q10 / 2) : 0\n const a3 = (adj3 < minAdj3) ? minAdj3 : (adj3 > a1) ? a1 : adj3\n const dx2 = w * a2 / cnstVal5\n const x2 = hc - dx2\n const x3 = x2 + wd8\n const x4 = r - x3\n const x5 = r - x2\n const x6 = r - wd8\n const dy1 = h * a3 / cnstVal4\n const f1 = 4 * dy1 / w\n const q2 = x3 - (x3 * x3 / w)\n const cx1 = x3 / 2\n const cx2 = r - cx1\n const q1_h = h * a1 / cnstVal4\n const dy3 = q1_h - dy1\n const q4 = x2 - (x2 * x2 / w)\n const q5 = f1 * q4\n const rh = b - q1_h\n const q8 = dy1 * 14 / 16\n const cx4 = x2 / 2\n const q9 = f1 * cx4\n const cx5 = r - cx4\n if (shapType === 'ellipseRibbon') {\n const y1 = f1 * q2\n const cy1 = f1 * cx1\n const y3 = q5 + dy3\n const q6 = dy1 + dy3 - y3\n const cy3 = (q6 + dy1) + dy3\n const y2 = (q8 + rh) / 2\n const y5 = q5 + rh\n const y6 = y3 + rh\n const cy4 = q9 + rh\n const cy6 = cy3 + rh\n const y7 = y1 + dy3\n pathData = `M ${l},${t} Q ${cx1},${cy1} ${x3},${y1} L ${x2},${y3} Q ${hc},${cy3} ${x5},${y3} L ${x4},${y1} Q ${cx2},${cy1} ${r},${t} L ${x6},${y2} L ${r},${rh} Q ${cx5},${cy4} ${x5},${y5} L ${x5},${y6} Q ${hc},${cy6} ${x2},${y6} L ${x2},${y5} Q ${cx4},${cy4} ${l},${rh} L ${wd8},${y2} z M ${x2},${y5} L ${x2},${y3} M ${x5},${y3} L ${x5},${y5} M ${x3},${y1} L ${x3},${y7} M ${x4},${y7} L ${x4},${y1}`\n } \n else if (shapType === 'ellipseRibbon2') {\n const u1 = f1 * q2\n const y1 = b - u1\n const cu1 = f1 * cx1\n const cy1 = b - cu1\n const u3 = q5 + dy3\n const y3 = b - u3\n const q6 = dy1 + dy3 - u3\n const cu3 = (q6 + dy1) + dy3\n const cy3 = b - cu3\n const u2 = (q8 + rh) / 2\n const y2 = b - u2\n const u5 = q5 + rh\n const y5 = b - u5\n const u6 = u3 + rh\n const y6 = b - u6\n const cu4 = q9 + rh\n const cy4 = b - cu4\n const cu6 = cu3 + rh\n const cy6 = b - cu6\n const u7 = u1 + dy3\n const y7 = b - u7\n pathData = `M ${l},${b} L ${wd8},${y2} L ${l},${q1_h} Q ${cx4},${cy4} ${x2},${y5} L ${x2},${y6} Q ${hc},${cy6} ${x5},${y6} L ${x5},${y5} Q ${cx5},${cy4} ${r},${q1_h} L ${x6},${y2} L ${r},${b} Q ${cx2},${cy1} ${x4},${y1} L ${x5},${y3} Q ${hc},${cy3} ${x2},${y3} L ${x3},${y1} Q ${cx1},${cy1} ${l},${b} z M ${x2},${y3} L ${x2},${y5} M ${x5},${y5} L ${x5},${y3} M ${x3},${y7} L ${x3},${y1} M ${x4},${y1} L ${x4},${y7}`\n }\n }\n break\n case 'line':\n case 'straightConnector1':\n case 'bentConnector4':\n case 'bentConnector5':\n case 'curvedConnector2':\n case 'curvedConnector3':\n case 'curvedConnector4':\n case 'curvedConnector5':\n pathData = `M 0 0 L ${w} ${h}`\n break\n case 'rightArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let sAdj1_val = 0.25\n let sAdj2_val = 0.5\n if (shapAdjst_ary) {\n const max_sAdj2_const = w / h\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n sAdj1_val = 0.5 - (parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 200000)\n } \n else if (sAdj_name === 'adj2') {\n const sAdj2_val2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 100000\n sAdj2_val = 1 - (sAdj2_val2 / max_sAdj2_const)\n }\n }\n }\n pathData = `M ${w} ${h / 2} L ${sAdj2_val * w} 0 L ${sAdj2_val * w} ${sAdj1_val * h} L 0 ${sAdj1_val * h} L 0 ${(1 - sAdj1_val) * h} L ${sAdj2_val * w} ${(1 - sAdj1_val) * h} L ${sAdj2_val * w} ${h} Z`\n }\n break\n case 'leftArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let sAdj1_val = 0.25\n let sAdj2_val = 0.5\n if (shapAdjst_ary) {\n const max_sAdj2_const = w / h\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n sAdj1_val = 0.5 - (parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 200000)\n } \n else if (sAdj_name === 'adj2') {\n const sAdj2_val2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 100000\n sAdj2_val = sAdj2_val2 / max_sAdj2_const\n }\n }\n }\n pathData = `M 0 ${h / 2} L ${sAdj2_val * w} ${h} L ${sAdj2_val * w} ${(1 - sAdj1_val) * h} L ${w} ${(1 - sAdj1_val) * h} L ${w} ${sAdj1_val * h} L ${sAdj2_val * w} ${sAdj1_val * h} L ${sAdj2_val * w} 0 Z`\n }\n break\n case 'downArrow':\n case 'flowChartOffpageConnector':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let sAdj1_val = 0.25\n let sAdj2_val = 0.5\n if (shapAdjst_ary) {\n const max_sAdj2_const = h / w\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n sAdj1_val = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 200000\n } \n else if (sAdj_name === 'adj2') {\n const sAdj2_val2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 100000\n sAdj2_val = sAdj2_val2 / max_sAdj2_const\n }\n }\n }\n if (shapType === 'flowChartOffpageConnector') {\n sAdj1_val = 0.5\n sAdj2_val = 0.212\n }\n pathData = `M ${(0.5 - sAdj1_val) * w} 0 L ${(0.5 - sAdj1_val) * w} ${(1 - sAdj2_val) * h} L 0 ${(1 - sAdj2_val) * h} L ${w / 2} ${h} L ${w} ${(1 - sAdj2_val) * h} L ${(0.5 + sAdj1_val) * w} ${(1 - sAdj2_val) * h} L ${(0.5 + sAdj1_val) * w} 0 Z`\n }\n break\n case 'upArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let sAdj1_val = 0.25\n let sAdj2_val = 0.5\n if (shapAdjst_ary) {\n const max_sAdj2_const = h / w\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n sAdj1_val = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 200000\n } \n else if (sAdj_name === 'adj2') {\n const sAdj2_val2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 100000\n sAdj2_val = sAdj2_val2 / max_sAdj2_const\n }\n }\n }\n pathData = `M ${w / 2} 0 L 0 ${sAdj2_val * h} L ${(0.5 - sAdj1_val) * w} ${sAdj2_val * h} L ${(0.5 - sAdj1_val) * w} ${h} L ${(0.5 + sAdj1_val) * w} ${h} L ${(0.5 + sAdj1_val) * w} ${sAdj2_val * h} L ${w} ${sAdj2_val * h} Z`\n }\n break\n case 'leftRightArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let sAdj1_val = 0.25\n let sAdj2_val = 0.25\n if (shapAdjst_ary) {\n const max_sAdj2_const = w / h\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n sAdj1_val = 0.5 - (parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 200000)\n } \n else if (sAdj_name === 'adj2') {\n const sAdj2_val2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 100000\n sAdj2_val = sAdj2_val2 / max_sAdj2_const\n }\n }\n }\n pathData = `M 0 ${h / 2} L ${sAdj2_val * w} ${h} L ${sAdj2_val * w} ${(1 - sAdj1_val) * h} L ${(1 - sAdj2_val) * w} ${(1 - sAdj1_val) * h} L ${(1 - sAdj2_val) * w} ${h} L ${w} ${h / 2} L ${(1 - sAdj2_val) * w} 0 L ${(1 - sAdj2_val) * w} ${sAdj1_val * h} L ${sAdj2_val * w} ${sAdj1_val * h} L ${sAdj2_val * w} 0 Z`\n }\n break\n case 'upDownArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let sAdj1_val = 0.25\n let sAdj2_val = 0.25\n if (shapAdjst_ary) {\n const max_sAdj2_const = h / w\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n sAdj1_val = 0.5 - (parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 200000)\n } \n else if (sAdj_name === 'adj2') {\n const sAdj2_val2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 100000\n sAdj2_val = sAdj2_val2 / max_sAdj2_const\n }\n }\n }\n pathData = `M ${w / 2} 0 L 0 ${sAdj2_val * h} L ${sAdj1_val * w} ${sAdj2_val * h} L ${sAdj1_val * w} ${(1 - sAdj2_val) * h} L 0 ${(1 - sAdj2_val) * h} L ${w / 2} ${h} L ${w} ${(1 - sAdj2_val) * h} L ${(1 - sAdj1_val) * w} ${(1 - sAdj2_val) * h} L ${(1 - sAdj1_val) * w} ${sAdj2_val * h} L ${w} ${sAdj2_val * h} Z`\n }\n break\n case 'quadArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 22500 * RATIO_EMUs_Points\n let adj2 = 22500 * RATIO_EMUs_Points\n let adj3 = 22500 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const cnstVal3 = 200000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const vc = h / 2,\n hc = w / 2\n const minWH = Math.min(w, h)\n const a2 = (adj2 < 0) ? 0 : (adj2 > cnstVal1) ? cnstVal1 : adj2\n const maxAdj1 = 2 * a2\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const q1 = cnstVal2 - maxAdj1\n const maxAdj3 = q1 / 2\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const x1 = minWH * a3 / cnstVal2\n const dx2 = minWH * a2 / cnstVal2\n const x2 = hc - dx2\n const x5 = hc + dx2\n const dx3 = minWH * a1 / cnstVal3\n const x3 = hc - dx3\n const x4 = hc + dx3\n const x6 = w - x1\n const y2 = vc - dx2\n const y5 = vc + dx2\n const y3 = vc - dx3\n const y4 = vc + dx3\n const y6 = h - x1\n pathData = `M 0,${vc} L ${x1},${y2} L ${x1},${y3} L ${x3},${y3} L ${x3},${x1} L ${x2},${x1} L ${hc},0 L ${x5},${x1} L ${x4},${x1} L ${x4},${y3} L ${x6},${y3} L ${x6},${y2} L ${w},${vc} L ${x6},${y5} L ${x6},${y4} L ${x4},${y4} L ${x4},${y6} L ${x5},${y6} L ${hc},${h} L ${x2},${y6} L ${x3},${y6} L ${x3},${y4} L ${x1},${y4} L ${x1},${y5} z`\n }\n break\n case 'leftRightUpArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 25000 * RATIO_EMUs_Points\n let adj3 = 25000 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const cnstVal3 = 200000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const hc = w / 2\n const minWH = Math.min(w, h)\n const a2 = (adj2 < 0) ? 0 : (adj2 > cnstVal1) ? cnstVal1 : adj2\n const maxAdj1 = 2 * a2\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const q1 = cnstVal2 - maxAdj1\n const maxAdj3 = q1 / 2\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const x1 = minWH * a3 / cnstVal2\n const dx2 = minWH * a2 / cnstVal2\n const x2 = hc - dx2\n const x5 = hc + dx2\n const dx3 = minWH * a1 / cnstVal3\n const x3 = hc - dx3\n const x4 = hc + dx3\n const x6 = w - x1\n const dy2 = minWH * a2 / cnstVal1\n const y2 = h - dy2\n const y4 = h - dx2\n const y3 = y4 - dx3\n const y5 = y4 + dx3\n pathData = `M 0,${y4} L ${x1},${y2} L ${x1},${y3} L ${x3},${y3} L ${x3},${x1} L ${x2},${x1} L ${hc},0 L ${x5},${x1} L ${x4},${x1} L ${x4},${y3} L ${x6},${y3} L ${x6},${y2} L ${w},${y4} L ${x6},${h} L ${x6},${y5} L ${x1},${y5} L ${x1},${h} z`\n }\n break\n case 'leftUpArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 25000 * RATIO_EMUs_Points\n let adj3 = 25000 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const cnstVal3 = 200000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const minWH = Math.min(w, h)\n const a2 = (adj2 < 0) ? 0 : (adj2 > cnstVal1) ? cnstVal1 : adj2\n const maxAdj1 = 2 * a2\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const maxAdj3 = cnstVal2 - maxAdj1\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const x1 = minWH * a3 / cnstVal2\n const dx2 = minWH * a2 / cnstVal1\n const x2 = w - dx2\n const y2 = h - dx2\n const dx4 = minWH * a2 / cnstVal2\n const x4 = w - dx4\n const y4 = h - dx4\n const dx3 = minWH * a1 / cnstVal3\n const x3 = x4 - dx3\n const x5 = x4 + dx3\n const y3 = y4 - dx3\n const y5 = y4 + dx3\n pathData = `M 0,${y4} L ${x1},${y2} L ${x1},${y3} L ${x3},${y3} L ${x3},${x1} L ${x2},${x1} L ${x4},0 L ${w},${x1} L ${x5},${x1} L ${x5},${y5} L ${x1},${y5} L ${x1},${h} z`\n }\n break\n case 'bentUpArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 25000 * RATIO_EMUs_Points\n let adj3 = 25000 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const cnstVal3 = 200000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const minWH = Math.min(w, h)\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal1) ? cnstVal1 : adj1\n const a2 = (adj2 < 0) ? 0 : (adj2 > cnstVal1) ? cnstVal1 : adj2\n const a3 = (adj3 < 0) ? 0 : (adj3 > cnstVal1) ? cnstVal1 : adj3\n const y1 = minWH * a3 / cnstVal2\n const dx1 = minWH * a2 / cnstVal1\n const x1 = w - dx1\n const dx3 = minWH * a2 / cnstVal2\n const x3 = w - dx3\n const dx2 = minWH * a1 / cnstVal3\n const x2 = x3 - dx2\n const x4 = x3 + dx2\n const dy2 = minWH * a1 / cnstVal2\n const y2 = h - dy2\n pathData = `M 0,${y2} L ${x2},${y2} L ${x2},${y1} L ${x1},${y1} L ${x3},0 L ${w},${y1} L ${x4},${y1} L ${x4},${h} L 0,${h} z`\n }\n break\n case 'bentArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 25000 * RATIO_EMUs_Points\n let adj3 = 25000 * RATIO_EMUs_Points\n let adj4 = 43750 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj4') {\n adj4 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const minWH = Math.min(w, h)\n const a2 = (adj2 < 0) ? 0 : (adj2 > cnstVal1) ? cnstVal1 : adj2\n const maxAdj1 = 2 * a2\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const a3 = (adj3 < 0) ? 0 : (adj3 > cnstVal1) ? cnstVal1 : adj3\n const th = minWH * a1 / cnstVal2\n const aw2 = minWH * a2 / cnstVal2\n const th2 = th / 2\n const dh2 = aw2 - th2\n const ah = minWH * a3 / cnstVal2\n const bw = w - ah\n const bh = h - dh2\n const bs = (bw < bh) ? bw : bh\n const maxAdj4 = cnstVal2 * bs / minWH\n const a4 = (adj4 < 0) ? 0 : (adj4 > maxAdj4) ? maxAdj4 : adj4\n const bd = minWH * a4 / cnstVal2\n const bd3 = bd - th\n const bd2 = (bd3 > 0) ? bd3 : 0\n const x3 = th + bd2\n const x4 = w - ah\n const y3 = dh2 + th\n const y4 = y3 + dh2\n const y5 = dh2 + bd\n const y6 = y3 + bd2\n pathData = `M 0,${h} L 0,${y5} ${shapeArc(bd, y5, bd, bd, 180, 270, false).replace('M', 'L')} L ${x4},${dh2} L ${x4},0 L ${w},${aw2} L ${x4},${y4} L ${x4},${y3} L ${x3},${y3} ${shapeArc(x3, y6, bd2, bd2, 270, 180, false).replace('M', 'L')} L ${th},${h} z`\n }\n break\n case 'uturnArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 25000 * RATIO_EMUs_Points\n let adj3 = 25000 * RATIO_EMUs_Points\n let adj4 = 43750 * RATIO_EMUs_Points\n let adj5 = 75000 * RATIO_EMUs_Points\n const cnstVal1 = 25000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj4') {\n adj4 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj5') {\n adj5 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const minWH = Math.min(w, h)\n const a2 = (adj2 < 0) ? 0 : (adj2 > cnstVal1) ? cnstVal1 : adj2\n const maxAdj1 = 2 * a2\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const q2 = a1 * minWH / h\n const q3 = cnstVal2 - q2\n const maxAdj3 = q3 * h / minWH\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const q1 = a3 + a1\n const minAdj5 = q1 * minWH / h\n const a5 = (adj5 < minAdj5) ? minAdj5 : (adj5 > cnstVal2) ? cnstVal2 : adj5\n const th = minWH * a1 / cnstVal2\n const aw2 = minWH * a2 / cnstVal2\n const th2 = th / 2\n const dh2 = aw2 - th2\n const y5 = h * a5 / cnstVal2\n const ah = minWH * a3 / cnstVal2\n const y4 = y5 - ah\n const x9 = w - dh2\n const bw = x9 / 2\n const bs = (bw < y4) ? bw : y4\n const maxAdj4 = cnstVal2 * bs / minWH\n const a4 = (adj4 < 0) ? 0 : (adj4 > maxAdj4) ? maxAdj4 : adj4\n const bd = minWH * a4 / cnstVal2\n const bd3 = bd - th\n const bd2 = (bd3 > 0) ? bd3 : 0\n const x3 = th + bd2\n const x8 = w - aw2\n const x6 = x8 - aw2\n const x7 = x6 + dh2\n const x4 = x9 - bd\n const x5 = x7 - bd2\n pathData = `M 0,${h} L 0,${bd} ${shapeArc(bd, bd, bd, bd, 180, 270, false).replace('M', 'L')} L ${x4},0 ${shapeArc(x4, bd, bd, bd, 270, 360, false).replace('M', 'L')} L ${x9},${y4} L ${w},${y4} L ${x8},${y5} L ${x6},${y4} L ${x7},${y4} L ${x7},${x3} ${shapeArc(x5, x3, bd2, bd2, 0, -90, false).replace('M', 'L')} L ${x3},${th} ${shapeArc(x3, x3, bd2, bd2, 270, 180, false).replace('M', 'L')} L ${th},${h} z`\n }\n break\n case 'stripedRightArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 50000 * RATIO_EMUs_Points\n let adj2 = 50000 * RATIO_EMUs_Points\n const cnstVal1 = 100000 * RATIO_EMUs_Points\n const cnstVal2 = 200000 * RATIO_EMUs_Points\n const cnstVal3 = 84375 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const vc = h / 2\n const minWH = Math.min(w, h)\n const maxAdj2 = cnstVal3 * w / minWH\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal1) ? cnstVal1 : adj1\n const a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2\n const x4 = minWH * 5 / 32\n const dx5 = minWH * a2 / cnstVal1\n const x5 = w - dx5\n const dy1 = h * a1 / cnstVal2\n const y1 = vc - dy1\n const y2 = vc + dy1\n const ssd8 = minWH / 8,\n ssd16 = minWH / 16,\n ssd32 = minWH / 32\n pathData = `M 0,${y1} L ${ssd32},${y1} L ${ssd32},${y2} L 0,${y2} z M ${ssd16},${y1} L ${ssd8},${y1} L ${ssd8},${y2} L ${ssd16},${y2} z M ${x4},${y1} L ${x5},${y1} L ${x5},0 L ${w},${vc} L ${x5},${h} L ${x5},${y2} L ${x4},${y2} z`\n }\n break\n case 'notchedRightArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 50000 * RATIO_EMUs_Points\n let adj2 = 50000 * RATIO_EMUs_Points\n const cnstVal1 = 100000 * RATIO_EMUs_Points\n const cnstVal2 = 200000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const vc = h / 2,\n hd2 = vc\n const minWH = Math.min(w, h)\n const maxAdj2 = cnstVal1 * w / minWH\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal1) ? cnstVal1 : adj1\n const a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2\n const dx2 = minWH * a2 / cnstVal1\n const x2 = w - dx2\n const dy1 = h * a1 / cnstVal2\n const y1 = vc - dy1\n const y2 = vc + dy1\n const x1 = dy1 * dx2 / hd2\n pathData = `M 0,${y1} L ${x2},${y1} L ${x2},0 L ${w},${vc} L ${x2},${h} L ${x2},${y2} L 0,${y2} L ${x1},${vc} z`\n }\n break\n case 'homePlate':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj = 50000 * RATIO_EMUs_Points\n const cnstVal1 = 100000 * RATIO_EMUs_Points\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n const vc = h / 2\n const minWH = Math.min(w, h)\n const maxAdj = cnstVal1 * w / minWH\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n const dx1 = minWH * a / cnstVal1\n const x1 = w - dx1\n pathData = `M 0,0 L ${x1},0 L ${w},${vc} L ${x1},${h} L 0,${h} z`\n }\n break\n case 'chevron':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj = 50000 * RATIO_EMUs_Points\n const cnstVal1 = 100000 * RATIO_EMUs_Points\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n const vc = h / 2\n const minWH = Math.min(w, h)\n const maxAdj = cnstVal1 * w / minWH\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n const x1 = minWH * a / cnstVal1\n const x2 = w - x1\n pathData = `M 0,0 L ${x2},0 L ${w},${vc} L ${x2},${h} L 0,${h} L ${x1},${vc} z`\n }\n break\n case 'rightArrowCallout':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 25000 * RATIO_EMUs_Points\n let adj3 = 25000 * RATIO_EMUs_Points\n let adj4 = 64977 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const cnstVal3 = 200000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj4') {\n adj4 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const vc = h / 2,\n r = w,\n b = h,\n l = 0,\n t = 0\n const ss = Math.min(w, h)\n const maxAdj2 = cnstVal1 * h / ss\n const a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2\n const maxAdj1 = a2 * 2\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const maxAdj3 = cnstVal2 * w / ss\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const q2 = a3 * ss / w\n const maxAdj4 = cnstVal2 - q2\n const a4 = (adj4 < 0) ? 0 : (adj4 > maxAdj4) ? maxAdj4 : adj4\n const dy1 = ss * a2 / cnstVal2\n const dy2 = ss * a1 / cnstVal3\n const y1 = vc - dy1\n const y2 = vc - dy2\n const y3 = vc + dy2\n const y4 = vc + dy1\n const dx3 = ss * a3 / cnstVal2\n const x3 = r - dx3\n const x2 = w * a4 / cnstVal2\n pathData = `M ${l},${t} L ${x2},${t} L ${x2},${y2} L ${x3},${y2} L ${x3},${y1} L ${r},${vc} L ${x3},${y4} L ${x3},${y3} L ${x2},${y3} L ${x2},${b} L ${l},${b} z`\n }\n break\n case 'downArrowCallout':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 25000 * RATIO_EMUs_Points\n let adj3 = 25000 * RATIO_EMUs_Points\n let adj4 = 64977 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const cnstVal3 = 200000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj4') {\n adj4 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const hc = w / 2,\n r = w,\n b = h,\n l = 0,\n t = 0\n const ss = Math.min(w, h)\n const maxAdj2 = cnstVal1 * w / ss\n const a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2\n const maxAdj1 = a2 * 2\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const maxAdj3 = cnstVal2 * h / ss\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const q2 = a3 * ss / h\n const maxAdj4 = cnstVal2 - q2\n const a4 = (adj4 < 0) ? 0 : (adj4 > maxAdj4) ? maxAdj4 : adj4\n const dx1 = ss * a2 / cnstVal2\n const dx2 = ss * a1 / cnstVal3\n const x1 = hc - dx1\n const x2 = hc - dx2\n const x3 = hc + dx2\n const x4 = hc + dx1\n const dy3 = ss * a3 / cnstVal2\n const y3 = b - dy3\n const y2 = h * a4 / cnstVal2\n pathData = `M ${l},${t} L ${r},${t} L ${r},${y2} L ${x3},${y2} L ${x3},${y3} L ${x4},${y3} L ${hc},${b} L ${x1},${y3} L ${x2},${y3} L ${x2},${y2} L ${l},${y2} z`\n }\n break\n case 'leftArrowCallout':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 25000 * RATIO_EMUs_Points\n let adj3 = 25000 * RATIO_EMUs_Points\n let adj4 = 64977 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const cnstVal3 = 200000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj4') {\n adj4 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const vc = h / 2,\n r = w,\n b = h,\n l = 0,\n t = 0\n const ss = Math.min(w, h)\n const maxAdj2 = cnstVal1 * h / ss\n const a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2\n const maxAdj1 = a2 * 2\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const maxAdj3 = cnstVal2 * w / ss\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const q2 = a3 * ss / w\n const maxAdj4 = cnstVal2 - q2\n const a4 = (adj4 < 0) ? 0 : (adj4 > maxAdj4) ? maxAdj4 : adj4\n const dy1 = ss * a2 / cnstVal2\n const dy2 = ss * a1 / cnstVal3\n const y1 = vc - dy1\n const y2 = vc - dy2\n const y3 = vc + dy2\n const y4 = vc + dy1\n const x1 = ss * a3 / cnstVal2\n const dx2 = w * a4 / cnstVal2\n const x2 = r - dx2\n pathData = `M ${l},${vc} L ${x1},${y1} L ${x1},${y2} L ${x2},${y2} L ${x2},${t} L ${r},${t} L ${r},${b} L ${x2},${b} L ${x2},${y3} L ${x1},${y3} L ${x1},${y4} z`\n }\n break\n case 'upArrowCallout':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 25000 * RATIO_EMUs_Points\n let adj3 = 25000 * RATIO_EMUs_Points\n let adj4 = 64977 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const cnstVal3 = 200000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj4') {\n adj4 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const hc = w / 2,\n r = w,\n b = h,\n l = 0,\n t = 0\n const ss = Math.min(w, h)\n const maxAdj2 = cnstVal1 * w / ss\n const a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2\n const maxAdj1 = a2 * 2\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const maxAdj3 = cnstVal2 * h / ss\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const q2 = a3 * ss / h\n const maxAdj4 = cnstVal2 - q2\n const a4 = (adj4 < 0) ? 0 : (adj4 > maxAdj4) ? maxAdj4 : adj4\n const dx1 = ss * a2 / cnstVal2\n const dx2 = ss * a1 / cnstVal3\n const x1 = hc - dx1\n const x2 = hc - dx2\n const x3 = hc + dx2\n const x4 = hc + dx1\n const y1 = ss * a3 / cnstVal2\n const dy2 = h * a4 / cnstVal2\n const y2 = b - dy2\n pathData = `M ${l},${y2} L ${x2},${y2} L ${x2},${y1} L ${x1},${y1} L ${hc},${t} L ${x4},${y1} L ${x3},${y1} L ${x3},${y2} L ${r},${y2} L ${r},${b} L ${l},${b} z`\n }\n break\n case 'leftRightArrowCallout':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 25000 * RATIO_EMUs_Points\n let adj3 = 25000 * RATIO_EMUs_Points\n let adj4 = 48123 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const cnstVal3 = 200000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj4') {\n adj4 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const vc = h / 2,\n hc = w / 2,\n r = w,\n b = h,\n l = 0,\n t = 0\n const ss = Math.min(w, h)\n const maxAdj2 = cnstVal1 * h / ss\n const a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2\n const maxAdj1 = a2 * 2\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const maxAdj3 = cnstVal1 * w / ss\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const q2 = a3 * ss / (w / 2)\n const maxAdj4 = cnstVal2 - q2\n const a4 = (adj4 < 0) ? 0 : (adj4 > maxAdj4) ? maxAdj4 : adj4\n const dy1 = ss * a2 / cnstVal2\n const dy2 = ss * a1 / cnstVal3\n const y1 = vc - dy1\n const y2 = vc - dy2\n const y3 = vc + dy2\n const y4 = vc + dy1\n const x1 = ss * a3 / cnstVal2\n const x4 = r - x1\n const dx2 = w * a4 / cnstVal3\n const x2 = hc - dx2\n const x3 = hc + dx2\n pathData = `M ${l},${vc} L ${x1},${y1} L ${x1},${y2} L ${x2},${y2} L ${x2},${t} L ${x3},${t} L ${x3},${y2} L ${x4},${y2} L ${x4},${y1} L ${r},${vc} L ${x4},${y4} L ${x4},${y3} L ${x3},${y3} L ${x3},${b} L ${x2},${b} L ${x2},${y3} L ${x1},${y3} L ${x1},${y4} z`\n }\n break\n case 'quadArrowCallout':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 18515 * RATIO_EMUs_Points\n let adj2 = 18515 * RATIO_EMUs_Points\n let adj3 = 18515 * RATIO_EMUs_Points\n let adj4 = 48123 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const cnstVal3 = 200000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj4') {\n adj4 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const vc = h / 2,\n hc = w / 2,\n r = w,\n b = h,\n l = 0,\n t = 0\n const ss = Math.min(w, h)\n const a2 = (adj2 < 0) ? 0 : (adj2 > cnstVal1) ? cnstVal1 : adj2\n const maxAdj1 = a2 * 2\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const maxAdj3 = cnstVal1 - a2\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const q2 = a3 * 2\n const maxAdj4 = cnstVal2 - q2\n const a4 = (adj4 < a1) ? a1 : (adj4 > maxAdj4) ? maxAdj4 : adj4\n const dx2 = ss * a2 / cnstVal2\n const dx3 = ss * a1 / cnstVal3\n const ah = ss * a3 / cnstVal2\n const dx1 = w * a4 / cnstVal3\n const dy1 = h * a4 / cnstVal3\n const x8 = r - ah\n const x2 = hc - dx1\n const x7 = hc + dx1\n const x3 = hc - dx2\n const x6 = hc + dx2\n const x4 = hc - dx3\n const x5 = hc + dx3\n const y8 = b - ah\n const y2 = vc - dy1\n const y7 = vc + dy1\n const y3 = vc - dx2\n const y6 = vc + dx2\n const y4 = vc - dx3\n const y5 = vc + dx3\n pathData = `M ${l},${vc} L ${ah},${y3} L ${ah},${y4} L ${x2},${y4} L ${x2},${y2} L ${x4},${y2} L ${x4},${ah} L ${x3},${ah} L ${hc},${t} L ${x6},${ah} L ${x5},${ah} L ${x5},${y2} L ${x7},${y2} L ${x7},${y4} L ${x8},${y4} L ${x8},${y3} L ${r},${vc} L ${x8},${y6} L ${x8},${y5} L ${x7},${y5} L ${x7},${y7} L ${x5},${y7} L ${x5},${y8} L ${x6},${y8} L ${hc},${b} L ${x3},${y8} L ${x4},${y8} L ${x4},${y7} L ${x2},${y7} L ${x2},${y5} L ${ah},${y5} L ${ah},${y6} z`\n }\n break\n case 'curvedDownArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 50000 * RATIO_EMUs_Points\n let adj3 = 25000 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const wd2 = w / 2,\n r = w,\n b = h,\n t = 0,\n c3d4 = 270,\n cd2 = 180,\n cd4 = 90\n const ss = Math.min(w, h)\n const maxAdj2 = cnstVal1 * w / ss\n const a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal2) ? cnstVal2 : adj1\n const th = ss * a1 / cnstVal2\n const aw = ss * a2 / cnstVal2\n const q1 = (th + aw) / 4\n const wR = wd2 - q1\n const q7 = wR * 2\n const q11 = Math.sqrt(q7 * q7 - th * th)\n const idy = q11 * h / q7\n const maxAdj3 = cnstVal2 * idy / ss\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const ah = ss * a3 / cnstVal2\n const x3 = wR + th\n const q5 = Math.sqrt(h * h - ah * ah)\n const dx = q5 * wR / h\n const x5 = wR + dx\n const x7 = x3 + dx\n const dh = (aw - th) / 2\n const x4 = x5 - dh\n const x8 = x7 + dh\n const x6 = r - (aw / 2)\n const y1 = b - ah\n const swAng = Math.atan(dx / ah)\n const swAngDeg = swAng * 180 / Math.PI\n const mswAng = -swAngDeg\n const dang2 = Math.atan((th / 2) / idy)\n const dang2Deg = dang2 * 180 / Math.PI\n const stAng = c3d4 + swAngDeg\n const stAng2 = c3d4 - dang2Deg\n const swAng2 = dang2Deg - cd4\n const swAng3 = cd4 + dang2Deg\n pathData = `M ${x6},${b} L ${x4},${y1} L ${x5},${y1} ${shapeArc(wR, h, wR, h, stAng, (stAng + mswAng), false).replace('M', 'L')} L ${x3},${t} ${shapeArc(x3, h, wR, h, c3d4, (c3d4 + swAngDeg), false).replace('M', 'L')} L ${x5 + th},${y1} L ${x8},${y1} z M ${x3},${t} ${shapeArc(x3, h, wR, h, stAng2, (stAng2 + swAng2), false).replace('M', 'L')} ${shapeArc(wR, h, wR, h, cd2, (cd2 + swAng3), false).replace('M', 'L')}`\n }\n break\n case 'curvedLeftArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 50000 * RATIO_EMUs_Points\n let adj3 = 25000 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const hd2 = h / 2,\n r = w,\n b = h,\n l = 0,\n t = 0,\n c3d4 = 270,\n cd4 = 90\n const ss = Math.min(w, h)\n const maxAdj2 = cnstVal1 * h / ss\n const a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2\n const a1 = (adj1 < 0) ? 0 : (adj1 > a2) ? a2 : adj1\n const th = ss * a1 / cnstVal2\n const aw = ss * a2 / cnstVal2\n const q1 = (th + aw) / 4\n const hR = hd2 - q1\n const q7 = hR * 2\n const q11 = Math.sqrt(q7 * q7 - th * th)\n const iDx = q11 * w / q7\n const maxAdj3 = cnstVal2 * iDx / ss\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const ah = ss * a3 / cnstVal2\n const y3 = hR + th\n const q5 = Math.sqrt(w * w - ah * ah)\n const dy = q5 * hR / w\n const y5 = hR + dy\n const y7 = y3 + dy\n const dh = (aw - th) / 2\n const y4 = y5 - dh\n const y8 = y7 + dh\n const y6 = b - (aw / 2)\n const x1 = l + ah\n const swAng = Math.atan(dy / ah)\n const dang2 = Math.atan((th / 2) / iDx)\n const swAng2 = dang2 - swAng\n const swAngDg = swAng * 180 / Math.PI\n const swAng2Dg = swAng2 * 180 / Math.PI\n pathData = `M ${r},${y3} ${shapeArc(l, hR, w, hR, 0, -cd4, false).replace('M', 'L')} L ${l},${t} ${shapeArc(l, y3, w, hR, c3d4, (c3d4 + cd4), false).replace('M', 'L')} L ${r},${y3} ${shapeArc(l, y3, w, hR, 0, swAngDg, false).replace('M', 'L')} L ${x1},${y7} L ${x1},${y8} L ${l},${y6} L ${x1},${y4} L ${x1},${y5} ${shapeArc(l, hR, w, hR, swAngDg, (swAngDg + swAng2Dg), false).replace('M', 'L')} ${shapeArc(l, hR, w, hR, 0, -cd4, false).replace('M', 'L')} ${shapeArc(l, y3, w, hR, c3d4, (c3d4 + cd4), false).replace('M', 'L')}`\n }\n break\n case 'curvedRightArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 50000 * RATIO_EMUs_Points\n let adj3 = 25000 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const hd2 = h / 2,\n r = w,\n b = h,\n l = 0,\n cd2 = 180,\n cd4 = 90,\n c3d4 = 270\n const ss = Math.min(w, h)\n const maxAdj2 = cnstVal1 * h / ss\n const a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2\n const a1 = (adj1 < 0) ? 0 : (adj1 > a2) ? a2 : adj1\n const th = ss * a1 / cnstVal2\n const aw = ss * a2 / cnstVal2\n const q1 = (th + aw) / 4\n const hR = hd2 - q1\n const q7 = hR * 2\n const q11 = Math.sqrt(q7 * q7 - th * th)\n const iDx = q11 * w / q7\n const maxAdj3 = cnstVal2 * iDx / ss\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const ah = ss * a3 / cnstVal2\n const y3 = hR + th\n const q5 = Math.sqrt(w * w - ah * ah)\n const dy = q5 * hR / w\n const y5 = hR + dy\n const y7 = y3 + dy\n const dh = (aw - th) / 2\n const y4 = y5 - dh\n const y8 = y7 + dh\n const y6 = b - (aw / 2)\n const x1 = r - ah\n const swAng = Math.atan(dy / ah)\n const stAng = Math.PI - swAng\n const mswAng = -swAng\n const dang2 = Math.atan((th / 2) / iDx)\n const swAng2 = dang2 - Math.PI / 2\n const stAngDg = stAng * 180 / Math.PI\n const mswAngDg = mswAng * 180 / Math.PI\n const swAngDg = swAng * 180 / Math.PI\n const swAng2dg = swAng2 * 180 / Math.PI\n pathData = `M ${l},${hR} ${shapeArc(w, hR, w, hR, cd2, cd2 + mswAngDg, false).replace('M', 'L')} L ${x1},${y5} L ${x1},${y4} L ${r},${y6} L ${x1},${y8} L ${x1},${y7} ${shapeArc(w, y3, w, hR, stAngDg, stAngDg + swAngDg, false).replace('M', 'L')} L ${l},${hR} ${shapeArc(w, hR, w, hR, cd2, cd2 + cd4, false).replace('M', 'L')} L ${r},${th} ${shapeArc(w, y3, w, hR, c3d4, c3d4 + swAng2dg, false).replace('M', 'L')}`\n }\n break\n case 'curvedUpArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 50000 * RATIO_EMUs_Points\n let adj3 = 25000 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const wd2 = w / 2,\n r = w,\n b = h,\n t = 0,\n cd2 = 180,\n cd4 = 90\n const ss = Math.min(w, h)\n const maxAdj2 = cnstVal1 * w / ss\n const a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal2) ? cnstVal2 : adj1\n const th = ss * a1 / cnstVal2\n const aw = ss * a2 / cnstVal2\n const q1 = (th + aw) / 4\n const wR = wd2 - q1\n const q7 = wR * 2\n const q11 = Math.sqrt(q7 * q7 - th * th)\n const idy = q11 * h / q7\n const maxAdj3 = cnstVal2 * idy / ss\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const ah = ss * a3 / cnstVal2\n const x3 = wR + th\n const q5 = Math.sqrt(h * h - ah * ah)\n const dx = q5 * wR / h\n const x5 = wR + dx\n const x7 = x3 + dx\n const dh = (aw - th) / 2\n const x4 = x5 - dh\n const x8 = x7 + dh\n const x6 = r - (aw / 2)\n const y1 = t + ah\n const swAng = Math.atan(dx / ah)\n const dang2 = Math.atan((th / 2) / idy)\n const swAng2 = dang2 - swAng\n const stAng3 = Math.PI / 2 - swAng\n const stAng2 = Math.PI / 2 - dang2\n const stAng2dg = stAng2 * 180 / Math.PI\n const swAng2dg = swAng2 * 180 / Math.PI\n const stAng3dg = stAng3 * 180 / Math.PI\n const swAngDg = swAng * 180 / Math.PI\n pathData = `${shapeArc(wR, 0, wR, h, stAng2dg, stAng2dg + swAng2dg, false)} L ${x5},${y1} L ${x4},${y1} L ${x6},${t} L ${x8},${y1} L ${x7},${y1} ${shapeArc(x3, 0, wR, h, stAng3dg, stAng3dg + swAngDg, false).replace('M', 'L')} L ${wR},${b} ${shapeArc(wR, 0, wR, h, cd4, cd2, false).replace('M', 'L')} L ${th},${t} ${shapeArc(x3, 0, wR, h, cd2, cd4, false).replace('M', 'L')}`\n }\n break\n case 'mathDivide':\n case 'mathEqual':\n case 'mathMinus':\n case 'mathMultiply':\n case 'mathNotEqual':\n case 'mathPlus':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1, adj2, adj3\n if (shapAdjst_ary) {\n if (Array.isArray(shapAdjst_ary)) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4))\n }\n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4))\n }\n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4))\n }\n }\n } \n else {\n adj1 = parseInt(getTextByPathList(shapAdjst_ary, ['attrs', 'fmla']).substring(4))\n }\n }\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const cnstVal3 = 200000 * RATIO_EMUs_Points\n const hc = w / 2,\n vc = h / 2,\n hd2 = h / 2\n if (shapType === 'mathNotEqual') {\n if (adj1 === undefined) adj1 = 23520\n if (adj2 === undefined) adj2 = 110 * 60000\n if (adj3 === undefined) adj3 = 11760\n adj1 *= RATIO_EMUs_Points\n adj2 = (adj2 / 60000) * Math.PI / 180\n adj3 *= RATIO_EMUs_Points\n const angVal1 = 70 * Math.PI / 180,\n angVal2 = 110 * Math.PI / 180\n const cnstVal4 = 73490 * RATIO_EMUs_Points\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal1) ? cnstVal1 : adj1\n const crAng = (adj2 < angVal1) ? angVal1 : (adj2 > angVal2) ? angVal2 : adj2\n const maxAdj3 = cnstVal2 - (a1 * 2)\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const dy1 = h * a1 / cnstVal2\n const dy2 = h * a3 / cnstVal3\n const dx1 = w * cnstVal4 / cnstVal3\n const x1 = hc - dx1\n const x8 = hc + dx1\n const y2 = vc - dy2\n const y3 = vc + dy2\n const y1 = y2 - dy1\n const y4 = y3 + dy1\n const cadj2 = crAng - Math.PI / 2\n const xadj2 = hd2 * Math.tan(cadj2)\n const len = Math.sqrt(xadj2 * xadj2 + hd2 * hd2)\n const bhw = len * dy1 / hd2\n const bhw2 = bhw / 2\n const x7 = hc + xadj2 - bhw2\n const dx67 = xadj2 * y1 / hd2\n const x6 = x7 - dx67\n const dx57 = xadj2 * y2 / hd2\n const x5 = x7 - dx57\n const dx47 = xadj2 * y3 / hd2\n const x4 = x7 - dx47\n const dx37 = xadj2 * y4 / hd2\n const x3 = x7 - dx37\n const rx6 = x6 + bhw\n const rx5 = x5 + bhw\n const rx4 = x4 + bhw\n const rx3 = x3 + bhw\n const dx7 = dy1 * hd2 / len\n const rxt = x7 + dx7\n const lxt = (x7 + bhw) - dx7\n const rx = (cadj2 > 0) ? rxt : (x7 + bhw)\n const lx = (cadj2 > 0) ? x7 : lxt\n const dy3 = dy1 * xadj2 / len\n const ry = (cadj2 > 0) ? dy3 : 0\n const ly = (cadj2 > 0) ? 0 : -dy3\n const dlx = w - rx\n const drx = w - lx\n const dly = h - ry\n const dry = h - ly\n pathData = `M ${x1},${y1} L ${x6},${y1} L ${lx},${ly} L ${rx},${ry} L ${rx6},${y1} L ${x8},${y1} L ${x8},${y2} L ${rx5},${y2} L ${rx4},${y3} L ${x8},${y3} L ${x8},${y4} L ${rx3},${y4} L ${drx},${dry} L ${dlx},${dly} L ${x3},${y4} L ${x1},${y4} L ${x1},${y3} L ${x4},${y3} L ${x5},${y2} L ${x1},${y2} z`\n } \n else if (shapType === 'mathDivide') {\n if (adj1 === undefined) adj1 = 23520\n if (adj2 === undefined) adj2 = 5880\n if (adj3 === undefined) adj3 = 11760\n adj1 *= RATIO_EMUs_Points\n adj2 *= RATIO_EMUs_Points\n adj3 *= RATIO_EMUs_Points\n const cnstVal4 = 1000 * RATIO_EMUs_Points\n const cnstVal5 = 36745 * RATIO_EMUs_Points\n const cnstVal6 = 73490 * RATIO_EMUs_Points\n const a1 = (adj1 < cnstVal4) ? cnstVal4 : (adj1 > cnstVal5) ? cnstVal5 : adj1\n const ma3h = (cnstVal6 - a1) / 4\n const ma3w = cnstVal5 * w / h\n const maxAdj3 = (ma3h < ma3w) ? ma3h : ma3w\n const a3 = (adj3 < cnstVal4) ? cnstVal4 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const maxAdj2 = cnstVal6 - (4 * a3) - a1\n const a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2\n const dy1 = h * a1 / cnstVal3\n const yg = h * a2 / cnstVal2\n const rad = h * a3 / cnstVal2\n const dx1 = w * cnstVal6 / cnstVal3\n const y3 = vc - dy1\n const y4 = vc + dy1\n const y2 = y3 - (yg + rad)\n const y1 = y2 - rad\n const y5 = h - y1\n const x1 = hc - dx1\n const x3 = hc + dx1\n pathData = `M ${hc},${y1} A ${rad},${rad} 0 1,0 ${hc},${y1 + 2 * rad} A ${rad},${rad} 0 1,0 ${hc},${y1} z M ${hc},${y5} A ${rad},${rad} 0 1,1 ${hc},${y5 - 2 * rad} A ${rad},${rad} 0 1,1 ${hc},${y5} z M ${x1},${y3} L ${x3},${y3} L ${x3},${y4} L ${x1},${y4} z`\n } \n else if (shapType === 'mathEqual') {\n if (adj1 === undefined) adj1 = 23520\n if (adj2 === undefined) adj2 = 11760\n adj1 *= RATIO_EMUs_Points\n adj2 *= RATIO_EMUs_Points\n const cnstVal5 = 36745 * RATIO_EMUs_Points\n const cnstVal6 = 73490 * RATIO_EMUs_Points\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal5) ? cnstVal5 : adj1\n const mAdj2 = cnstVal2 - (a1 * 2)\n const a2 = (adj2 < 0) ? 0 : (adj2 > mAdj2) ? mAdj2 : adj2\n const dy1 = h * a1 / cnstVal2\n const dy2 = h * a2 / cnstVal3\n const dx1 = w * cnstVal6 / cnstVal3\n const y2 = vc - dy2\n const y3 = vc + dy2\n const y1 = y2 - dy1\n const y4 = y3 + dy1\n const x1 = hc - dx1\n const x2 = hc + dx1\n pathData = `M ${x1},${y1} L ${x2},${y1} L ${x2},${y2} L ${x1},${y2} z M ${x1},${y3} L ${x2},${y3} L ${x2},${y4} L ${x1},${y4} z`\n } \n else if (shapType === 'mathMinus') {\n if (adj1 === undefined) adj1 = 23520\n adj1 *= RATIO_EMUs_Points\n const cnstVal6 = 73490 * RATIO_EMUs_Points\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal2) ? cnstVal2 : adj1\n const dy1 = h * a1 / cnstVal3\n const dx1 = w * cnstVal6 / cnstVal3\n const y1 = vc - dy1\n const y2 = vc + dy1\n const x1 = hc - dx1\n const x2 = hc + dx1\n pathData = `M ${x1},${y1} L ${x2},${y1} L ${x2},${y2} L ${x1},${y2} z`\n } \n else if (shapType === 'mathMultiply') {\n if (adj1 === undefined) adj1 = 23520\n adj1 *= RATIO_EMUs_Points\n const cnstVal6 = 51965 * RATIO_EMUs_Points\n const ss = Math.min(w, h)\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal6) ? cnstVal6 : adj1\n const th = ss * a1 / cnstVal2\n const a = Math.atan(h / w)\n const sa = Math.sin(a)\n const ca = Math.cos(a)\n const ta = Math.tan(a)\n const dl = Math.sqrt(w * w + h * h)\n const lM = dl - (dl * cnstVal6 / cnstVal2)\n const xM = ca * lM / 2\n const yM = sa * lM / 2\n const dxAM = sa * th / 2\n const dyAM = ca * th / 2\n const xA = xM - dxAM\n const yA = yM + dyAM\n const xB = xM + dxAM\n const yB = yM - dyAM\n const yC = (hc - xB) * ta + yB\n const xD = w - xB\n const xE = w - xA\n const xF = xE - ((vc - yA) / ta)\n const xL = xA + ((vc - yA) / ta)\n const yG = h - yA\n const yH = h - yB\n const yI = h - yC\n pathData = `M ${xA},${yA} L ${xB},${yB} L ${hc},${yC} L ${xD},${yB} L ${xE},${yA} L ${xF},${vc} L ${xE},${yG} L ${xD},${yH} L ${hc},${yI} L ${xB},${yH} L ${xA},${yG} L ${xL},${vc} z`\n } \n else if (shapType === 'mathPlus') {\n if (adj1 === undefined) adj1 = 23520\n adj1 *= RATIO_EMUs_Points\n const cnstVal6 = 73490 * RATIO_EMUs_Points\n const ss = Math.min(w, h)\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal6) ? cnstVal6 : adj1\n const dx1 = w * cnstVal6 / cnstVal3\n const dy1 = h * cnstVal6 / cnstVal3\n const dx2 = ss * a1 / cnstVal3\n const x1 = hc - dx1\n const x2 = hc - dx2\n const x3 = hc + dx2\n const x4 = hc + dx1\n const y1 = vc - dy1\n const y2 = vc - dx2\n const y3 = vc + dx2\n const y4 = vc + dy1\n pathData = `M ${x1},${y2} L ${x2},${y2} L ${x2},${y1} L ${x3},${y1} L ${x3},${y2} L ${x4},${y2} L ${x4},${y3} L ${x3},${y3} L ${x3},${y4} L ${x2},${y4} L ${x2},${y3} L ${x1},${y3} z`\n }\n }\n break\n case 'can':\n case 'flowChartMagneticDisk':\n case 'flowChartMagneticDrum':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj = 25000 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 200000 * RATIO_EMUs_Points\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n if (shapType === 'flowChartMagneticDisk' || shapType === 'flowChartMagneticDrum') {\n adj = 50000 * RATIO_EMUs_Points\n }\n const ss = Math.min(w, h)\n const maxAdj = cnstVal1 * h / ss\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n const y1 = ss * a / cnstVal2\n const y3 = h - y1\n const cd2 = 180,\n wd2 = w / 2\n let dVal = `${shapeArc(wd2, y1, wd2, y1, 0, cd2, false)} ${shapeArc(wd2, y1, wd2, y1, cd2, cd2 + cd2, false).replace('M', 'L')} L ${w},${y3} ${shapeArc(wd2, y3, wd2, y1, 0, cd2, false).replace('M', 'L')} L 0,${y1}`\n\n if (shapType === 'flowChartMagneticDrum') {\n dVal = dVal.replace(/([MLQC])\\s*([-\\d.e]+)\\s*([-\\d.e]+)/gi, (match, command, x, y) => {\n const newX = w / 2 - (parseFloat(y) - h / 2)\n const newY = h / 2 + (parseFloat(x) - w / 2)\n return `${command}${newX} ${newY}`\n }).replace(/([MLQC])\\s*([-\\d.e]+)\\s*([-\\d.e]+)\\s*([-\\d.e]+)\\s*([-\\d.e]+)/gi, (match, command, c1x, c1y, x, y) => {\n const newC1X = w / 2 - (parseFloat(c1y) - h / 2)\n const newC1Y = h / 2 + (parseFloat(c1x) - w / 2)\n const newX = w / 2 - (parseFloat(y) - h / 2)\n const newY = h / 2 + (parseFloat(x) - w / 2)\n return `${command}${newC1X} ${newC1Y} ${newX} ${newY}`\n })\n }\n pathData = dVal\n }\n break\n case 'swooshArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n const refr = RATIO_EMUs_Points\n let adj1 = 25000 * refr\n let adj2 = 16667 * refr\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n }\n }\n }\n const cnstVal1 = 1 * refr\n const cnstVal2 = 70000 * refr\n const cnstVal3 = 75000 * refr\n const cnstVal4 = 100000 * refr\n const ss = Math.min(w, h)\n const ssd8 = ss / 8\n const hd6 = h / 6\n const a1 = (adj1 < cnstVal1) ? cnstVal1 : (adj1 > cnstVal3) ? cnstVal3 : adj1\n const maxAdj2 = cnstVal2 * w / ss\n const a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2\n const ad1 = h * a1 / cnstVal4\n const ad2 = ss * a2 / cnstVal4\n const xB = w - ad2\n const yB = ssd8\n const alfa = (Math.PI / 2) / 14\n const dx0 = ssd8 * Math.tan(alfa)\n const xC = xB - dx0\n const dx1 = ad1 * Math.tan(alfa)\n const yF = yB + ad1\n const xF = xB + dx1\n const xE = xF + dx0\n const yE = yF + ssd8\n const dy22 = yE / 2\n const dy3 = h / 20\n const yD = dy22 - dy3\n const yP1 = hd6 + (hd6)\n const xP1 = w / 6\n const yP2 = yF + (hd6 / 2)\n const xP2 = w / 4\n pathData = `M 0,${h} Q ${xP1},${yP1} ${xB},${yB} L ${xC},0 L ${w},${yD} L ${xE},${yE} L ${xF},${yF} Q ${xP2},${yP2} 0,${h} z`\n }\n break\n case 'circularArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 12500 * RATIO_EMUs_Points\n let adj2 = (1142319 / 60000) * Math.PI / 180\n let adj3 = (20457681 / 60000) * Math.PI / 180\n let adj4 = (10800000 / 60000) * Math.PI / 180\n let adj5 = 12500 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj2') {\n adj2 = (parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 60000) * Math.PI / 180\n }\n else if (sAdj_name === 'adj3') {\n adj3 = (parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 60000) * Math.PI / 180\n }\n else if (sAdj_name === 'adj4') {\n adj4 = (parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 60000) * Math.PI / 180\n }\n else if (sAdj_name === 'adj5') {\n adj5 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const hc = w / 2,\n vc = h / 2,\n wd2 = w / 2,\n hd2 = h / 2\n const ss = Math.min(w, h)\n const cnstVal1 = 25000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const rdAngVal1 = (1 / 60000) * Math.PI / 180\n const rdAngVal2 = (21599999 / 60000) * Math.PI / 180\n const rdAngVal3 = 2 * Math.PI\n const a5 = (adj5 < 0) ? 0 : (adj5 > cnstVal1) ? cnstVal1 : adj5\n const maxAdj1 = a5 * 2\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const enAng = (adj3 < rdAngVal1) ? rdAngVal1 : (adj3 > rdAngVal2) ? rdAngVal2 : adj3\n const stAng = (adj4 < 0) ? 0 : (adj4 > rdAngVal2) ? rdAngVal2 : adj4\n const th = ss * a1 / cnstVal2\n const thh = ss * a5 / cnstVal2\n const th2 = th / 2\n const rw1 = wd2 + th2 - thh\n const rh1 = hd2 + th2 - thh\n const rw2 = rw1 - th\n const rh2 = rh1 - th\n const rw3 = rw2 + th2\n const rh3 = rh2 + th2\n const wtH = rw3 * Math.sin(enAng)\n const htH = rh3 * Math.cos(enAng)\n const dxH = rw3 * Math.cos(Math.atan2(wtH, htH))\n const dyH = rh3 * Math.sin(Math.atan2(wtH, htH))\n const xH = hc + dxH\n const yH = vc + dyH\n const rI = Math.min(rw2, rh2)\n const u8 = 1 - (((dxH * dxH - rI * rI) * (dyH * dyH - rI * rI)) / (dxH * dxH * dyH * dyH))\n const u9 = Math.sqrt(u8)\n const u12 = (1 + u9) / (((dxH * dxH - rI * rI) / dxH) / dyH)\n const u15 = Math.atan2(u12, 1) > 0 ? Math.atan2(u12, 1) : Math.atan2(u12, 1) + rdAngVal3\n const u18 = (u15 - enAng > 0) ? u15 - enAng : u15 - enAng + rdAngVal3\n const u21 = (u18 - Math.PI > 0) ? u18 - rdAngVal3 : u18\n const maxAng = Math.abs(u21)\n const aAng = (adj2 < 0) ? 0 : (adj2 > maxAng) ? maxAng : adj2\n const ptAng = enAng + aAng\n const wtA = rw3 * Math.sin(ptAng)\n const htA = rh3 * Math.cos(ptAng)\n const dxA = rw3 * Math.cos(Math.atan2(wtA, htA))\n const dyA = rh3 * Math.sin(Math.atan2(wtA, htA))\n const xA = hc + dxA\n const yA = vc + dyA\n const dxG = thh * Math.cos(ptAng)\n const dyG = thh * Math.sin(ptAng)\n const xG = xH + dxG\n const yG = yH + dyG\n const dxB = thh * Math.cos(ptAng)\n const dyB = thh * Math.sin(ptAng)\n const xB = xH - dxB\n const yB = yH - dyB\n const sx1 = xB - hc\n const sy1 = yB - vc\n const sx2 = xG - hc\n const sy2 = yG - vc\n const rO = Math.min(rw1, rh1)\n const x1O = sx1 * rO / rw1\n const y1O = sy1 * rO / rh1\n const x2O = sx2 * rO / rw1\n const y2O = sy2 * rO / rh1\n const dxO = x2O - x1O\n const dyO = y2O - y1O\n const dO = Math.sqrt(dxO * dxO + dyO * dyO)\n const DO = x1O * y2O - x2O * y1O\n const sdelO = Math.sqrt(Math.max(0, rO * rO * dO * dO - DO * DO))\n const sdyO = (dyO * -1 > 0) ? -1 : 1\n const dxF1 = (DO * dyO + sdyO * dxO * sdelO) / (dO * dO)\n const dxF2 = (DO * dyO - sdyO * dxO * sdelO) / (dO * dO)\n const dyF1 = (-DO * dxO + Math.abs(dyO) * sdelO) / (dO * dO)\n const dyF2 = (-DO * dxO - Math.abs(dyO) * sdelO) / (dO * dO)\n const q22 = Math.sqrt((x2O - dxF2) ** 2 + (y2O - dyF2) ** 2) - Math.sqrt((x2O - dxF1) ** 2 + (y2O - dyF1) ** 2)\n const dxF = (q22 > 0) ? dxF1 : dxF2\n const dyF = (q22 > 0) ? dyF1 : dyF2\n const xF = hc + (dxF * rw1 / rO)\n const yF = vc + (dyF * rh1 / rO)\n const x1I = sx1 * rI / rw2\n const y1I = sy1 * rI / rh2\n const x2I = sx2 * rI / rw2\n const y2I = sy2 * rI / rh2\n const dxI = x2I - x1I\n const dyI = y2I - y1I\n const dI = Math.sqrt(dxI * dxI + dyI * dyI)\n const DI = x1I * y2I - x2I * y1I\n const sdelI = Math.sqrt(Math.max(0, rI * rI * dI * dI - DI * DI))\n const dxC1 = (DI * dyI + sdyO * dxI * sdelI) / (dI * dI)\n const dxC2 = (DI * dyI - sdyO * dxI * sdelI) / (dI * dI)\n const dyC1 = (-DI * dxI + Math.abs(dyI) * sdelI) / (dI * dI)\n const dyC2 = (-DI * dxI - Math.abs(dyI) * sdelI) / (dI * dI)\n const v22 = Math.sqrt((x1I - dxC2) ** 2 + (y1I - dyC2) ** 2) - Math.sqrt((x1I - dxC1) ** 2 + (y1I - dyC1) ** 2)\n const dxC = (v22 > 0) ? dxC1 : dxC2\n const dyC = (v22 > 0) ? dyC1 : dyC2\n const xC = hc + (dxC * rw2 / rI)\n const yC = vc + (dyC * rh2 / rI)\n const ist0 = Math.atan2(dyC * rh2 / rI, dxC * rw2 / rI)\n const istAng = (ist0 > 0) ? ist0 : ist0 + rdAngVal3\n const isw1 = stAng - istAng\n const iswAng = (isw1 > 0) ? isw1 - rdAngVal3 : isw1\n const p5 = Math.sqrt((xF - xC) ** 2 + (yF - yC) ** 2) / 2 - thh\n const xGp = (p5 > 0) ? xF : xG\n const yGp = (p5 > 0) ? yF : yG\n const xBp = (p5 > 0) ? xC : xB\n const yBp = (p5 > 0) ? yC : yB\n const en0 = Math.atan2((yF - vc), (xF - hc))\n const en2 = (en0 > 0) ? en0 : en0 + rdAngVal3\n const sw0 = en2 - stAng\n const swAng = (sw0 > 0) ? sw0 : sw0 + rdAngVal3\n const strtAng = stAng * 180 / Math.PI\n const endAngVal = strtAng + (swAng * 180 / Math.PI)\n const stiAng = istAng * 180 / Math.PI\n const ediAng = stiAng + (iswAng * 180 / Math.PI)\n pathData = `${shapeArc(w / 2, h / 2, rw1, rh1, strtAng, endAngVal, false)} L ${xGp},${yGp} L ${xA},${yA} L ${xBp},${yBp} L ${xC},${yC} ${shapeArc(w / 2, h / 2, rw2, rh2, stiAng, ediAng, false).replace('M', 'L')} z`\n }\n break\n case 'leftCircularArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 12500 * RATIO_EMUs_Points\n let adj2 = (-1142319 / 60000) * Math.PI / 180\n let adj3 = (1142319 / 60000) * Math.PI / 180\n let adj4 = (10800000 / 60000) * Math.PI / 180\n let adj5 = 12500 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj2') {\n adj2 = (parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 60000) * Math.PI / 180\n }\n else if (sAdj_name === 'adj3') {\n adj3 = (parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 60000) * Math.PI / 180\n }\n else if (sAdj_name === 'adj4') {\n adj4 = (parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 60000) * Math.PI / 180\n }\n else if (sAdj_name === 'adj5') {\n adj5 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const hc = w / 2,\n vc = h / 2,\n wd2 = w / 2,\n hd2 = h / 2\n const ss = Math.min(w, h)\n const cnstVal1 = 25000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const rdAngVal1 = (1 / 60000) * Math.PI / 180\n const rdAngVal2 = (21599999 / 60000) * Math.PI / 180\n const rdAngVal3 = 2 * Math.PI\n const a5 = (adj5 < 0) ? 0 : (adj5 > cnstVal1) ? cnstVal1 : adj5\n const maxAdj1 = a5 * 2\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const enAng = (adj3 < rdAngVal1) ? rdAngVal1 : (adj3 > rdAngVal2) ? rdAngVal2 : adj3\n const stAng = (adj4 < 0) ? 0 : (adj4 > rdAngVal2) ? rdAngVal2 : adj4\n const th = ss * a1 / cnstVal2\n const thh = ss * a5 / cnstVal2\n const th2 = th / 2\n const rw1 = wd2 + th2 - thh\n const rh1 = hd2 + th2 - thh\n const rw2 = rw1 - th\n const rh2 = rh1 - th\n const rw3 = rw2 + th2\n const rh3 = rh2 + th2\n const dxH = rw3 * Math.cos(enAng)\n const dyH = rh3 * Math.sin(enAng)\n const xH = hc + dxH\n const yH = vc + dyH\n const rI = Math.min(rw2, rh2)\n const u8 = 1 - (((dxH * dxH - rI * rI) * (dyH * dyH - rI * rI)) / (dxH * dxH * dyH * dyH))\n const u9 = Math.sqrt(u8)\n const u12 = (1 + u9) / (((dxH * dxH - rI * rI) / dxH) / dyH)\n const u15 = Math.atan2(u12, 1) > 0 ? Math.atan2(u12, 1) : Math.atan2(u12, 1) + rdAngVal3\n const u18 = (u15 - enAng > 0) ? u15 - enAng : u15 - enAng + rdAngVal3\n const u21 = (u18 - Math.PI > 0) ? u18 - rdAngVal3 : u18\n const minAng = -Math.abs(u21)\n const aAng = (adj2 < minAng) ? minAng : (adj2 > 0) ? 0 : adj2\n const ptAng = enAng + aAng\n const dxA = rw3 * Math.cos(ptAng)\n const dyA = rh3 * Math.sin(ptAng)\n const xA = hc + dxA\n const yA = vc + dyA\n const dxE = rw1 * Math.cos(stAng)\n const dyE = rh1 * Math.sin(stAng)\n const xE = hc + dxE\n const yE = vc + dyE\n const dxD = rw2 * Math.cos(stAng)\n const dyD = rh2 * Math.sin(stAng)\n const xD = hc + dxD\n const yD = vc + dyD\n const dxG = thh * Math.cos(ptAng)\n const dyG = thh * Math.sin(ptAng)\n const xG = xH + dxG\n const yG = yH + dyG\n const dxB = thh * Math.cos(ptAng)\n const dyB = thh * Math.sin(ptAng)\n const xB = xH - dxB\n const yB = yH - dyB\n const sx1 = xB - hc\n const sy1 = yB - vc\n const sx2 = xG - hc\n const sy2 = yG - vc\n const rO = Math.min(rw1, rh1)\n const x1O = sx1 * rO / rw1\n const y1O = sy1 * rO / rh1\n const x2O = sx2 * rO / rw1\n const y2O = sy2 * rO / rh1\n const dxO = x2O - x1O\n const dyO = y2O - y1O\n const dO = Math.sqrt(dxO * dxO + dyO * dyO)\n const DO = x1O * y2O - x2O * y1O\n const sdelO = Math.sqrt(Math.max(0, rO * rO * dO * dO - DO * DO))\n const sdyO = (dyO * -1 > 0) ? -1 : 1\n const dxF1 = (DO * dyO + sdyO * dxO * sdelO) / (dO * dO)\n const dxF2 = (DO * dyO - sdyO * dxO * sdelO) / (dO * dO)\n const dyF1 = (-DO * dxO + Math.abs(dyO) * sdelO) / (dO * dO)\n const dyF2 = (-DO * dxO - Math.abs(dyO) * sdelO) / (dO * dO)\n const q22 = Math.sqrt((x2O - dxF2) ** 2 + (y2O - dyF2) ** 2) - Math.sqrt((x2O - dxF1) ** 2 + (y2O - dyF1) ** 2)\n const dxF = (q22 > 0) ? dxF1 : dxF2\n const dyF = (q22 > 0) ? dyF1 : dyF2\n const xF = hc + (dxF * rw1 / rO)\n const yF = vc + (dyF * rh1 / rO)\n const x1I = sx1 * rI / rw2\n const y1I = sy1 * rI / rh2\n const x2I = sx2 * rI / rw2\n const y2I = sy2 * rI / rh2\n const dxI = x2I - x1I\n const dyI = y2I - y1I\n const dI = Math.sqrt(dxI * dxI + dyI * dyI)\n const DI = x1I * y2I - x2I * y1I\n const sdelI = Math.sqrt(Math.max(0, rI * rI * dI * dI - DI * DI))\n const dxC1 = (DI * dyI + sdyO * dxI * sdelI) / (dI * dI)\n const dxC2 = (DI * dyI - sdyO * dxI * sdelI) / (dI * dI)\n const dyC1 = (-DI * dxI + Math.abs(dyI) * sdelI) / (dI * dI)\n const dyC2 = (-DI * dxI - Math.abs(dyI) * sdelI) / (dI * dI)\n const v22 = Math.sqrt((x1I - dxC2) ** 2 + (y1I - dyC2) ** 2) - Math.sqrt((x1I - dxC1) ** 2 + (y1I - dyC1) ** 2)\n const dxC = (v22 > 0) ? dxC1 : dxC2\n const dyC = (v22 > 0) ? dyC1 : dyC2\n const xC = hc + (dxC * rw2 / rI)\n const yC = vc + (dyC * rh2 / rI)\n const ist0 = Math.atan2(dyC * rh2 / rI, dxC * rw2 / rI)\n const istAng0 = (ist0 > 0) ? ist0 : ist0 + rdAngVal3\n const isw1 = stAng - istAng0\n const iswAng0 = (isw1 > 0) ? isw1 : isw1 + rdAngVal3\n const istAng = istAng0 + iswAng0\n const iswAng = -iswAng0\n const p5 = Math.sqrt((xF - xC) ** 2 + (yF - yC) ** 2) / 2 - thh\n const xGp = (p5 > 0) ? xF : xG\n const yGp = (p5 > 0) ? yF : yG\n const xBp = (p5 > 0) ? xC : xB\n const yBp = (p5 > 0) ? yC : yB\n const en0 = Math.atan2((yF - vc), (xF - hc))\n const en2 = (en0 > 0) ? en0 : en0 + rdAngVal3\n const sw0 = en2 - stAng\n const swAng = (sw0 > 0) ? sw0 - rdAngVal3 : sw0\n const stAng0 = stAng + swAng\n const strtAng = stAng0 * 180 / Math.PI\n const endAngVal = stAng * 180 / Math.PI\n const stiAng = istAng * 180 / Math.PI\n const ediAng = stiAng + (iswAng * 180 / Math.PI)\n pathData = `M ${xE},${yE} L ${xD},${yD} ${shapeArc(w / 2, h / 2, rw2, rh2, stiAng, ediAng, false).replace('M', 'L')} L ${xBp},${yBp} L ${xA},${yA} L ${xGp},${yGp} L ${xF},${yF} ${shapeArc(w / 2, h / 2, rw1, rh1, strtAng, endAngVal, false).replace('M', 'L')} z`\n }\n break\n case 'leftRightCircularArrow':\n case 'chartPlus':\n case 'chartStar':\n case 'chartX':\n case 'cornerTabs':\n case 'flowChartOfflineStorage':\n case 'folderCorner':\n case 'funnel':\n case 'lineInv':\n case 'nonIsoscelesTrapezoid':\n case 'plaqueTabs':\n case 'squareTabs':\n case 'upDownArrowCallout':\n pathData = `M 0 0 L ${w} 0 L ${w} ${h} L 0 ${h} Z`\n break\n default:\n pathData = `M 0 0 L ${w} 0 L ${w} ${h} L 0 ${h} Z`\n }\n\n return pathData\n}\n","import { getTextByPathList } from './utils'\n\nexport function findTransitionNode(content, rootElement) {\n if (!content || !rootElement) return null\n\n const path1 = [rootElement, 'p:transition']\n let transitionNode = getTextByPathList(content, path1)\n if (transitionNode) return transitionNode\n\n const path2 = [rootElement, 'mc:AlternateContent', 'mc:Choice', 'p:transition']\n transitionNode = getTextByPathList(content, path2)\n if (transitionNode) return transitionNode\n\n const path3 = [rootElement, 'mc:AlternateContent', 'mc:Fallback', 'p:transition']\n transitionNode = getTextByPathList(content, path3)\n \n return transitionNode\n}\n\nexport function parseTransition(transitionNode) {\n if (!transitionNode) return null\n\n const transition = {\n type: 'none',\n duration: 1000,\n direction: null,\n }\n\n const attrs = transitionNode.attrs || {}\n\n let durationFound = false\n const durRegex = /^p\\d{2}:dur$/ \n for (const key in attrs) {\n if (durRegex.test(key) && !isNaN(parseInt(attrs[key], 10))) {\n transition.duration = parseInt(attrs[key], 10)\n durationFound = true\n break\n }\n }\n\n if (!durationFound && attrs.spd) {\n switch (attrs.spd) {\n case 'slow':\n transition.duration = 1000\n break\n case 'med':\n transition.duration = 800\n break\n case 'fast':\n transition.duration = 500\n break\n default:\n transition.duration = 1000\n break\n }\n }\n\n if (attrs.advClick === '0' && attrs.advTm) {\n transition.autoNextAfter = parseInt(attrs.advTm, 10)\n }\n\n const effectRegex = /^(p|p\\d{2}):/ \n for (const key in transitionNode) {\n if (key !== 'attrs' && effectRegex.test(key)) {\n const effectNode = transitionNode[key]\n transition.type = key.substring(key.indexOf(':') + 1)\n\n if (effectNode && effectNode.attrs) {\n const effectAttrs = effectNode.attrs\n \n if (effectAttrs.dur && !isNaN(parseInt(effectAttrs.dur, 10))) {\n if (!durationFound) transition.duration = parseInt(effectAttrs.dur, 10)\n }\n if (effectAttrs.dir) transition.direction = effectAttrs.dir\n }\n break\n }\n }\n\n return transition\n}\n\nconst PRESET_CLASSES = new Set(['entr', 'exit', 'emph', 'path', 'verb', 'mediacall'])\n\nconst NODE_TYPE_TO_TRIGGER = {\n clickEffect: 'onClick',\n withEffect: 'withPrevious',\n afterEffect: 'afterPrevious',\n clickPar: 'onClick',\n withGroup: 'withPrevious',\n afterGroup: 'afterPrevious',\n interactiveSeq: 'onClick',\n}\n\nfunction asArray(value) {\n if (value == null) return []\n return Array.isArray(value) ? value : [value]\n}\n\nfunction parseMs(value) {\n if (value == null || value === '' || value === 'indefinite') return null\n const ms = parseInt(value, 10)\n return Number.isFinite(ms) ? ms : null\n}\n\nfunction findTimingNode(content) {\n if (!content) return null\n return getTextByPathList(content, ['p:sld', 'p:timing'])\n || getTextByPathList(content, ['p:sld', 'mc:AlternateContent', 'mc:Choice', 'p:timing'])\n || getTextByPathList(content, ['p:sld', 'mc:AlternateContent', 'mc:Fallback', 'p:timing'])\n}\n\nfunction collectSpids(node, out = []) {\n if (!node || typeof node !== 'object') return out\n const spid = node.attrs?.spid\n if (spid != null && spid !== '') out.push(String(spid))\n for (const key of Object.keys(node)) {\n if (key === 'attrs' || key === 'value') continue\n for (const child of asArray(node[key])) collectSpids(child, out)\n }\n return out\n}\n\nfunction collectDuration(node) {\n let found = null\n const walk = n => {\n if (!n || typeof n !== 'object') return\n const ms = parseMs(n.attrs?.dur)\n if (ms != null && ms >= 0) found = ms\n for (const key of Object.keys(n)) {\n if (key === 'attrs' || key === 'value') continue\n for (const child of asArray(n[key])) walk(child)\n }\n }\n walk(node)\n return found\n}\n\nfunction collectFilter(node) {\n let filter = ''\n const walk = n => {\n if (!n || typeof n !== 'object') return\n if (n.attrs?.filter) filter = n.attrs.filter\n for (const key of Object.keys(n)) {\n if (key === 'attrs' || key === 'value') continue\n for (const child of asArray(n[key])) walk(child)\n }\n }\n walk(node)\n return filter\n}\n\nfunction collectDelay(node, inherited = 0) {\n const fromAttr = parseMs(node?.attrs?.delay)\n if (fromAttr != null && fromAttr >= 0) return fromAttr\n\n const condRoot = node?.['p:stCondLst']\n for (const cond of asArray(condRoot?.['p:cond'] || condRoot)) {\n const fromCond = parseMs(cond?.attrs?.delay)\n if (fromCond != null && fromCond >= 0) return fromCond\n }\n return inherited\n}\n\nfunction collectEffects(node, inheritedTrigger = 'onClick', inheritedDelay = 0, results = []) {\n if (!node || typeof node !== 'object') return results\n\n const attrs = node.attrs || {}\n const trigger = NODE_TYPE_TO_TRIGGER[attrs.nodeType] || inheritedTrigger\n const delay = collectDelay(node, inheritedDelay)\n\n if (attrs.presetClass && PRESET_CLASSES.has(attrs.presetClass)) {\n const spids = [...new Set(collectSpids(node))]\n const duration = collectDuration(node)\n const filter = collectFilter(node)\n const effectTrigger = NODE_TYPE_TO_TRIGGER[attrs.nodeType] || trigger\n for (const spid of spids) {\n const animation = {\n spid,\n trigger: effectTrigger,\n class: attrs.presetClass,\n presetId: parseInt(attrs.presetID || '0', 10) || 0,\n presetSubtype: parseInt(attrs.presetSubtype || '0', 10) || 0,\n duration: duration != null ? duration : 1000,\n delay,\n }\n if (filter) animation.filter = filter\n results.push(animation)\n }\n return results\n }\n\n for (const key of Object.keys(node)) {\n if (key === 'attrs' || key === 'value') continue\n for (const child of asArray(node[key])) {\n collectEffects(child, trigger, delay, results)\n }\n }\n return results\n}\n\nfunction parseBuildList(timing) {\n const bldLst = timing?.['p:bldLst']\n if (!bldLst) return []\n\n const kinds = [\n ['p:bldP', 'paragraph'],\n ['p:bldDgm', 'diagram'],\n ['p:bldGraphic', 'graphic'],\n ['p:bldOleChart', 'oleChart'],\n ]\n const builds = []\n for (const [tag, type] of kinds) {\n for (const node of asArray(bldLst[tag])) {\n const spid = node?.attrs?.spid\n if (spid == null || spid === '') continue\n const item = { spid: String(spid), type }\n if (node.attrs?.animBg === '1' || node.attrs?.animBg === 'true') item.animBg = true\n builds.push(item)\n }\n }\n return builds\n}\n\n/**\n * Parse `p:timing` click/build animations and `p:bldLst` from a slide part.\n * Effect nodes are `p:cTn` with `presetClass`; `nodeType` may live on an ancestor.\n * Document order is the presenter sequence.\n */\nexport function parseTiming(slideContent) {\n const timing = findTimingNode(slideContent)\n if (!timing) return { animations: [], builds: [] }\n return {\n animations: collectEffects(timing),\n builds: parseBuildList(timing),\n }\n}","import { readXmlFile } from './readXmlFile'\nimport { getTextNodeValue } from './text'\nimport { getTextByPathList } from './utils'\n\nexport async function loadDiagramFile(warpObj, filename, transformDrawing = false) {\n if (!filename) return null\n\n const cacheKey = `${transformDrawing ? 'drawing:' : 'xml:'}${filename}`\n if (warpObj.diagramFileCache[cacheKey]) return warpObj.diagramFileCache[cacheKey]\n\n let content = await readXmlFile(warpObj['zip'], filename)\n if (content && transformDrawing) {\n const contentStr = JSON.stringify(content).replace(/dsp:/g, 'p:')\n content = JSON.parse(contentStr)\n }\n\n warpObj.diagramFileCache[cacheKey] = content\n return content\n}\n\nexport function getDiagramDrawingRelId(dataContent) {\n let extNodes = getTextByPathList(dataContent, ['dgm:dataModel', 'dgm:extLst', 'a:ext'])\n if (!extNodes) return ''\n\n if (!Array.isArray(extNodes)) extNodes = [extNodes]\n for (const extNode of extNodes) {\n const relId = getTextByPathList(extNode, ['dsp:dataModelExt', 'attrs', 'relId'])\n if (relId) return relId\n }\n\n return ''\n}\n\nexport async function getDiagramNodeContext(node, warpObj) {\n const relIds = getTextByPathList(node, ['a:graphic', 'a:graphicData', 'dgm:relIds', 'attrs']) || {}\n const diagramContent = {\n data: null,\n layout: null,\n quickStyle: null,\n colors: null,\n drawing: null,\n }\n let digramFileContent = {}\n const diagramResObj = {}\n\n const diagramDataTarget = getTextByPathList(warpObj['slideResObj'], [relIds['r:dm'], 'target'])\n const diagramLayoutTarget = getTextByPathList(warpObj['slideResObj'], [relIds['r:lo'], 'target'])\n const diagramQuickStyleTarget = getTextByPathList(warpObj['slideResObj'], [relIds['r:qs'], 'target'])\n const diagramColorsTarget = getTextByPathList(warpObj['slideResObj'], [relIds['r:cs'], 'target'])\n\n if (diagramDataTarget) diagramContent.data = await loadDiagramFile(warpObj, diagramDataTarget)\n if (diagramLayoutTarget) diagramContent.layout = await loadDiagramFile(warpObj, diagramLayoutTarget)\n if (diagramQuickStyleTarget) diagramContent.quickStyle = await loadDiagramFile(warpObj, diagramQuickStyleTarget)\n if (diagramColorsTarget) diagramContent.colors = await loadDiagramFile(warpObj, diagramColorsTarget)\n\n const drawingRelId = diagramContent.data ? getDiagramDrawingRelId(diagramContent.data) : ''\n const drawingTarget = getTextByPathList(warpObj['slideResObj'], [drawingRelId, 'target'])\n\n if (drawingTarget) {\n digramFileContent = await loadDiagramFile(warpObj, drawingTarget, true) || {}\n diagramContent.drawing = digramFileContent\n\n const drawingName = drawingTarget.split('/').pop()\n const diagramResFileName = drawingTarget.replace(drawingName, '_rels/' + drawingName) + '.rels'\n const digramResContent = await readXmlFile(warpObj['zip'], diagramResFileName)\n if (digramResContent) {\n let relationshipArray = digramResContent['Relationships']['Relationship']\n if (relationshipArray && relationshipArray.constructor !== Array) relationshipArray = [relationshipArray]\n if (relationshipArray) {\n for (const relationshipArrayItem of relationshipArray) {\n let relTarget = relationshipArrayItem['attrs']['Target']\n relTarget = relTarget.replace(/\\\\/g, '/')\n if (relTarget.indexOf('/ppt/') === 0) relTarget = relTarget.substr(1)\n else if (relTarget.indexOf('../') !== -1) relTarget = relTarget.replace('../', 'ppt/')\n else relTarget = drawingTarget.replace(drawingName, '') + relTarget\n\n diagramResObj[relationshipArrayItem['attrs']['Id']] = {\n type: relationshipArrayItem['attrs']['Type'].replace('http://schemas.openxmlformats.org/officeDocument/2006/relationships/', ''),\n target: relTarget,\n }\n }\n }\n }\n }\n\n return {\n ...warpObj,\n digramFileContent,\n diagramResObj,\n diagramContent,\n }\n}\n\nexport function getSmartArtTextData(dataContent) {\n const result = []\n\n let ptLst = getTextByPathList(dataContent, ['dgm:dataModel', 'dgm:ptLst', 'dgm:pt'])\n\n if (!ptLst) return result\n if (!Array.isArray(ptLst)) ptLst = [ptLst]\n\n for (const pt of ptLst) {\n const textBody = getTextByPathList(pt, ['dgm:t'])\n\n if (textBody) {\n let nodeText = ''\n\n let paragraphs = getTextByPathList(textBody, ['a:p'])\n if (paragraphs) {\n if (!Array.isArray(paragraphs)) paragraphs = [paragraphs]\n\n paragraphs.forEach(p => {\n let runs = getTextByPathList(p, ['a:r'])\n if (runs) {\n if (!Array.isArray(runs)) runs = [runs]\n\n runs.forEach(r => {\n const t = getTextNodeValue(getTextByPathList(r, ['a:t']))\n if (t && typeof t === 'string') nodeText += t\n })\n }\n if (nodeText.length > 0) nodeText += '\\n'\n })\n }\n\n const cleanText = nodeText.trim()\n if (cleanText) {\n result.push(cleanText)\n }\n }\n }\n\n return result\n}\n","import JSZip from 'jszip'\nimport { readXmlFile } from './readXmlFile'\nimport { getBorder } from './border'\nimport { getSlideBackgroundFill, getShapeFill, getSolidFill, getPicFill, getPicFilters, getPicFillOpacity, getImageData, getVideoData, getAudioData } from './fill'\nimport { getChartInfo } from './chart'\nimport { getVerticalAlign, getTextDirection, getTextAutoFit } from './paragraph'\nimport { getTextInsets } from './textInsets'\nimport { getPosition, getSize } from './position'\nimport { genTextBody, getTextNodeValue } from './text'\nimport { getCustomShapePath, identifyShape, isStrokeOnlyCustomGeometry } from './shape'\nimport { extractFileExtension, getTextByPathList, angleToDegrees, isVideoLink, escapeHtml, hasValidText, numberToFixed, isOoxmlTrue } from './utils'\nimport { getFontData, getFontFallback } from './font'\nimport { getShadow } from './shadow'\nimport { getTableBorders, getTableCellParams, getTableRowParams } from './table'\nimport { RATIO_EMUs_Points } from './constants'\nimport { findOMath, oMathToLatex } from './math'\nimport { getShapePath } from './shapePath'\nimport { parseTransition, findTransitionNode, parseTiming } from './animation'\nimport { getDiagramNodeContext, getSmartArtTextData } from './diagram'\n\n// Producers emit relationship types in either the ECMA-376 namespace or the\n// Microsoft 2007 extension namespace (e.g. p14 media, diagram drawings).\nconst REL_TYPE_NAMESPACES = [\n 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/',\n 'http://schemas.microsoft.com/office/2007/relationships/',\n]\n\nfunction getRelTypeName(type) {\n if (!type) return ''\n for (const namespace of REL_TYPE_NAMESPACES) {\n if (type.indexOf(namespace) === 0) return type.replace(namespace, '')\n }\n return type\n}\n\nexport async function parse(file, options = {}) {\n const slides = []\n const loadedImages = {}\n const loadedVideos = {}\n const loadedAudios = {}\n const xmlCache = {}\n const parseOptions = {\n ...options,\n imageMode: options.imageMode || 'base64',\n videoMode: options.videoMode || 'none',\n audioMode: options.audioMode || 'none',\n }\n\n // 检测是否为加密文件(OLE2/CFB 格式,魔数为 D0 CF 11 E0)\n let fileBytes\n if (file instanceof ArrayBuffer) {\n fileBytes = new Uint8Array(file)\n }\n else if (typeof File !== 'undefined' && file instanceof File) {\n const buf = await file.arrayBuffer()\n fileBytes = new Uint8Array(buf)\n }\n else if (typeof Buffer !== 'undefined' && Buffer.isBuffer(file)) {\n fileBytes = new Uint8Array(file)\n }\n if (fileBytes && fileBytes[0] === 0xD0 && fileBytes[1] === 0xCF && fileBytes[2] === 0x11 && fileBytes[3] === 0xE0) {\n throw new Error('ENCRYPTED_FILE')\n }\n\n const zip = await JSZip.loadAsync(file)\n\n const filesInfo = await getContentTypes(zip)\n const { width, height, defaultTextStyle } = await getSlideInfo(zip)\n const { themeContent, themeColors } = await getTheme(zip)\n const usedFonts = await getUsedFonts(zip)\n\n for (const filename of filesInfo.slides) {\n const singleSlide = await processSingleSlide(zip, filename, themeContent, defaultTextStyle, loadedImages, loadedVideos, loadedAudios, parseOptions, xmlCache)\n if (singleSlide) slides.push(singleSlide)\n }\n\n return {\n slides,\n usedFonts,\n themeColors,\n size: {\n width,\n height,\n },\n }\n}\n\nfunction asNodeArray(node) {\n if (!node) return []\n return node.constructor === Array ? node : [node]\n}\n\nfunction sortSlideXml(p1, p2) {\n const n1 = +(/(\\d+)\\.xml/.exec(p1)?.[1] || 0)\n const n2 = +(/(\\d+)\\.xml/.exec(p2)?.[1] || 0)\n return n1 - n2\n}\n\nfunction normalizePartName(name) {\n return String(name || '').replace(/\\\\/g, '/').replace(/^\\//, '')\n}\n\nfunction relationshipsPartFor(partName) {\n const name = normalizePartName(partName)\n const slash = name.lastIndexOf('/')\n const dir = slash === -1 ? '' : name.slice(0, slash + 1)\n const file = slash === -1 ? name : name.slice(slash + 1)\n return `${dir}_rels/${file}.rels`\n}\n\nfunction resolvePartTarget(sourcePart, target) {\n const raw = String(target || '').replace(/\\\\/g, '/')\n if (!raw) return ''\n if (raw.startsWith('/')) return normalizePartName(raw)\n const source = normalizePartName(sourcePart)\n const slash = source.lastIndexOf('/')\n const dir = slash === -1 ? '' : source.slice(0, slash + 1)\n const out = []\n for (const seg of `${dir}${raw}`.split('/')) {\n if (!seg || seg === '.') continue\n if (seg === '..') out.pop()\n else out.push(seg)\n }\n return out.join('/')\n}\n\nfunction relationshipRid(attrs) {\n if (!attrs) return ''\n // ECMA-376 §4.3.1.29: location is r:id (ST_RelationshipId), not the numeric ST_SlideId @id.\n return attrs['r:id'] || attrs.rId || ''\n}\n\nasync function getPresentationPart(zip) {\n // ECMA-376 §13.2: the Presentation part is the target of the package officeDocument relationship.\n const rels = asNodeArray(getTextByPathList(await readXmlFile(zip, '_rels/.rels'), ['Relationships', 'Relationship']))\n for (const rel of rels) {\n const type = getTextByPathList(rel, ['attrs', 'Type'])\n const target = getTextByPathList(rel, ['attrs', 'Target'])\n const targetMode = getTextByPathList(rel, ['attrs', 'TargetMode'])\n if (targetMode && String(targetMode).toLowerCase() === 'external') continue\n if (getRelTypeName(type) === 'officeDocument' && target) {\n const loc = resolvePartTarget('', target)\n if (loc) return loc\n }\n }\n return 'ppt/presentation.xml'\n}\n\nasync function getSlidesFromPresentation(zip) {\n // ECMA-376 §13.3.8: each Slide part is an Internal relationship from the Presentation part.\n // ECMA-376 §4.3.1.29–30: p:sldIdLst document order is the slide list; r:id resolves the part.\n // Content_Types Overrides are MIME mappings (Part 2 §9.1.2.2); their order is not significant.\n const presentationPart = await getPresentationPart(zip)\n const relItems = asNodeArray(getTextByPathList(\n await readXmlFile(zip, relationshipsPartFor(presentationPart)),\n ['Relationships', 'Relationship'],\n ))\n const relsMap = {}\n const slideTargets = []\n\n for (const rel of relItems) {\n const id = getTextByPathList(rel, ['attrs', 'Id'])\n const type = getTextByPathList(rel, ['attrs', 'Type'])\n const target = getTextByPathList(rel, ['attrs', 'Target'])\n const targetMode = getTextByPathList(rel, ['attrs', 'TargetMode'])\n if (!id || !target) continue\n if (targetMode && String(targetMode).toLowerCase() === 'external') continue\n const loc = resolvePartTarget(presentationPart, target)\n if (!loc) continue\n relsMap[id] = loc\n if (getRelTypeName(type) === 'slide') slideTargets.push(loc)\n }\n\n const presentation = await readXmlFile(zip, presentationPart)\n const sldIds = asNodeArray(getTextByPathList(presentation, ['p:presentation', 'p:sldIdLst', 'p:sldId']))\n const ordered = []\n for (const sldId of sldIds) {\n const rid = relationshipRid(sldId?.attrs)\n if (rid && relsMap[rid]) ordered.push(relsMap[rid])\n }\n if (ordered.length) return ordered\n return slideTargets\n}\n\nasync function getContentTypes(zip) {\n const ContentTypesJson = await readXmlFile(zip, '[Content_Types].xml')\n const overrides = asNodeArray(getTextByPathList(ContentTypesJson, ['Types', 'Override']))\n const overrideSlides = []\n let slideLayoutsLocArray = []\n\n for (const item of overrides) {\n const contentType = item?.attrs?.ContentType\n const partName = item?.attrs?.PartName\n if (!contentType || !partName) continue\n const loc = String(partName).replace(/^\\//, '')\n switch (contentType) {\n case 'application/vnd.openxmlformats-officedocument.presentationml.slide+xml':\n overrideSlides.push(loc)\n break\n case 'application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml':\n slideLayoutsLocArray.push(loc)\n break\n default:\n }\n }\n\n slideLayoutsLocArray = slideLayoutsLocArray.sort(sortSlideXml)\n\n let slidesLocArray = await getSlidesFromPresentation(zip)\n if (!slidesLocArray.length) {\n slidesLocArray = overrideSlides.sort(sortSlideXml)\n }\n\n return {\n slides: slidesLocArray,\n slideLayouts: slideLayoutsLocArray,\n }\n}\n\nasync function getUsedFonts(zip) {\n const content = await readXmlFile(zip, 'ppt/presentation.xml')\n const embeddedFontList = getTextByPathList(content, ['p:presentation', 'p:embeddedFontLst', 'p:embeddedFont'])\n const usedFonts = []\n\n if (!embeddedFontList) return usedFonts\n\n const embeddedFonts = embeddedFontList.constructor === Array ? embeddedFontList : [embeddedFontList]\n\n // 读取 presentation.xml.rels,获取字体文件路径\n const relsContent = await readXmlFile(zip, 'ppt/_rels/presentation.xml.rels')\n const relsMap = {}\n if (relsContent) {\n let relItems = getTextByPathList(relsContent, ['Relationships', 'Relationship'])\n if (relItems) {\n if (relItems.constructor !== Array) relItems = [relItems]\n for (const rel of relItems) {\n const id = getTextByPathList(rel, ['attrs', 'Id'])\n const target = getTextByPathList(rel, ['attrs', 'Target'])\n if (id && target) relsMap[id] = target\n }\n }\n }\n\n const FONT_VARIANTS = ['p:regular', 'p:bold', 'p:italic', 'p:boldItalic']\n\n for (const embeddedFont of embeddedFonts) {\n const typeface = getTextByPathList(embeddedFont, ['p:font', 'attrs', 'typeface'])\n if (!typeface) continue\n\n let fontBlob = ''\n for (const variant of FONT_VARIANTS) {\n const variantNode = embeddedFont[variant]\n if (!variantNode) continue\n const rid = getTextByPathList(variantNode, ['attrs', 'r:id'])\n if (!rid) continue\n const relTarget = relsMap[rid]\n if (!relTarget) continue\n\n let fontPath = relTarget\n if (fontPath.startsWith('../')) {\n fontPath = fontPath.substring(3)\n }\n else {\n fontPath = 'ppt/' + fontPath\n }\n\n fontBlob = await getFontData(zip, fontPath)\n if (fontBlob) break\n }\n\n usedFonts.push({\n name: typeface,\n fontFamily: getFontFallback(typeface),\n blob: fontBlob,\n })\n }\n\n return usedFonts\n}\n\nasync function getSlideInfo(zip) {\n const content = await readXmlFile(zip, 'ppt/presentation.xml')\n const sldSzAttrs = content['p:presentation']['p:sldSz']['attrs']\n const defaultTextStyle = content['p:presentation']['p:defaultTextStyle']\n return {\n width: parseInt(sldSzAttrs['cx']) * RATIO_EMUs_Points,\n height: parseInt(sldSzAttrs['cy']) * RATIO_EMUs_Points,\n defaultTextStyle,\n }\n}\n\nasync function getTheme(zip) {\n let themeContent = null\n let themeURI\n\n const preResContent = await readXmlFile(zip, 'ppt/_rels/presentation.xml.rels')\n const relationshipArray = preResContent['Relationships']['Relationship']\n\n if (relationshipArray.constructor === Array) {\n for (const relationshipItem of relationshipArray) {\n if (relationshipItem['attrs']['Type'] === 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme') {\n themeURI = relationshipItem['attrs']['Target']\n break\n }\n }\n }\n else if (relationshipArray['attrs']['Type'] === 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme') {\n themeURI = relationshipArray['attrs']['Target']\n }\n\n if (!themeURI) {\n const masterResContent = await readXmlFile(zip, 'ppt/slideMasters/_rels/slideMaster1.xml.rels')\n if (masterResContent) {\n const masterRelationshipArray = masterResContent['Relationships']['Relationship']\n if (masterRelationshipArray.constructor === Array) {\n for (const relationshipItem of masterRelationshipArray) {\n if (relationshipItem['attrs']['Type'] === 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme') {\n themeURI = relationshipItem['attrs']['Target']\n break\n }\n }\n }\n else if (masterRelationshipArray['attrs']['Type'] === 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme') {\n themeURI = masterRelationshipArray['attrs']['Target']\n }\n }\n }\n\n if (themeURI) {\n themeURI = themeURI.replace(/\\\\/g, '/')\n if (themeURI.startsWith('../')) themeURI = themeURI.substring(3)\n const themeFilename = themeURI.indexOf('/ppt/') === 0 ? themeURI.substr(1) : 'ppt/' + themeURI\n themeContent = await readXmlFile(zip, themeFilename)\n }\n\n const themeColors = []\n if (themeContent) {\n const clrScheme = getTextByPathList(themeContent, ['a:theme', 'a:themeElements', 'a:clrScheme'])\n if (clrScheme) {\n for (let i = 1; i <= 6; i++) {\n if (clrScheme[`a:accent${i}`] === undefined) break\n const color = getTextByPathList(clrScheme, [`a:accent${i}`, 'a:srgbClr', 'attrs', 'val'])\n if (color) themeColors.push('#' + color)\n }\n }\n }\n\n return { themeContent, themeColors }\n}\n\nasync function readXmlFileCached(zip, filename, xmlCache) {\n if (!filename) return null\n if (Object.prototype.hasOwnProperty.call(xmlCache, filename)) return xmlCache[filename]\n\n const content = await readXmlFile(zip, filename)\n xmlCache[filename] = content\n return content\n}\n\nasync function processSingleSlide(zip, sldFileName, themeContent, defaultTextStyle, loadedImages, loadedVideos, loadedAudios, options, xmlCache) {\n const resName = sldFileName.replace('slides/slide', 'slides/_rels/slide') + '.rels'\n const resContent = await readXmlFile(zip, resName)\n if (!resContent) return null\n let relationshipArray = resContent['Relationships']['Relationship']\n if (relationshipArray.constructor !== Array) relationshipArray = [relationshipArray]\n \n let noteFilename = ''\n let layoutFilename = ''\n let masterFilename = ''\n let themeFilename = ''\n const slideResObj = {}\n const layoutResObj = {}\n const masterResObj = {}\n const themeResObj = {}\n\n for (const relationshipArrayItem of relationshipArray) {\n const relType = getRelTypeName(relationshipArrayItem['attrs']['Type'])\n let relTarget = relationshipArrayItem['attrs']['Target']\n const isExternal = relationshipArrayItem['attrs']['TargetMode'] === 'External'\n if (!isExternal) {\n relTarget = relTarget.replace(/\\\\/g, '/')\n if (relTarget.indexOf('/ppt/') === 0) relTarget = relTarget.substr(1)\n else if (relTarget.indexOf('../') !== -1) relTarget = relTarget.replace('../', 'ppt/')\n else relTarget = 'ppt/slides/' + relTarget\n }\n\n if (relType === 'slideLayout') layoutFilename = relTarget\n else if (relType === 'notesSlide') noteFilename = relTarget\n\n slideResObj[relationshipArrayItem['attrs']['Id']] = {\n type: relType,\n target: relTarget,\n }\n }\n \n const slideNotesContent = await readXmlFile(zip, noteFilename)\n const note = getNote(slideNotesContent)\n\n const slideLayoutContent = await readXmlFileCached(zip, layoutFilename, xmlCache)\n const slideLayoutTables = indexNodes(slideLayoutContent)\n const slideLayoutResFilename = layoutFilename.replace('slideLayouts/slideLayout', 'slideLayouts/_rels/slideLayout') + '.rels'\n const slideLayoutResContent = await readXmlFileCached(zip, slideLayoutResFilename, xmlCache)\n if (slideLayoutResContent) {\n relationshipArray = slideLayoutResContent['Relationships']['Relationship']\n if (relationshipArray) {\n if (relationshipArray.constructor !== Array) relationshipArray = [relationshipArray]\n for (const relationshipArrayItem of relationshipArray) {\n const relType = getRelTypeName(relationshipArrayItem['attrs']['Type'])\n let relTarget = relationshipArrayItem['attrs']['Target']\n relTarget = relTarget.replace(/\\\\/g, '/')\n if (relTarget.indexOf('/ppt/') === 0) relTarget = relTarget.substr(1)\n else if (relTarget.indexOf('../') !== -1) relTarget = relTarget.replace('../', 'ppt/')\n else relTarget = 'ppt/slideLayouts/' + relTarget\n\n if (relType === 'slideMaster') masterFilename = relTarget\n else {\n layoutResObj[relationshipArrayItem['attrs']['Id']] = {\n type: relType,\n target: relTarget,\n }\n }\n }\n }\n }\n\n const slideMasterContent = await readXmlFileCached(zip, masterFilename, xmlCache)\n const slideMasterTextStyles = getTextByPathList(slideMasterContent, ['p:sldMaster', 'p:txStyles'])\n const slideMasterTables = indexNodes(slideMasterContent)\n const slideMasterResFilename = masterFilename.replace('slideMasters/slideMaster', 'slideMasters/_rels/slideMaster') + '.rels'\n const slideMasterResContent = await readXmlFileCached(zip, slideMasterResFilename, xmlCache)\n if (slideMasterResContent) {\n relationshipArray = slideMasterResContent['Relationships']['Relationship']\n if (relationshipArray) {\n if (relationshipArray.constructor !== Array) relationshipArray = [relationshipArray]\n for (const relationshipArrayItem of relationshipArray) {\n const relType = getRelTypeName(relationshipArrayItem['attrs']['Type'])\n let relTarget = relationshipArrayItem['attrs']['Target']\n relTarget = relTarget.replace(/\\\\/g, '/')\n if (relTarget.indexOf('/ppt/') === 0) relTarget = relTarget.substr(1)\n else if (relTarget.indexOf('../') !== -1) relTarget = relTarget.replace('../', 'ppt/')\n else relTarget = 'ppt/slideMasters/' + relTarget\n\n if (relType === 'theme') themeFilename = relTarget\n else {\n masterResObj[relationshipArrayItem['attrs']['Id']] = {\n type: relType,\n target: relTarget,\n }\n }\n }\n }\n }\n\n let currentThemeContent = themeContent\n if (themeFilename) {\n currentThemeContent = await readXmlFileCached(zip, themeFilename, xmlCache) || currentThemeContent\n const themeName = themeFilename.split('/').pop()\n const themeResFileName = themeFilename.replace(themeName, '_rels/' + themeName) + '.rels'\n const themeResContent = await readXmlFile(zip, themeResFileName)\n if (themeResContent) {\n relationshipArray = themeResContent['Relationships']['Relationship']\n if (relationshipArray) {\n if (relationshipArray.constructor !== Array) relationshipArray = [relationshipArray]\n for (const relationshipArrayItem of relationshipArray) {\n let relTarget = relationshipArrayItem['attrs']['Target']\n relTarget = relTarget.replace(/\\\\/g, '/')\n if (relTarget.indexOf('/ppt/') === 0) relTarget = relTarget.substr(1)\n else relTarget = relTarget.replace('../', 'ppt/')\n\n themeResObj[relationshipArrayItem['attrs']['Id']] = {\n 'type': getRelTypeName(relationshipArrayItem['attrs']['Type']),\n 'target': relTarget\n }\n }\n }\n }\n }\n\n const tableStyles = await readXmlFileCached(zip, 'ppt/tableStyles.xml', xmlCache)\n\n const slideContent = await readXmlFile(zip, sldFileName)\n if (!slideContent) return null\n const nodes = slideContent['p:sld']['p:cSld']['p:spTree']\n const warpObj = {\n zip,\n loadedImages,\n loadedVideos,\n loadedAudios,\n options,\n slideLayoutContent,\n slideLayoutTables,\n slideMasterContent,\n slideMasterTables,\n slideContent,\n tableStyles,\n slideResObj,\n slideMasterTextStyles,\n layoutResObj,\n masterResObj,\n themeContent: currentThemeContent,\n themeResObj,\n diagramFileCache: {},\n defaultTextStyle,\n }\n const layoutElements = await getLayoutElements(warpObj)\n const fill = await getSlideBackgroundFill(warpObj)\n\n const elements = []\n for (const nodeKey in nodes) {\n if (nodes[nodeKey].constructor !== Array) nodes[nodeKey] = [nodes[nodeKey]]\n for (const node of nodes[nodeKey]) {\n const ret = await processNodesInSlide(nodeKey, node, warpObj, 'slide')\n if (ret) elements.push(ret)\n }\n }\n\n let transitionNode = findTransitionNode(slideContent, 'p:sld')\n if (!transitionNode) transitionNode = findTransitionNode(slideLayoutContent, 'p:sldLayout')\n if (!transitionNode) transitionNode = findTransitionNode(slideMasterContent, 'p:sldMaster')\n\n const transition = parseTransition(transitionNode)\n const { animations, builds } = parseTiming(slideContent)\n\n const showMasterSpOnSlide = getTextByPathList(slideContent, ['p:sld', 'attrs', 'showMasterSp'])\n const isHidden = v => v === '0' || v === 'false'\n const hideBackground = isHidden(showMasterSpOnSlide)\n\n return {\n fill,\n elements,\n layoutElements,\n note,\n transition,\n hideBackground,\n animations,\n builds,\n }\n}\n\nfunction getHyperlinkFromCNvPr(cNvPr, warpObj) {\n const hlinkClick = getTextByPathList(cNvPr, ['a:hlinkClick', 'attrs'])\n if (!hlinkClick) return null\n\n const linkId = hlinkClick['r:id']\n if (!linkId) return null\n\n const res = warpObj['slideResObj'][linkId]\n if (!res) return null\n\n if (res['type'] !== 'hyperlink') return null\n\n const target = res['target']\n if (!target || !/^https?:\\/\\//.test(target)) return null\n\n return target\n}\n\nfunction getNote(noteContent) {\n let text = ''\n let spNodes = getTextByPathList(noteContent, ['p:notes', 'p:cSld', 'p:spTree', 'p:sp'])\n if (!spNodes) return ''\n\n if (spNodes.constructor !== Array) spNodes = [spNodes]\n for (const spNode of spNodes) {\n const phType = getTextByPathList(spNode, ['p:nvSpPr', 'p:nvPr', 'p:ph', 'attrs', 'type'])\n if (phType !== 'body') continue\n\n const textBody = getTextByPathList(spNode, ['p:txBody'])\n if (!textBody) continue\n\n let pNode = textBody['a:p']\n if (!pNode) continue\n if (pNode.constructor !== Array) pNode = [pNode]\n\n const listTypes = []\n\n for (const p of pNode) {\n const pPr = p['a:pPr']\n const algn = getTextByPathList(pPr, ['attrs', 'algn'])\n let align = 'left'\n if (algn) {\n switch (algn) {\n case 'r': align = 'right'; break\n case 'ctr': align = 'center'; break\n case 'just': case 'dist': align = 'justify'; break\n default: break\n }\n }\n\n let listType = ''\n if (pPr) {\n if (pPr['a:buChar']) listType = 'ul'\n else if (pPr['a:buAutoNum']) listType = 'ol'\n }\n const lvlNode = getTextByPathList(pPr, ['attrs', 'lvl'])\n const listLevel = lvlNode !== undefined ? parseInt(lvlNode) : 0\n\n if (listType) {\n while (listTypes.length > listLevel + 1) {\n text += `</${listTypes.pop()}>`\n }\n if (listTypes[listLevel] === undefined) {\n text += `<${listType}>`\n listTypes[listLevel] = listType\n }\n else if (listTypes[listLevel] !== listType) {\n text += `</${listTypes[listLevel]}>`\n text += `<${listType}>`\n listTypes[listLevel] = listType\n }\n text += `<li><p style=\"text-align:${align};\">`\n }\n else {\n while (listTypes.length > 0) {\n text += `</${listTypes.pop()}>`\n }\n text += `<p style=\"text-align:${align};\">`\n }\n\n let rNodes = p['a:r']\n if (rNodes) {\n if (rNodes.constructor !== Array) rNodes = [rNodes]\n for (const r of rNodes) {\n const t = getTextNodeValue(getTextByPathList(r, ['a:t']))\n if (t && typeof t === 'string') text += t\n }\n }\n\n if (listType) text += '</p></li>'\n else text += '</p>'\n }\n while (listTypes.length > 0) {\n text += `</${listTypes.pop()}>`\n }\n }\n return text\n}\n\nasync function getLayoutElements(warpObj) {\n const elements = []\n const slideLayoutContent = warpObj['slideLayoutContent']\n const slideMasterContent = warpObj['slideMasterContent']\n const nodesSldLayout = getTextByPathList(slideLayoutContent, ['p:sldLayout', 'p:cSld', 'p:spTree'])\n const nodesSldMaster = getTextByPathList(slideMasterContent, ['p:sldMaster', 'p:cSld', 'p:spTree'])\n\n const showMasterSp = getTextByPathList(slideLayoutContent, ['p:sldLayout', 'attrs', 'showMasterSp'])\n if (nodesSldLayout) {\n for (const nodeKey in nodesSldLayout) {\n if (nodesSldLayout[nodeKey].constructor === Array) {\n for (let i = 0; i < nodesSldLayout[nodeKey].length; i++) {\n const ph = getTextByPathList(nodesSldLayout[nodeKey][i], ['p:nvSpPr', 'p:nvPr', 'p:ph'])\n if (!ph) {\n const ret = await processNodesInSlide(nodeKey, nodesSldLayout[nodeKey][i], warpObj, 'slideLayoutBg')\n if (ret) elements.push(ret)\n }\n }\n } \n else {\n const ph = getTextByPathList(nodesSldLayout[nodeKey], ['p:nvSpPr', 'p:nvPr', 'p:ph'])\n if (!ph) {\n const ret = await processNodesInSlide(nodeKey, nodesSldLayout[nodeKey], warpObj, 'slideLayoutBg')\n if (ret) elements.push(ret)\n }\n }\n }\n }\n if (nodesSldMaster && showMasterSp !== '0') {\n for (const nodeKey in nodesSldMaster) {\n if (nodesSldMaster[nodeKey].constructor === Array) {\n for (let i = 0; i < nodesSldMaster[nodeKey].length; i++) {\n const ph = getTextByPathList(nodesSldMaster[nodeKey][i], ['p:nvSpPr', 'p:nvPr', 'p:ph'])\n if (!ph) {\n const ret = await processNodesInSlide(nodeKey, nodesSldMaster[nodeKey][i], warpObj, 'slideMasterBg')\n if (ret) elements.push(ret)\n }\n }\n } \n else {\n const ph = getTextByPathList(nodesSldMaster[nodeKey], ['p:nvSpPr', 'p:nvPr', 'p:ph'])\n if (!ph) {\n const ret = await processNodesInSlide(nodeKey, nodesSldMaster[nodeKey], warpObj, 'slideMasterBg')\n if (ret) elements.push(ret)\n }\n }\n }\n }\n return elements\n}\n\nfunction indexNodes(content) {\n if (!content) return { idTable: {}, idxTable: {}, typeTable: {} }\n const keys = Object.keys(content)\n const spTreeNode = content[keys[0]]?.['p:cSld']?.['p:spTree']\n if (!spTreeNode) return { idTable: {}, idxTable: {}, typeTable: {} }\n const idTable = {}\n const idxTable = {}\n const typeTable = {}\n\n for (const key in spTreeNode) {\n if (key === 'p:nvGrpSpPr' || key === 'p:grpSpPr') continue\n\n const targetNode = spTreeNode[key]\n\n if (targetNode.constructor === Array) {\n for (const targetNodeItem of targetNode) {\n const nvSpPrNode = targetNodeItem['p:nvSpPr']\n const id = getTextByPathList(nvSpPrNode, ['p:cNvPr', 'attrs', 'id'])\n const idx = getTextByPathList(nvSpPrNode, ['p:nvPr', 'p:ph', 'attrs', 'idx'])\n const type = getTextByPathList(nvSpPrNode, ['p:nvPr', 'p:ph', 'attrs', 'type'])\n\n if (id) idTable[id] = targetNodeItem\n if (idx) idxTable[idx] = targetNodeItem\n if (type && !typeTable[type]) typeTable[type] = targetNodeItem\n }\n } \n else {\n const nvSpPrNode = targetNode['p:nvSpPr']\n const id = getTextByPathList(nvSpPrNode, ['p:cNvPr', 'attrs', 'id'])\n const idx = getTextByPathList(nvSpPrNode, ['p:nvPr', 'p:ph', 'attrs', 'idx'])\n const type = getTextByPathList(nvSpPrNode, ['p:nvPr', 'p:ph', 'attrs', 'type'])\n\n if (id) idTable[id] = targetNode\n if (idx) idxTable[idx] = targetNode\n if (type && !typeTable[type]) typeTable[type] = targetNode\n }\n }\n\n return { idTable, idxTable, typeTable }\n}\n\nasync function processNodesInSlide(nodeKey, nodeValue, warpObj, source, groupHierarchy = []) {\n let json\n\n switch (nodeKey) {\n case 'p:sp': // Shape, Text\n json = await processSpNode(nodeValue, warpObj, source, groupHierarchy)\n break\n case 'p:cxnSp': // Shape, Text\n json = await processCxnSpNode(nodeValue, warpObj, source)\n break\n case 'p:pic': // Image, Video, Audio\n json = await processPicNode(nodeValue, warpObj, source)\n break\n case 'p:graphicFrame': // Chart, Diagram, Table\n json = await processGraphicFrameNode(nodeValue, warpObj, source)\n break\n case 'p:grpSp':\n json = await processGroupSpNode(nodeValue, warpObj, source, groupHierarchy)\n break\n case 'mc:AlternateContent':\n if (getTextByPathList(nodeValue, ['mc:Fallback', 'p:grpSpPr', 'a:xfrm'])) {\n json = await processGroupSpNode(getTextByPathList(nodeValue, ['mc:Fallback']), warpObj, source, groupHierarchy)\n }\n else if (getTextByPathList(nodeValue, ['mc:Choice'])) {\n json = await processMathNode(nodeValue, warpObj, source)\n }\n break\n default:\n }\n\n if (json && typeof json === 'object' && !json.id) {\n const id = getTextByPathList(nodeValue, ['p:nvSpPr', 'p:cNvPr', 'attrs', 'id']) ||\n getTextByPathList(nodeValue, ['p:nvPicPr', 'p:cNvPr', 'attrs', 'id']) ||\n getTextByPathList(nodeValue, ['p:nvCxnSpPr', 'p:cNvPr', 'attrs', 'id']) ||\n getTextByPathList(nodeValue, ['p:nvGrpSpPr', 'p:cNvPr', 'attrs', 'id']) ||\n getTextByPathList(nodeValue, ['p:nvGraphicFramePr', 'p:cNvPr', 'attrs', 'id']) ||\n getTextByPathList(nodeValue, ['mc:Choice', 'p:sp', 'p:nvSpPr', 'p:cNvPr', 'attrs', 'id']) ||\n getTextByPathList(nodeValue, ['mc:Fallback', 'p:sp', 'p:nvSpPr', 'p:cNvPr', 'attrs', 'id']) ||\n getTextByPathList(nodeValue, ['mc:Fallback', 'p:nvGrpSpPr', 'p:cNvPr', 'attrs', 'id'])\n\n json.id = id || ''\n }\n\n return json\n}\n\nasync function processMathNode(node, warpObj, source) {\n const choice = getTextByPathList(node, ['mc:Choice'])\n const fallback = getTextByPathList(node, ['mc:Fallback'])\n\n const order = node['attrs']['order']\n const xfrmNode = getTextByPathList(choice, ['p:sp', 'p:spPr', 'a:xfrm'])\n const { top, left } = getPosition(xfrmNode, undefined, undefined)\n const { width, height } = getSize(xfrmNode, undefined, undefined)\n\n const oMath = findOMath(choice)[0]\n if (!oMath) return null\n\n const latex = oMathToLatex(oMath)\n\n const blipFill = getTextByPathList(fallback, ['p:sp', 'p:spPr', 'a:blipFill'])\n const picFill = await getPicFill(source, blipFill, warpObj)\n\n let text = ''\n if (getTextByPathList(choice, ['p:sp', 'p:txBody', 'a:p', 'a:r'])) {\n const sp = getTextByPathList(choice, ['p:sp'])\n text = genTextBody(sp['p:txBody'], sp, undefined, undefined, undefined, warpObj)\n }\n\n return {\n type: 'math',\n top,\n left,\n width, \n height,\n latex,\n picRef: picFill.ref,\n picBase64: picFill.base64,\n picBlob: picFill.blob,\n text,\n order,\n }\n}\n\nasync function processGroupSpNode(node, warpObj, source, parentGroupHierarchy = []) {\n const order = node['attrs']['order']\n const xfrmNode = getTextByPathList(node, ['p:grpSpPr', 'a:xfrm'])\n if (!xfrmNode) return null\n\n const x = parseInt(xfrmNode['a:off']['attrs']['x']) * RATIO_EMUs_Points\n const y = parseInt(xfrmNode['a:off']['attrs']['y']) * RATIO_EMUs_Points\n const chx = parseInt(xfrmNode['a:chOff']['attrs']['x']) * RATIO_EMUs_Points\n const chy = parseInt(xfrmNode['a:chOff']['attrs']['y']) * RATIO_EMUs_Points\n const cx = parseInt(xfrmNode['a:ext']['attrs']['cx']) * RATIO_EMUs_Points\n const cy = parseInt(xfrmNode['a:ext']['attrs']['cy']) * RATIO_EMUs_Points\n const chcx = parseInt(xfrmNode['a:chExt']['attrs']['cx']) * RATIO_EMUs_Points\n const chcy = parseInt(xfrmNode['a:chExt']['attrs']['cy']) * RATIO_EMUs_Points\n\n const isFlipV = isOoxmlTrue(getTextByPathList(xfrmNode, ['attrs', 'flipV']))\n const isFlipH = isOoxmlTrue(getTextByPathList(xfrmNode, ['attrs', 'flipH']))\n\n let rotate = getTextByPathList(xfrmNode, ['attrs', 'rot']) || 0\n if (rotate) rotate = angleToDegrees(rotate)\n\n // 计算缩放因子\n const ws = chcx === 0 ? 0 : cx / chcx\n const hs = chcy === 0 ? 0 : cy / chcy\n\n // 构建当前组合层级(将当前组合添加到父级层级中)\n const currentGroupHierarchy = [...parentGroupHierarchy, node]\n\n const elements = []\n for (const nodeKey in node) {\n if (node[nodeKey].constructor === Array) {\n for (const item of node[nodeKey]) {\n const ret = await processNodesInSlide(nodeKey, item, warpObj, source, currentGroupHierarchy)\n if (ret) elements.push(ret)\n }\n }\n else {\n const ret = await processNodesInSlide(nodeKey, node[nodeKey], warpObj, source, currentGroupHierarchy)\n if (ret) elements.push(ret)\n }\n }\n\n const transformGroupedElement = (element, offsetX = 0, offsetY = 0) => {\n const elementRotate = element.rotate || 0\n const normalizedRotate = ((elementRotate % 360) + 360) % 360\n const isUniformScale = Math.abs(ws - hs) < 0.000001\n const shouldSwapDimensions = normalizedRotate === 90 || normalizedRotate === 270\n const centerX = element.left + element.width / 2\n const centerY = element.top + element.height / 2\n const nextCenterX = (centerX - offsetX) * ws\n const nextCenterY = (centerY - offsetY) * hs\n const widthScale = shouldSwapDimensions && !isUniformScale ? hs : ws\n const heightScale = shouldSwapDimensions && !isUniformScale ? ws : hs\n const width = element.width * widthScale\n const height = element.height * heightScale\n\n const transformed = {\n ...element,\n left: numberToFixed(nextCenterX - width / 2),\n top: numberToFixed(nextCenterY - height / 2),\n width: numberToFixed(width),\n height: numberToFixed(height),\n }\n return transformed\n }\n\n const processedElements = elements.map(element => ({\n ...transformGroupedElement(element, chx, chy),\n ...(element.type === 'group' && element.elements ? {\n elements: processNestedGroupElements(element.elements)\n } : {})\n }))\n\n function processNestedGroupElements(elements, depth = 0) {\n if (depth > 10) return elements\n\n return elements.map(element => {\n const processed = transformGroupedElement(element)\n if (element.type === 'group' && element.elements) {\n processed.elements = processNestedGroupElements(element.elements, depth + 1)\n }\n return processed\n })\n }\n\n return {\n type: 'group',\n top: numberToFixed(y),\n left: numberToFixed(x),\n width: numberToFixed(cx),\n height: numberToFixed(cy),\n rotate,\n order,\n isFlipV,\n isFlipH,\n elements: processedElements,\n }\n}\n\nasync function processSpNode(node, warpObj, source, groupHierarchy = []) {\n const cNvPr = getTextByPathList(node, ['p:nvSpPr', 'p:cNvPr'])\n const name = getTextByPathList(cNvPr, ['attrs', 'name'])\n const idx = getTextByPathList(node, ['p:nvSpPr', 'p:nvPr', 'p:ph', 'attrs', 'idx'])\n let type = getTextByPathList(node, ['p:nvSpPr', 'p:nvPr', 'p:ph', 'attrs', 'type'])\n const order = getTextByPathList(node, ['attrs', 'order'])\n\n let slideLayoutSpNode, slideMasterSpNode\n\n if (type) {\n if (idx) {\n slideLayoutSpNode = warpObj['slideLayoutTables']['idxTable'][idx]\n slideMasterSpNode = warpObj['slideMasterTables']['idxTable'][idx]\n if (!slideLayoutSpNode) slideLayoutSpNode = warpObj['slideLayoutTables']['typeTable'][type]\n if (!slideMasterSpNode) slideMasterSpNode = warpObj['slideMasterTables']['typeTable'][type]\n }\n else {\n slideLayoutSpNode = warpObj['slideLayoutTables']['typeTable'][type]\n slideMasterSpNode = warpObj['slideMasterTables']['typeTable'][type]\n }\n }\n else if (idx) {\n slideLayoutSpNode = warpObj['slideLayoutTables']['idxTable'][idx]\n slideMasterSpNode = warpObj['slideMasterTables']['idxTable'][idx]\n }\n\n if (!type) {\n const txBoxVal = getTextByPathList(node, ['p:nvSpPr', 'p:cNvSpPr', 'attrs', 'txBox'])\n if (isOoxmlTrue(txBoxVal)) type = 'text'\n }\n if (!type) type = getTextByPathList(slideLayoutSpNode, ['p:nvSpPr', 'p:nvPr', 'p:ph', 'attrs', 'type'])\n if (!type) type = getTextByPathList(slideMasterSpNode, ['p:nvSpPr', 'p:nvPr', 'p:ph', 'attrs', 'type'])\n if (!slideMasterSpNode && type === 'ctrTitle') slideMasterSpNode = warpObj['slideMasterTables']['typeTable']['title']\n\n if (!type) {\n if (source === 'diagramBg') type = 'diagram'\n else type = 'obj'\n }\n\n const link = getHyperlinkFromCNvPr(cNvPr, warpObj)\n\n return await genShape(node, slideLayoutSpNode, slideMasterSpNode, name, type, order, warpObj, source, link, groupHierarchy)\n}\n\nasync function processCxnSpNode(node, warpObj, source) {\n const cNvPr = getTextByPathList(node, ['p:nvCxnSpPr', 'p:cNvPr'])\n const name = getTextByPathList(cNvPr, ['attrs', 'name'])\n const type = (node['p:nvCxnSpPr']['p:nvPr']['p:ph'] === undefined) ? undefined : node['p:nvCxnSpPr']['p:nvPr']['p:ph']['attrs']['type']\n const order = node['attrs']['order']\n const link = getHyperlinkFromCNvPr(cNvPr, warpObj)\n\n return await genShape(node, undefined, undefined, name, type, order, warpObj, source, link)\n}\n\nasync function genShape(node, slideLayoutSpNode, slideMasterSpNode, name, type, order, warpObj, source, link, groupHierarchy = []) {\n const xfrmList = ['p:spPr', 'a:xfrm']\n const slideXfrmNode = getTextByPathList(node, xfrmList)\n const slideLayoutXfrmNode = getTextByPathList(slideLayoutSpNode, xfrmList)\n const slideMasterXfrmNode = getTextByPathList(slideMasterSpNode, xfrmList)\n\n const shapType = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'attrs', 'prst'])\n const custShapType = getTextByPathList(node, ['p:spPr', 'a:custGeom'])\n\n const keypoints = {}\n if (shapType) {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n if (shapAdjst_ary) {\n const adjList = Array.isArray(shapAdjst_ary) ? shapAdjst_ary : [shapAdjst_ary]\n for (const adj of adjList) {\n const name = getTextByPathList(adj, ['attrs', 'name'])\n const fmla = getTextByPathList(adj, ['attrs', 'fmla'])\n if (name && fmla && fmla.startsWith('val ')) {\n keypoints[name] = parseInt(fmla.substring(4)) / 50000\n }\n }\n }\n }\n\n const { top, left } = getPosition(slideXfrmNode, slideLayoutXfrmNode, slideMasterXfrmNode)\n const { width, height } = getSize(slideXfrmNode, slideLayoutXfrmNode, slideMasterXfrmNode)\n const pathViewBox = { x: 0, y: 0, width, height }\n\n const isFlipV = isOoxmlTrue(getTextByPathList(slideXfrmNode, ['attrs', 'flipV']))\n const isFlipH = isOoxmlTrue(getTextByPathList(slideXfrmNode, ['attrs', 'flipH']))\n\n const rotate = angleToDegrees(getTextByPathList(slideXfrmNode, ['attrs', 'rot']))\n\n const txtXframeNode = getTextByPathList(node, ['p:txXfrm'])\n let txtRotate\n if (txtXframeNode) {\n const txtXframeRot = getTextByPathList(txtXframeNode, ['attrs', 'rot'])\n if (txtXframeRot) txtRotate = angleToDegrees(txtXframeRot) + 90\n } \n else txtRotate = rotate\n\n let content = ''\n if (node['p:txBody']) content = genTextBody(node['p:txBody'], node, slideLayoutSpNode, slideMasterSpNode, type, warpObj)\n\n const { borderColor, borderWidth, borderType, strokeDasharray, headEnd, tailEnd } = getBorder(node, type, warpObj)\n const fill = await getShapeFill(node, warpObj, source, {\n groupHierarchy,\n slideLayoutSpNode,\n slideMasterSpNode,\n })\n\n let shadow\n const outerShdwNode = getTextByPathList(node, ['p:spPr', 'a:effectLst', 'a:outerShdw'])\n if (outerShdwNode) shadow = getShadow(outerShdwNode, warpObj)\n\n const vAlign = getVerticalAlign(node, slideLayoutSpNode, slideMasterSpNode, type)\n // Vertical writing mode, inherited through layout/master. Read once here and reported on\n // every branch below: a vertical <a:bodyPr vert> is just as valid on a shape as on a plain\n // text box, and dropping it for shapes leaves the consumer laying that text out horizontally.\n const textDirection = getTextDirection(node, slideLayoutSpNode, slideMasterSpNode)\n const isVertical = textDirection !== 'horz'\n const wrap = getTextByPathList(node, ['p:txBody', 'a:bodyPr', 'attrs', 'wrap']) !== 'none'\n const autoFit = getTextAutoFit(node, slideLayoutSpNode, slideMasterSpNode)\n const textInset = getTextInsets(node, slideLayoutSpNode, slideMasterSpNode)\n\n const data = {\n left,\n top,\n width,\n height,\n borderColor,\n borderWidth,\n borderType,\n borderStrokeDasharray: strokeDasharray,\n fill,\n content,\n isFlipV,\n isFlipH,\n rotate,\n vAlign,\n wrap,\n name,\n order,\n }\n\n if (shadow) data.shadow = shadow\n if (autoFit) data.autoFit = autoFit\n if (link) data.link = link\n if (textInset) data.textInset = textInset\n if (headEnd) data.headEnd = headEnd\n if (tailEnd) data.tailEnd = tailEnd\n\n const isHasValidText = data.content && hasValidText(data.content)\n\n if (custShapType && type !== 'diagram') {\n const d = getCustomShapePath(custShapType, width, height)\n if (!isHasValidText) data.content = ''\n\n const customShapeData = {\n ...data,\n type: 'shape',\n isVertical,\n shapType: 'custom',\n path: d,\n pathViewBox,\n }\n if (isStrokeOnlyCustomGeometry(custShapType)) customShapeData.strokeOnly = true\n\n return customShapeData\n }\n\n let shapePath = ''\n if (shapType) shapePath = getShapePath(shapType, width, height, node)\n const STROKE_ONLY_PRESET_SHAPE_TYPES = ['arc', 'leftBrace', 'rightBrace', 'bracePair', 'leftBracket', 'rightBracket', 'bracketPair']\n const isStrokeOnlyPresetShape = STROKE_ONLY_PRESET_SHAPE_TYPES.includes(shapType)\n\n if (shapType && (type === 'obj' || !type || shapType !== 'rect')) {\n if (!isHasValidText) data.content = ''\n const shapeData = {\n ...data,\n type: 'shape',\n isVertical,\n shapType,\n path: shapePath,\n pathViewBox,\n keypoints,\n }\n if (isStrokeOnlyPresetShape) shapeData.strokeOnly = true\n return shapeData\n }\n if (shapType && !isHasValidText && (fill || borderWidth)) {\n const shapeData = {\n ...data,\n type: 'shape',\n isVertical,\n content: '',\n shapType,\n path: shapePath,\n pathViewBox,\n keypoints,\n }\n if (isStrokeOnlyPresetShape) shapeData.strokeOnly = true\n return shapeData\n }\n return {\n ...data,\n type: 'text',\n isVertical,\n rotate: txtRotate,\n }\n}\n\nasync function processPicNode(node, warpObj, source) {\n let resObj\n if (source === 'slideMasterBg') resObj = warpObj['masterResObj']\n else if (source === 'slideLayoutBg') resObj = warpObj['layoutResObj']\n else resObj = warpObj['slideResObj']\n\n const cNvPr = getTextByPathList(node, ['p:nvPicPr', 'p:cNvPr'])\n const link = getHyperlinkFromCNvPr(cNvPr, warpObj)\n const order = node['attrs']['order']\n \n const rid = node['p:blipFill']['a:blip']['attrs']['r:embed']\n \n if (!rid || !resObj[rid]) return null\n\n const imgName = resObj[rid]['target']\n\n let xfrmNode = node['p:spPr']['a:xfrm']\n if (!xfrmNode) {\n const idx = getTextByPathList(node, ['p:nvPicPr', 'p:nvPr', 'p:ph', 'attrs', 'idx'])\n if (idx) xfrmNode = getTextByPathList(warpObj['slideLayoutTables'], ['idxTable', idx, 'p:spPr', 'a:xfrm'])\n }\n\n const { top, left } = getPosition(xfrmNode, undefined, undefined)\n const { width, height } = getSize(xfrmNode, undefined, undefined)\n const imageData = await getImageData(imgName, warpObj)\n\n const isFlipV = isOoxmlTrue(getTextByPathList(xfrmNode, ['attrs', 'flipV']))\n const isFlipH = isOoxmlTrue(getTextByPathList(xfrmNode, ['attrs', 'flipH']))\n\n let rotate = 0\n const rotateNode = getTextByPathList(node, ['p:spPr', 'a:xfrm', 'attrs', 'rot'])\n if (rotateNode) rotate = angleToDegrees(rotateNode)\n\n const videoNode = getTextByPathList(node, ['p:nvPicPr', 'p:nvPr', 'a:videoFile'])\n let videoRid, videoFile, videoFileExt\n let videoData = {\n ref: '',\n blob: '',\n }\n let isVdeoLink = false\n\n if (videoNode) {\n videoRid = videoNode['attrs']['r:link']\n videoFile = resObj[videoRid]['target']\n if (isVideoLink(videoFile)) {\n videoFile = escapeHtml(videoFile)\n isVdeoLink = true\n } \n else {\n videoFileExt = extractFileExtension(videoFile).toLowerCase()\n if (videoFileExt === 'mp4' || videoFileExt === 'webm' || videoFileExt === 'ogg') {\n videoData = await getVideoData(videoFile, warpObj)\n }\n else {\n videoData = {\n ref: videoFile,\n blob: '',\n }\n }\n }\n if (isVdeoLink) {\n videoData = {\n ref: videoFile,\n blob: '',\n }\n }\n }\n\n const audioNode = getTextByPathList(node, ['p:nvPicPr', 'p:nvPr', 'a:audioFile'])\n let audioRid, audioFile, audioFileExt\n let audioData = {\n ref: '',\n blob: '',\n }\n if (audioNode) {\n audioRid = audioNode['attrs']['r:link']\n audioFile = resObj[audioRid]['target']\n audioFileExt = extractFileExtension(audioFile).toLowerCase()\n if (audioFileExt === 'mp3' || audioFileExt === 'wav' || audioFileExt === 'ogg') {\n audioData = await getAudioData(audioFile, warpObj)\n }\n else {\n audioData = {\n ref: audioFile,\n blob: '',\n }\n }\n }\n\n if (videoNode && !isVdeoLink) {\n return {\n type: 'video',\n top,\n left,\n width, \n height,\n rotate,\n ref: videoData.ref,\n blob: videoData.blob,\n order,\n }\n } \n if (videoNode && isVdeoLink) {\n return {\n type: 'video',\n top,\n left,\n width, \n height,\n rotate,\n ref: videoData.ref,\n blob: videoData.blob,\n order,\n }\n }\n if (audioNode) {\n return {\n type: 'audio',\n top,\n left,\n width, \n height,\n rotate,\n ref: audioData.ref,\n blob: audioData.blob,\n order,\n }\n }\n\n let rect\n const srcRectAttrs = getTextByPathList(node, ['p:blipFill', 'a:srcRect', 'attrs'])\n if (srcRectAttrs && (srcRectAttrs.t || srcRectAttrs.b || srcRectAttrs.l || srcRectAttrs.r)) {\n rect = {}\n if (srcRectAttrs.t) rect.t = srcRectAttrs.t / 1000\n if (srcRectAttrs.b) rect.b = srcRectAttrs.b / 1000\n if (srcRectAttrs.l) rect.l = srcRectAttrs.l / 1000\n if (srcRectAttrs.r) rect.r = srcRectAttrs.r / 1000\n }\n\n const prstGeom = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'attrs', 'prst'])\n const custGeom = getTextByPathList(node, ['p:spPr', 'a:custGeom'])\n\n const { borderColor, borderWidth, borderType, strokeDasharray } = getBorder(node, undefined, warpObj)\n const filters = getPicFilters(node['p:blipFill'])\n const opacity = getPicFillOpacity(node['p:blipFill'])\n\n if (prstGeom || custGeom) {\n let shapType, path\n if (custGeom) {\n const identifiedShape = identifyShape(custGeom)\n shapType = identifiedShape !== 'custom' ? `custom:${identifiedShape}` : 'custom'\n path = getCustomShapePath(custGeom, width, height)\n }\n else {\n shapType = prstGeom\n path = getShapePath(prstGeom, width, height, node) || ''\n }\n\n const fill = {\n type: 'image',\n value: {\n ref: imageData.ref,\n base64: imageData.base64,\n blob: imageData.blob,\n opacity,\n rect,\n },\n }\n\n const shapeDataJson = {\n type: 'shape',\n shapType,\n path,\n top,\n left,\n width,\n height,\n rotate,\n isFlipV,\n isFlipH,\n order,\n fill,\n content: '',\n borderColor,\n borderWidth,\n borderType,\n borderStrokeDasharray: strokeDasharray,\n }\n\n if (filters) shapeDataJson.filters = filters\n if (link) shapeDataJson.link = link\n\n return shapeDataJson\n }\n\n const imageDataJson = {\n type: 'image',\n top,\n left,\n width,\n height,\n rotate,\n ref: imageData.ref,\n base64: imageData.base64,\n blob: imageData.blob,\n isFlipV,\n isFlipH,\n order,\n rect,\n geom: 'rect',\n borderColor,\n borderWidth,\n borderType,\n borderStrokeDasharray: strokeDasharray,\n opacity,\n }\n\n if (filters) imageDataJson.filters = filters\n if (link) imageDataJson.link = link\n\n return imageDataJson\n}\n\nasync function processGraphicFrameNode(node, warpObj, source) {\n const graphicTypeUri = getTextByPathList(node, ['a:graphic', 'a:graphicData', 'attrs', 'uri'])\n \n let result\n switch (graphicTypeUri) {\n case 'http://schemas.openxmlformats.org/drawingml/2006/table':\n result = await genTable(node, warpObj)\n break\n case 'http://schemas.openxmlformats.org/drawingml/2006/chart':\n result = await genChart(node, warpObj)\n break\n case 'http://schemas.openxmlformats.org/drawingml/2006/diagram':\n result = await genDiagram(node, warpObj)\n break\n case 'http://schemas.openxmlformats.org/presentationml/2006/ole':\n let oleObjNode = getTextByPathList(node, ['a:graphic', 'a:graphicData', 'mc:AlternateContent', 'mc:Fallback', 'p:oleObj'])\n if (!oleObjNode) oleObjNode = getTextByPathList(node, ['a:graphic', 'a:graphicData', 'p:oleObj'])\n if (oleObjNode) result = await processGroupSpNode(oleObjNode, warpObj, source)\n break\n default:\n }\n return result\n}\n\nasync function genTable(node, warpObj) {\n const order = node['attrs']['order']\n const tableNode = getTextByPathList(node, ['a:graphic', 'a:graphicData', 'a:tbl'])\n const xfrmNode = getTextByPathList(node, ['p:xfrm'])\n const { top, left } = getPosition(xfrmNode, undefined, undefined)\n const { width, height } = getSize(xfrmNode, undefined, undefined)\n\n const getTblPr = getTextByPathList(node, ['a:graphic', 'a:graphicData', 'a:tbl', 'a:tblPr'])\n let getColsGrid = getTextByPathList(node, ['a:graphic', 'a:graphicData', 'a:tbl', 'a:tblGrid', 'a:gridCol'])\n if (getColsGrid.constructor !== Array) getColsGrid = [getColsGrid]\n\n const colWidths = []\n if (getColsGrid) {\n for (const item of getColsGrid) {\n const colWidthParam = getTextByPathList(item, ['attrs', 'w']) || 0\n const colWidth = parseInt(colWidthParam) * RATIO_EMUs_Points\n colWidths.push(colWidth)\n }\n }\n\n const firstRowAttr = getTblPr['attrs'] ? getTblPr['attrs']['firstRow'] : undefined\n const firstColAttr = getTblPr['attrs'] ? getTblPr['attrs']['firstCol'] : undefined\n const lastRowAttr = getTblPr['attrs'] ? getTblPr['attrs']['lastRow'] : undefined\n const lastColAttr = getTblPr['attrs'] ? getTblPr['attrs']['lastCol'] : undefined\n const bandRowAttr = getTblPr['attrs'] ? getTblPr['attrs']['bandRow'] : undefined\n const bandColAttr = getTblPr['attrs'] ? getTblPr['attrs']['bandCol'] : undefined\n const tblStylAttrObj = {\n isFrstRowAttr: isOoxmlTrue(firstRowAttr) ? 1 : 0,\n isFrstColAttr: isOoxmlTrue(firstColAttr) ? 1 : 0,\n isLstRowAttr: isOoxmlTrue(lastRowAttr) ? 1 : 0,\n isLstColAttr: isOoxmlTrue(lastColAttr) ? 1 : 0,\n isBandRowAttr: isOoxmlTrue(bandRowAttr) ? 1 : 0,\n isBandColAttr: isOoxmlTrue(bandColAttr) ? 1 : 0,\n }\n\n let thisTblStyle\n const tbleStyleId = getTblPr['a:tableStyleId']\n if (tbleStyleId) {\n const tbleStylList = warpObj['tableStyles']['a:tblStyleLst']['a:tblStyle']\n if (tbleStylList) {\n if (tbleStylList.constructor === Array) {\n for (let k = 0; k < tbleStylList.length; k++) {\n if (tbleStylList[k]['attrs']['styleId'] === tbleStyleId) {\n thisTblStyle = tbleStylList[k]\n }\n }\n } \n else {\n if (tbleStylList['attrs']['styleId'] === tbleStyleId) {\n thisTblStyle = tbleStylList\n }\n }\n }\n }\n if (thisTblStyle) thisTblStyle['tblStylAttrObj'] = tblStylAttrObj\n\n let borders = {}\n const tblStyl = getTextByPathList(thisTblStyle, ['a:wholeTbl', 'a:tcStyle'])\n const tblBorderStyl = getTextByPathList(tblStyl, ['a:tcBdr'])\n if (tblBorderStyl) borders = getTableBorders(tblBorderStyl, warpObj)\n\n let tbl_bgcolor = ''\n let tbl_bgFillschemeClr = getTextByPathList(thisTblStyle, ['a:tblBg', 'a:fillRef'])\n if (tbl_bgFillschemeClr) {\n tbl_bgcolor = getSolidFill(tbl_bgFillschemeClr, undefined, undefined, warpObj)\n }\n if (tbl_bgFillschemeClr === undefined) {\n tbl_bgFillschemeClr = getTextByPathList(thisTblStyle, ['a:wholeTbl', 'a:tcStyle', 'a:fill', 'a:solidFill'])\n tbl_bgcolor = getSolidFill(tbl_bgFillschemeClr, undefined, undefined, warpObj)\n }\n\n let trNodes = tableNode['a:tr']\n if (trNodes.constructor !== Array) trNodes = [trNodes]\n \n const data = []\n const rowHeights = []\n for (let i = 0; i < trNodes.length; i++) {\n const trNode = trNodes[i]\n \n const rowHeightParam = getTextByPathList(trNodes[i], ['attrs', 'h']) || 0\n const rowHeight = parseInt(rowHeightParam) * RATIO_EMUs_Points\n rowHeights.push(rowHeight)\n\n const {\n fillColor,\n fontColor,\n fontBold,\n } = getTableRowParams(trNodes, i, tblStylAttrObj, thisTblStyle, warpObj)\n\n const tcNodes = trNode['a:tc']\n const tr = []\n\n if (tcNodes.constructor === Array) {\n for (let j = 0; j < tcNodes.length; j++) {\n const tcNode = tcNodes[j]\n let a_sorce\n if (j === 0 && tblStylAttrObj['isFrstColAttr'] === 1) {\n a_sorce = 'a:firstCol'\n if (tblStylAttrObj['isLstRowAttr'] === 1 && i === (trNodes.length - 1) && getTextByPathList(thisTblStyle, ['a:seCell'])) {\n a_sorce = 'a:seCell'\n } \n else if (tblStylAttrObj['isFrstRowAttr'] === 1 && i === 0 &&\n getTextByPathList(thisTblStyle, ['a:neCell'])) {\n a_sorce = 'a:neCell'\n }\n } \n else if (\n (j > 0 && tblStylAttrObj['isBandColAttr'] === 1) &&\n !(tblStylAttrObj['isFrstColAttr'] === 1 && i === 0) &&\n !(tblStylAttrObj['isLstRowAttr'] === 1 && i === (trNodes.length - 1)) &&\n j !== (tcNodes.length - 1)\n ) {\n if ((j % 2) !== 0) {\n let aBandNode = getTextByPathList(thisTblStyle, ['a:band2V'])\n if (aBandNode === undefined) {\n aBandNode = getTextByPathList(thisTblStyle, ['a:band1V'])\n if (aBandNode) a_sorce = 'a:band2V'\n } \n else a_sorce = 'a:band2V'\n }\n }\n if (j === (tcNodes.length - 1) && tblStylAttrObj['isLstColAttr'] === 1) {\n a_sorce = 'a:lastCol'\n if (tblStylAttrObj['isLstRowAttr'] === 1 && i === (trNodes.length - 1) && getTextByPathList(thisTblStyle, ['a:swCell'])) {\n a_sorce = 'a:swCell'\n } \n else if (tblStylAttrObj['isFrstRowAttr'] === 1 && i === 0 && getTextByPathList(thisTblStyle, ['a:nwCell'])) {\n a_sorce = 'a:nwCell'\n }\n }\n const text = genTextBody(tcNode['a:txBody'], tcNode, undefined, undefined, undefined, warpObj)\n const cell = await getTableCellParams(tcNode, thisTblStyle, a_sorce, warpObj)\n const td = { text }\n if (cell.rowSpan) td.rowSpan = cell.rowSpan\n if (cell.colSpan) td.colSpan = cell.colSpan\n if (cell.vMerge) td.vMerge = cell.vMerge\n if (cell.hMerge) td.hMerge = cell.hMerge\n if (cell.vAlign) td.vAlign = cell.vAlign\n if (cell.fontBold || fontBold) td.fontBold = cell.fontBold || fontBold\n if (cell.fontColor || fontColor) td.fontColor = cell.fontColor || fontColor\n if (cell.fillColor || fillColor || tbl_bgcolor) td.fillColor = cell.fillColor || fillColor || tbl_bgcolor\n if (cell.borders) td.borders = cell.borders\n\n tr.push(td)\n }\n } \n else {\n let a_sorce\n if (tblStylAttrObj['isFrstColAttr'] === 1 && tblStylAttrObj['isLstRowAttr'] !== 1) {\n a_sorce = 'a:firstCol'\n } \n else if (tblStylAttrObj['isBandColAttr'] === 1 && tblStylAttrObj['isLstRowAttr'] !== 1) {\n let aBandNode = getTextByPathList(thisTblStyle, ['a:band2V'])\n if (!aBandNode) {\n aBandNode = getTextByPathList(thisTblStyle, ['a:band1V'])\n if (aBandNode) a_sorce = 'a:band2V'\n } \n else a_sorce = 'a:band2V'\n }\n if (tblStylAttrObj['isLstColAttr'] === 1 && tblStylAttrObj['isLstRowAttr'] !== 1) {\n a_sorce = 'a:lastCol'\n }\n\n const text = genTextBody(tcNodes['a:txBody'], tcNodes, undefined, undefined, undefined, warpObj)\n const cell = await getTableCellParams(tcNodes, thisTblStyle, a_sorce, warpObj)\n const td = { text }\n if (cell.rowSpan) td.rowSpan = cell.rowSpan\n if (cell.colSpan) td.colSpan = cell.colSpan\n if (cell.vMerge) td.vMerge = cell.vMerge\n if (cell.hMerge) td.hMerge = cell.hMerge\n if (cell.vAlign) td.vAlign = cell.vAlign\n if (cell.fontBold || fontBold) td.fontBold = cell.fontBold || fontBold\n if (cell.fontColor || fontColor) td.fontColor = cell.fontColor || fontColor\n if (cell.fillColor || fillColor || tbl_bgcolor) td.fillColor = cell.fillColor || fillColor || tbl_bgcolor\n if (cell.borders) td.borders = cell.borders\n\n tr.push(td)\n }\n data.push(tr)\n }\n\n let actualTableWidth = colWidths.reduce((sum, width) => sum + width, 0)\n if (actualTableWidth) actualTableWidth = numberToFixed(actualTableWidth)\n\n return {\n type: 'table',\n top,\n left,\n width: actualTableWidth || width,\n height,\n data,\n order,\n borders,\n rowHeights,\n colWidths,\n }\n}\n\nasync function genChart(node, warpObj) {\n const order = node['attrs']['order']\n const xfrmNode = getTextByPathList(node, ['p:xfrm'])\n const { top, left } = getPosition(xfrmNode, undefined, undefined)\n const { width, height } = getSize(xfrmNode, undefined, undefined)\n\n const rid = node['a:graphic']['a:graphicData']['c:chart']['attrs']['r:id']\n let refName = getTextByPathList(warpObj['slideResObj'], [rid, 'target'])\n if (!refName) refName = getTextByPathList(warpObj['layoutResObj'], [rid, 'target'])\n if (!refName) refName = getTextByPathList(warpObj['masterResObj'], [rid, 'target'])\n if (!refName) return null\n\n const content = await readXmlFile(warpObj['zip'], refName)\n const plotArea = getTextByPathList(content, ['c:chartSpace', 'c:chart', 'c:plotArea'])\n\n const chart = getChartInfo(plotArea, warpObj)\n\n if (!chart) return null\n\n const data = {\n type: 'chart',\n top,\n left,\n width,\n height,\n data: chart.data,\n colors: chart.colors,\n chartType: chart.type,\n order,\n }\n if (chart.marker !== undefined) data.marker = chart.marker\n if (chart.barDir !== undefined) data.barDir = chart.barDir\n if (chart.holeSize !== undefined) data.holeSize = chart.holeSize\n if (chart.grouping !== undefined) data.grouping = chart.grouping\n if (chart.style !== undefined) data.style = chart.style\n\n return data\n}\n\nasync function genDiagram(node, warpObj) {\n const order = node['attrs']['order']\n const xfrmNode = getTextByPathList(node, ['p:xfrm'])\n const { left, top } = getPosition(xfrmNode, undefined, undefined)\n const { width, height } = getSize(xfrmNode, undefined, undefined)\n\n const diagramWarpObj = await getDiagramNodeContext(node, warpObj)\n const dgmDrwSpArray = getTextByPathList(diagramWarpObj['digramFileContent'], ['p:drawing', 'p:spTree', 'p:sp'])\n const elements = []\n let textList = []\n if (dgmDrwSpArray) {\n const spList = Array.isArray(dgmDrwSpArray) ? dgmDrwSpArray : [dgmDrwSpArray]\n\n for (const item of spList) {\n const el = await processSpNode(item, diagramWarpObj, 'diagramBg')\n if (el) elements.push(el)\n }\n }\n if (diagramWarpObj.diagramContent && diagramWarpObj.diagramContent.data) {\n textList = getSmartArtTextData(diagramWarpObj.diagramContent.data)\n }\n\n return {\n type: 'diagram',\n left,\n top,\n width,\n height,\n elements,\n textList,\n order,\n }\n}\n"],"names":["cust_attr_order","RAW_NODE_TAGS","Set","isWhitespaceTextNode","node","simplifyLostLess","children","parentAttributes","out","Object","child","kids","readXmlFile","zip","filename","file","data","txml","isOoxmlTrue","value","base64ArrayBuffer","arrayBuffer","encodings","bytes","Uint8Array","byteLength","byteRemainder","mainLength","base64","a","b","c","d","chunk","i","extractFileExtension","eachElement","func","result","Array","getTextByPathList","path","key","angleToDegrees","angle","Math","escapeHtml","text","map","m","getMimeType","imgFileExt","mimeType","isVideoLink","vdoFile","urlRegex","toHex","n","hex","hasValidText","htmlString","DOMParser","parser","doc","numberToFixed","num","fractionDigits","parseFloat","getSchemeColorFromTheme","schemeClr","warpObj","clrMap","phClr","color","slideLayoutClrOvride","sldClrMapOvr","schmClrName","refNode","EMR_EOF","EMR_STRETCHDIBITS","EMF_SIGNATURE","BI_RGB","extractEmfBitmap","view","DataView","offset","recordType","recordSize","bitmap","parseStretchDibits","offBmiSrc","cbBmiSrc","offBitsSrc","cbBitsSrc","bmiStart","biWidth","biHeight","biBitCount","biCompression","width","height","bitsStart","bitsData","topDown","pixels","Uint8ClampedArray","bytesPerPixel","rowStride","y","srcRow","srcOffset","dstOffset","x","srcIdx","emfToPngDataUrl","document","canvas","ctx","ImageData","hueToRgb","t1","t2","hue","hslToRgb","sat","light","r","g","applyShade","rgbStr","shadeValue","isAlpha","tinycolor","cacl_l","applyTint","tintValue","applyLumOff","lum","applyLumMod","multiplier","applyHueMod","cacl_h","applySatMod","cacl_s","getColorName2Hex","name","colorName","colorHex","nameLower","findIndx","getFillType","fillType","createImageData","ref","createMediaData","getMediaCache","cacheKey","cache","loadMedia","filePath","mode","normalizedPath","cacheItem","fileExt","zipFile","pngDataUrl","pngBytes","atob","URL","Blob","undefined","loadImage","imgPath","loadVideo","videoPath","loadAudio","audioPath","getImageMode","imageMode","getVideoMode","videoMode","getAudioMode","audioMode","getImageData","imageData","getVideoData","videoData","getAudioData","audioData","getPicFill","type","rId","align","alignType","fillRectAttrs","parseInt","tileAttrs","getPicFillOpacity","aBlipNode","aphaModFixNode","opacity","getPicFilters","filters","extLstNode","extNodes","extNode","imgLayerNode","imgEffects","effectArray","effect","satAttr","brightAttr","contrastAttr","amountAttr","amount","tempAttr","getBgPicFill","bgPr","sorce","picFill","getGradientFill","gsLst","colors","lo_color","getSolidFill","pos","lin","rot","pathType","getPatternFill","pattFill","fgColorNode","bgColorNode","foregroundColor","backgroundColor","getBgGradientFill","slideMasterContent","grdFill","getSlideBackgroundFill","slideContent","slideLayoutContent","bgRef","background","backgroundType","bgFillTyp","sldFill","clrMapOvr","sldBgClr","gradientFill","patternFill","idx","Number","trueIdx","bgFillLst","sortblAry","bgFillLstTyp","obj","sortByOrder","bgFillLstIdx","getShapeFillCandidates","source","slideLayoutSpNode","slideMasterSpNode","candidates","resolveShapeFillFromNode","groupHierarchy","spPr","fillValue","shpFill","groupFill","findFillInGroupHierarchy","useBgFill","bgFill","fillRefNode","getShapeFill","options","candidate","groupNode","grpSpPr","solidFill","clrNode","defBultColorVals","red","green","blue","prstClr","hsl2rgb","sysClr","alpha","isNaN","al_color","hueMod","lumMod","lumOff","satMod","shade","tint","getLineEnd","attrs","lineEnd","getBorder","elType","spPrLineNode","lnRefNode","lineNode","lnIdx","isNoFill","hasFill","hasWidth","borderWidth","hasLineNode","borderColor","gradValue","borderType","strokeDasharray","headEnd","tailEnd","extractChartColors","serNode","schemeClrs","clr","extractChartData","dataMat","innerNode","index","dataRow","colName","rowNames","extractScatterChartData","serNodes","firstSerNode","xData","yData","getChartInfo","plotArea","chart","RATIO_Inches_EMUs","RATIO_Inches_Points","RATIO_EMUs_Points","getParagraphLevel","lvlIdx","lvlNode","getAlignFromTextNode","lvlStr","algn","getHorizontalAlign","pNode","getVerticalAlign","anchor","getTextDirection","sources","direction","getTextAutoFit","checkBodyPr","bodyPr","wrap","wrapText","fontScale","scalePercent","nodeCheck","layoutCheck","masterCheck","pushParagraphStyleNode","styleNodes","styleNode","appendTextBodyParagraphStyleNodes","textBodyNode","lvl","lvlPath","appendShapeParagraphStyleNodes","shapeNode","appendMasterTextParagraphStyleNodes","slideMasterTextStyles","appendDefaultTextParagraphStyleNodes","defaultTextStyle","getParagraphStyleNodes","pPrNode","getLineSpacingValue","spacingNode","spcPct","spcPts","getParagraphSpacingValue","getParagraphIndentValue","attrName","val","getParagraphSpacing","spacing","lineSpacing","spaceBefore","spaceAfter","lnSpcReductionVal","getLnSpcReduction","reduction","src","getParagraphIndent","indent","marginLeft","textIndent","DEFAULT_INSET_EMU","getInsetAttr","slideNode","layoutNode","masterNode","v","emuToPt","emuStr","getTextInsets","nodeBodyPr","layoutBodyPr","masterBodyPr","li","ti","ri","bi","l","t","getPosition","slideSpNode","off","getSize","ext","findOMath","results","localName","tag","firstRawOMath","found","oMathToLatex","simplifiedNode","rawNode","math","latexFormart","ommlNodeToLatex","toArray","mathPayloads","container","direct","para","inner","getInlineMathRuns","runs","push","order","latex","wrapper","findMathRunPr","skipCtrlPr","rPr","getMathRunStyleNode","mathRun","mathNode","mathRunHasOwnSize","mathRunHasOwnColor","getShadow","chdwClrNode","outerShdwAttrs","dir","dist","blurRad","vx","hx","pushStyleNode","getLevelPath","appendTextBodyStyleNodes","appendShapeStyleNodes","appendMasterTextStyleNodes","appendDefaultTextStyleNodes","getBaseFontStyleNodes","runStyleNode","getFontStyleNodes","getFontAttr","attrValue","containsEastAsian","getFontTypeface","isEA","latin","ea","cs","sym","getColorFromNode","getFontColorFromStyleNodes","getTextShadowFromStyleNodes","txtShadow","shadow","getFontType","typeface","fontSchemeNode","getFontColor","pFontStyle","layoutFontStyle","masterFontStyle","getFontSize","sz","fontSize","getFontBold","getFontItalic","getFontDecoration","getFontDecorationLine","getFontSpace","spc","getFontSubscript","baseline","getFontShadow","h","blur","getTextNodeValue","genTextBody","spNode","pNodes","listTypes","rNode","fldNode","brNode","item","mathRuns","listType","getListType","listLevel","getListLevel","alignStyle","styleText","closedListType","prevStyleInfo","accumulatedText","firstTextRun","lastTextRun","rNodeItem","processedText","siblingRun","mathStyle","getMathRunStyleText","styleInfo","getSpanStyleInfo","genSpanElement","sizeNode","colorNode","fontColor","hasContent","schemeColorToCss","applyHyperlinkRunStyle","next","runFill","runHasOwnColor","hlinkColor","runUnderline","hasLink","linkURL","fontType","fontBold","fontItalic","fontDecoration","fontDecorationLine","fontSpace","subscript","stops","gradientStyle","linkID","shapeArc","cX","cY","rX","rY","stAng","endAng","isClose","dData","radians","getCustomShapePath","custShapType","w","pathLstNode","pathNodes","maxX","maxY","moveToNode","lnToNodes","cubicBezToNodes","quadBezToNodes","arcToNodes","closeNode","multiSapeAry","moveToPtNode","moveToNoPt","spX","spY","lnToPtNode","lnToNoPt","ptX","ptY","cubicBezToPtNodesAry","pts_ary","pt","pt_obj","quadBezToPtNodesAry","arcToNodesAry","arcToNodesAttrs","hR","wR","swAng","shftX","shftY","arcToPtNode","Infinity","k","Lx","Ly","Cx1","Cy1","Cx2","Cy2","Cx3","Cy3","Qx1","Qy1","Qx2","Qy2","isStrokeOnlyCustomGeometry","pathNodeList","identifyShape","shapeData","pathLst","pathWidth","pathHeight","commands","extractPathCommands","analysis","analyzePathCommands","matchShape","moveTo","lineToList","normalizeToArray","lnTo","cubicList","cubic","pts","points","arcList","arc","quadList","quad","cmd","checkIfCircular","bezierCommands","endpoints","hasTop","p","hasBottom","hasLeft","hasRight","lineCount","curveCount","isClosed","vertices","hasCurves","isCircular","matchPolygon","baseShape","matchPolygonByLineCount","uniqueVertices","removeDuplicateVertices","vertexCount","matchQuadrilateral","threshold","unique","isDuplicate","u","edges","p1","p2","isRectangle","isRhombus","isParallelogram","isTrapezoid","tolerance","edge02Similar","edge13Similar","e1","e2","dotProduct","cosAngle","avgLength","sum","e","slope0","slope2","slope1","slope3","parallel02","parallel13","convertEOTtoTTF","eotBuffer","eotSize","fontDataSize","version","magicNumber","ttfOffset","ttfBytes","ttfMagic","getFontData","fontPath","fontFilename","fontFile","buffer","blobObj","SYSTEM_FONT_FALLBACK_MAP","getFontFallback","fontName","lowerName","guessGenericFamily","getTableTextColor","tcTxStyle","getTableBorders","borders","border","getTableCellParams","tcNode","thisTblStyle","cellSource","rowSpan","colSpan","vMerge","hMerge","fillColor","getCelFill","cellObj","fill","bgFillschemeClr","rowTxtStyl","lin_bottm","lin_top","lin_left","lin_right","getTableRowParams","trNodes","tblStylAttrObj","local_fillColor","local_fontColor","shapePie","H","adj1","adj2","pieVal","piAngle","size","radiusY","radiusX","centerX","centerY","startRadians","endRadians","startX","startY","endX","endY","longArc","shapeGear","innerRadius","outerRadius","cx","cy","notches","radiusO","radiusI","taperO","taperI","pi2","taperAI","taperAO","toggle","increment","condition","shapeSnipRoundRect","shapeType","adjType","adjA","adjB","adjC","adjD","rA","rB","rC","rD","getShapePath","shapType","pathData","x1","y1","y2","y3","y4","y5","y6","y7","y8","y9","x2","x3","x4","x5","x6","x7","hc","vc","ss","dx2","g9","g10","g11","g12","g13","g14","g15","g16","g17","dx1","g19","g20","g21","g23","g24","g27","g29","g30","g31","g33","g36","g37","g41","g42","cX1","cX2","cY3","cX4","g18","g22","g25","g26","g28","g32","g34","g35","g38","cY1","cY2","g39","g40","g43","g44","g45","g46","g47","cX3","cY4","cd2","cd4","c3d4","wd2","hd2","idy","ib","ang1","ang1Dg","rx","ry","angVal","iDx","il","ir","it","shapAdjst_ary","sAdj1_val","sAdj2_val","shpTyp","adjTyp","adj","sAdj_name","sAdj1","sAdj2","sAdj","shapAdjst","shapAdjst_val","p1x","p1y","p2x","p2y","p3x","p3y","adjst_val","p4x","p4y","vf","cnstVal1","cnstVal2","angVal1","maxAdj","shd2","dy1","iwd2","ihd2","sdx","sdy","sx1","sx2","sy1","sy2","hf","swd2","svc","dy2","sdx1","sdx2","sdy1","sdy2","sx3","sx4","sy3","hd4","dx3","dy3","sdx3","sx5","sx6","sdy3","sy4","wd4","sy5","sy6","sdx4","sdy4","sx7","sx8","sy7","sy8","dx4","dx5","dy4","dy5","x8","x9","x10","y10","sdx5","sdx6","sdy5","sdy6","sx9","sx10","sx11","sx12","sy9","sy10","sy11","sy12","dx6","dx7","dy6","dy7","x11","x12","x13","x14","y11","y12","y13","y14","sdx7","sdx8","sdy7","sdy8","sx13","sx14","sx15","sx16","sy13","sy14","sy15","sy16","shapAdjstAry","fmla","a1","dr","outerPath","innerPath","ang","ct","st","drd2","dang","stAng1","stAng2","ct1","st1","m1","n1","stAng1deg","stAng2deg","swAng2deg","outerCircle","slash1","slash2","cnsVal","minWH","maxAdj2","a2","g2","maxAdj1","adj3","cd1","istAng","a3","sw11","sw12","iswAng","iendAng","stRd","istRd","wt1","ht1","wt2","ht2","cnstVal3","q1","q2","q3","cd","cnsVal1","cnsVal2","r2","tw","th","sw","sh","rd45","refr","cnstVa3","cnstVa4","g0","g1","g5","g6","ox1","oy1","ox2","oy2","x15","x16","x17","x18","x19","y15","y16","y17","y18","x0","y0","rX1","rY1","rX2","rY2","rX3","rY3","rX4","rY4","rY5","rX6","rY6","rX7","rY7","rX8","rY8","rX9","rY9","rX10","rY10","rX11","sA1","wA1","sA2","wA2","sA3","wA3","sA4","wA4","sA5","wA5","sA6","wA6","sA7","wA7","sA8","wA8","sA9","wA9","sA10","wA10","sA11","wA11","getArc","sA","wA","cloudPath","lastPoint","arcs","arcParams","arcPath","lastL","coords","dxPos","dyPos","xPos","yPos","ht","wt","g3","g4","g7","g8","x23","x24","x25","calloutPath","x1_mouth","ch","ch2","ch4","pang","enAng","dq","dz","xg1","xg2","yg1","yg2","xl","xt","xr","xb","yl","yt","yr","yb","u1","u2","v2","adj4","adj5","adj6","adj7","adj8","baseRect","cnstVal4","w1","ly1","ry4","ly2","ry3","ly4","ry2","y2_arc","cnstVal5","cnstVal6","wd8","wd32","of2","dx8","q10","minAdj3","f1","cx1","cx2","q1_h","q4","q5","rh","q8","cx4","q9","cx5","cy1","q6","cy3","cy4","cy6","cu1","u3","cu3","u5","u6","cu4","cu6","u7","max_sAdj2_const","sAdj2_val2","maxAdj3","aw2","th2","dh2","ah","bw","bh","bs","maxAdj4","a4","bd","bd3","bd2","minAdj5","a5","ssd8","ssd16","ssd32","aw","q7","q11","dx","dh","swAngDeg","mswAng","dang2","dang2Deg","swAng2","swAng3","dy","swAngDg","swAng2Dg","stAngDg","mswAngDg","swAng2dg","stAng3","stAng2dg","stAng3dg","angVal2","crAng","cadj2","xadj2","len","bhw","bhw2","dx67","dx57","dx47","dx37","rx6","rx5","rx4","rx3","rxt","lxt","lx","ly","dlx","drx","dly","dry","ma3h","ma3w","yg","rad","mAdj2","sa","ca","ta","dl","lM","xM","yM","dxAM","dyAM","xA","yA","xB","yB","yC","xD","xE","xF","xL","yG","yH","yI","dVal","match","command","newX","newY","c1x","c1y","newC1X","newC1Y","hd6","ad1","ad2","alfa","dx0","xC","yF","yE","dy22","yD","yP1","xP1","yP2","xP2","rdAngVal1","rdAngVal2","rdAngVal3","thh","rw1","rh1","rw2","rh2","rw3","rh3","wtH","htH","dxH","dyH","xH","rI","u8","u9","u12","u15","u18","u21","maxAng","aAng","ptAng","wtA","htA","dxA","dyA","dxG","dyG","xG","dxB","dyB","rO","x1O","y1O","x2O","y2O","dxO","dyO","dO","DO","sdelO","sdyO","dxF1","dxF2","dyF1","dyF2","q22","dxF","dyF","x1I","y1I","x2I","y2I","dxI","dyI","dI","DI","sdelI","dxC1","dxC2","dyC1","dyC2","v22","dxC","dyC","ist0","isw1","p5","xGp","yGp","xBp","yBp","en0","en2","sw0","strtAng","endAngVal","stiAng","ediAng","minAng","dxE","dyE","dxD","dyD","istAng0","iswAng0","stAng0","findTransitionNode","content","rootElement","path1","transitionNode","path2","path3","parseTransition","transition","durationFound","durRegex","effectRegex","effectNode","effectAttrs","PRESET_CLASSES","NODE_TYPE_TO_TRIGGER","asArray","parseMs","ms","findTimingNode","collectSpids","spid","String","collectDuration","walk","collectFilter","filter","collectDelay","inherited","fromAttr","condRoot","cond","fromCond","collectEffects","inheritedTrigger","inheritedDelay","trigger","delay","spids","duration","effectTrigger","animation","parseBuildList","timing","bldLst","kinds","builds","parseTiming","loadDiagramFile","transformDrawing","contentStr","JSON","getDiagramDrawingRelId","dataContent","relId","getDiagramNodeContext","relIds","diagramContent","digramFileContent","diagramResObj","diagramDataTarget","diagramLayoutTarget","diagramQuickStyleTarget","diagramColorsTarget","drawingRelId","drawingTarget","drawingName","diagramResFileName","digramResContent","relationshipArray","relationshipArrayItem","relTarget","getSmartArtTextData","ptLst","textBody","nodeText","paragraphs","cleanText","REL_TYPE_NAMESPACES","getRelTypeName","namespace","parse","slides","loadedImages","loadedVideos","loadedAudios","xmlCache","parseOptions","fileBytes","ArrayBuffer","File","buf","Buffer","Error","JSZip","filesInfo","getContentTypes","getSlideInfo","themeContent","themeColors","getTheme","usedFonts","getUsedFonts","singleSlide","processSingleSlide","asNodeArray","sortSlideXml","n2","normalizePartName","relationshipsPartFor","partName","slash","resolvePartTarget","sourcePart","target","raw","seg","relationshipRid","getPresentationPart","rels","rel","targetMode","loc","getSlidesFromPresentation","presentationPart","relItems","relsMap","slideTargets","id","presentation","sldIds","ordered","sldId","rid","ContentTypesJson","overrides","overrideSlides","slideLayoutsLocArray","contentType","slidesLocArray","embeddedFontList","embeddedFonts","relsContent","FONT_VARIANTS","embeddedFont","fontBlob","variant","variantNode","sldSzAttrs","themeURI","preResContent","relationshipItem","masterResContent","masterRelationshipArray","themeFilename","clrScheme","readXmlFileCached","sldFileName","resName","resContent","noteFilename","layoutFilename","masterFilename","slideResObj","layoutResObj","masterResObj","themeResObj","relType","isExternal","slideNotesContent","note","getNote","slideLayoutTables","indexNodes","slideLayoutResFilename","slideLayoutResContent","slideMasterTables","slideMasterResFilename","slideMasterResContent","currentThemeContent","themeName","themeResFileName","themeResContent","tableStyles","nodes","layoutElements","getLayoutElements","elements","nodeKey","ret","processNodesInSlide","animations","showMasterSpOnSlide","isHidden","hideBackground","getHyperlinkFromCNvPr","cNvPr","hlinkClick","linkId","res","noteContent","spNodes","phType","pPr","rNodes","nodesSldLayout","nodesSldMaster","showMasterSp","ph","keys","spTreeNode","idTable","idxTable","typeTable","targetNode","targetNodeItem","nvSpPrNode","nodeValue","json","processSpNode","processCxnSpNode","processPicNode","processGraphicFrameNode","processGroupSpNode","processMathNode","choice","fallback","xfrmNode","top","left","oMath","blipFill","sp","parentGroupHierarchy","chx","chy","chcx","chcy","isFlipV","isFlipH","rotate","ws","hs","currentGroupHierarchy","transformGroupedElement","element","offsetX","offsetY","elementRotate","normalizedRotate","isUniformScale","shouldSwapDimensions","nextCenterX","nextCenterY","widthScale","heightScale","transformed","processedElements","processNestedGroupElements","depth","processed","txBoxVal","link","genShape","xfrmList","slideXfrmNode","slideLayoutXfrmNode","slideMasterXfrmNode","keypoints","adjList","pathViewBox","txtXframeNode","txtRotate","txtXframeRot","outerShdwNode","vAlign","textDirection","isVertical","autoFit","textInset","isHasValidText","customShapeData","shapePath","STROKE_ONLY_PRESET_SHAPE_TYPES","isStrokeOnlyPresetShape","resObj","imgName","rotateNode","videoNode","videoRid","videoFile","videoFileExt","isVdeoLink","audioNode","audioRid","audioFile","audioFileExt","rect","srcRectAttrs","prstGeom","custGeom","identifiedShape","shapeDataJson","imageDataJson","graphicTypeUri","genTable","genChart","genDiagram","oleObjNode","tableNode","getTblPr","getColsGrid","colWidths","colWidthParam","colWidth","firstRowAttr","firstColAttr","lastRowAttr","lastColAttr","bandRowAttr","bandColAttr","tbleStyleId","tbleStylList","tblStyl","tblBorderStyl","tbl_bgcolor","tbl_bgFillschemeClr","rowHeights","trNode","rowHeightParam","rowHeight","tcNodes","tr","j","a_sorce","aBandNode","cell","td","actualTableWidth","refName","diagramWarpObj","dgmDrwSpArray","textList","spList","el"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/readXmlFile.js","../src/utils.js","../src/schemeColor.js","../src/emf.js","../src/color.js","../src/fill.js","../src/border.js","../src/chart.js","../src/constants.js","../src/paragraph.js","../src/textInsets.js","../src/position.js","../src/math.js","../src/shadow.js","../src/fontStyle.js","../src/text.js","../src/shape.js","../src/font.js","../src/table.js","../src/shapePath.js","../src/animation.js","../src/diagram.js","../src/pptxtojson.js"],"sourcesContent":["import * as txml from 'txml/txml'\n\nlet cust_attr_order = 0\n\n// simplifyLostLess() flattens the txml tree into keyed objects, which loses\n// the exact child ordering OMML conversion depends on. For math roots we keep\n// the original txml node (non-enumerable, so tree walkers don't see it) and\n// hand it to dwml-ts untouched.\nconst RAW_NODE_TAGS = new Set(['m:oMath', 'm:oMathPara'])\n\nfunction isWhitespaceTextNode(node) {\n return typeof node === 'string' && node.trim() === ''\n}\n\nexport function simplifyLostLess(children, parentAttributes = {}) {\n const out = {}\n if (!children.length) return out\n\n if (children.length === 1 && typeof children[0] === 'string') {\n return Object.keys(parentAttributes).length ? {\n attrs: { order: cust_attr_order++, ...parentAttributes },\n value: children[0],\n } : children[0]\n }\n for (const child of children) {\n if (isWhitespaceTextNode(child)) continue\n if (typeof child !== 'object') return\n if (child.tagName === '?xml') continue\n\n if (!out[child.tagName]) out[child.tagName] = []\n\n const kids = simplifyLostLess(child.children || [], child.attributes)\n \n if (typeof kids === 'object') {\n if (!kids.attrs) kids.attrs = { order: cust_attr_order++ }\n else kids.attrs.order = cust_attr_order++\n\n if (RAW_NODE_TAGS.has(child.tagName)) {\n Object.defineProperty(kids, '__rawNode', { value: child, enumerable: false })\n }\n }\n if (Object.keys(child.attributes || {}).length) {\n kids.attrs = { ...kids.attrs, ...child.attributes }\n }\n out[child.tagName].push(kids)\n }\n for (const child in out) {\n if (out[child].length === 1) out[child] = out[child][0]\n }\n\n return out\n}\n\nexport async function readXmlFile(zip, filename) {\n try {\n const file = zip.file(filename)\n if (!file) return null\n const data = await file.async('string')\n return simplifyLostLess(txml.parse(data, { keepWhitespace: true, decodeEntities: true }))\n }\n catch {\n return null\n }\n}","// Attributes like rPr@b, xfrm@flipH and cNvSpPr@txBox are xsd:boolean, whose lexical space is\n// `1` / `0` / `true` / `false` — all four are valid. PowerPoint writes the numeric form, so testing\n// only for '1' appears to work, but other producers emit the literal form and then every bold run,\n// italic, flip and text-box flag in the file reads as false.\nexport function isOoxmlTrue(value) {\n return value === '1' || value === 'true'\n}\n\nexport function base64ArrayBuffer(arrayBuffer) {\n const encodings = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\n const bytes = new Uint8Array(arrayBuffer)\n const byteLength = bytes.byteLength\n const byteRemainder = byteLength % 3\n const mainLength = byteLength - byteRemainder\n \n let base64 = ''\n let a, b, c, d\n let chunk\n\n for (let i = 0; i < mainLength; i = i + 3) {\n chunk = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2]\n a = (chunk & 16515072) >> 18\n b = (chunk & 258048) >> 12\n c = (chunk & 4032) >> 6\n d = chunk & 63\n base64 += encodings[a] + encodings[b] + encodings[c] + encodings[d]\n }\n\n if (byteRemainder === 1) {\n chunk = bytes[mainLength]\n a = (chunk & 252) >> 2\n b = (chunk & 3) << 4\n base64 += encodings[a] + encodings[b] + '=='\n } \n else if (byteRemainder === 2) {\n chunk = (bytes[mainLength] << 8) | bytes[mainLength + 1]\n a = (chunk & 64512) >> 10\n b = (chunk & 1008) >> 4\n c = (chunk & 15) << 2\n base64 += encodings[a] + encodings[b] + encodings[c] + '='\n }\n\n return base64\n}\n\nexport function extractFileExtension(filename) {\n return filename.substr((~-filename.lastIndexOf('.') >>> 0) + 2)\n}\n\nexport function eachElement(node, func) {\n if (!node) return node\n\n let result = ''\n if (node.constructor === Array) {\n for (let i = 0; i < node.length; i++) {\n result += func(node[i], i)\n }\n } \n else result += func(node, 0)\n\n return result\n}\n\nexport function getTextByPathList(node, path) {\n if (!node) return node\n\n for (const key of path) {\n node = node[key]\n if (!node) return node\n }\n\n return node\n}\n\nexport function angleToDegrees(angle) {\n if (!angle) return 0\n return Math.round(angle / 60000)\n}\n\nexport function escapeHtml(text) {\n const map = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n }\n return text.replace(/[&<>\"']/g, m => map[m])\n}\n\nexport function getMimeType(imgFileExt) {\n let mimeType = ''\n switch (imgFileExt.toLowerCase()) {\n case 'jpg':\n case 'jpeg':\n mimeType = 'image/jpeg'\n break\n case 'png':\n mimeType = 'image/png'\n break\n case 'gif':\n mimeType = 'image/gif'\n break\n case 'emf':\n mimeType = 'image/x-emf'\n break\n case 'wmf':\n mimeType = 'image/x-wmf'\n break\n case 'svg':\n mimeType = 'image/svg+xml'\n break\n case 'mp4':\n mimeType = 'video/mp4'\n break\n case 'webm':\n mimeType = 'video/webm'\n break\n case 'ogg':\n mimeType = 'video/ogg'\n break\n case 'avi':\n mimeType = 'video/avi'\n break\n case 'mpg':\n mimeType = 'video/mpg'\n break\n case 'wmv':\n mimeType = 'video/wmv'\n break\n case 'mp3':\n mimeType = 'audio/mpeg'\n break\n case 'wav':\n mimeType = 'audio/wav'\n break\n case 'tif':\n mimeType = 'image/tiff'\n break\n case 'tiff':\n mimeType = 'image/tiff'\n break\n default:\n }\n return mimeType\n}\n\nexport function isVideoLink(vdoFile) {\n const urlRegex = /^(https?|ftp):\\/\\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,})(:[0-9]+)*(\\/($|[a-zA-Z0-9.,?'\\\\+&%$#=~_-]+))*$/\n return urlRegex.test(vdoFile)\n}\n\nexport function toHex(n) {\n let hex = n.toString(16)\n while (hex.length < 2) {\n hex = '0' + hex\n }\n return hex\n}\n\nexport function hasValidText(htmlString) {\n if (typeof DOMParser === 'undefined') {\n const text = htmlString.replace(/<[^>]+>/g, '').replace(/\\s+/g, ' ')\n return text.trim() !== ''\n }\n\n const parser = new DOMParser()\n const doc = parser.parseFromString(htmlString, 'text/html')\n const text = doc.body.textContent || doc.body.innerText\n return text.trim() !== ''\n}\n\nexport function numberToFixed(num, fractionDigits = 4) {\n return parseFloat(num.toFixed(fractionDigits))\n}","import { getTextByPathList } from './utils'\n\nexport function getSchemeColorFromTheme(schemeClr, warpObj, clrMap, phClr) {\n let color\n let slideLayoutClrOvride\n if (clrMap) slideLayoutClrOvride = clrMap\n else {\n let sldClrMapOvr = getTextByPathList(warpObj['slideContent'], ['p:sld', 'p:clrMapOvr', 'a:overrideClrMapping', 'attrs'])\n if (sldClrMapOvr) slideLayoutClrOvride = sldClrMapOvr\n else {\n sldClrMapOvr = getTextByPathList(warpObj['slideLayoutContent'], ['p:sldLayout', 'p:clrMapOvr', 'a:overrideClrMapping', 'attrs'])\n if (sldClrMapOvr) slideLayoutClrOvride = sldClrMapOvr\n else {\n slideLayoutClrOvride = getTextByPathList(warpObj['slideMasterContent'], ['p:sldMaster', 'p:clrMap', 'attrs'])\n }\n }\n }\n const schmClrName = schemeClr.substr(2)\n if (schmClrName === 'phClr' && phClr) color = phClr\n else {\n if (slideLayoutClrOvride) {\n switch (schmClrName) {\n case 'tx1':\n case 'tx2':\n case 'bg1':\n case 'bg2':\n schemeClr = 'a:' + slideLayoutClrOvride[schmClrName]\n break\n default:\n break\n }\n }\n else {\n switch (schmClrName) {\n case 'tx1':\n schemeClr = 'a:dk1'\n break\n case 'tx2':\n schemeClr = 'a:dk2'\n break\n case 'bg1':\n schemeClr = 'a:lt1'\n break\n case 'bg2':\n schemeClr = 'a:lt2'\n break\n default:\n break\n }\n }\n const refNode = getTextByPathList(warpObj['themeContent'], ['a:theme', 'a:themeElements', 'a:clrScheme', schemeClr])\n color = getTextByPathList(refNode, ['a:srgbClr', 'attrs', 'val'])\n if (!color && refNode) color = getTextByPathList(refNode, ['a:sysClr', 'attrs', 'lastClr'])\n }\n return color\n}","/**\n * EMF (Enhanced Metafile) bitmap extraction.\n *\n * PPTX files frequently embed EMF images as OLE object previews (equations,\n * pasted objects). Browsers cannot display EMF, so those images come out\n * broken. Many EMFs carry their raster content as an uncompressed DIB inside\n * an EMR_STRETCHDIBITS record — that bitmap is extracted here and re-encoded\n * as PNG, without implementing full EMF record interpretation.\n *\n * EMF record format: each record is { type: u32, size: u32, ...data },\n * walked sequentially until the EOF record (type 14).\n *\n * Ported from yinyao855/pptxtojson-pro `src/utils/emfParser.ts` (MIT),\n * restricted to the dependency-free DIB path (the PDF path there needs\n * pdfjs-dist, which is far too heavy for this bundle).\n */\n\nconst EMR_EOF = 14\nconst EMR_STRETCHDIBITS = 81\n\n// EMF header signature at offset 40: \" EMF\"\nconst EMF_SIGNATURE = 0x464d4520\n\n// DIB compression: uncompressed RGB\nconst BI_RGB = 0\n\n/**\n * Parse an EMF file and extract the first embedded uncompressed DIB as an\n * RGBA bitmap ({ width, height, data }). Returns null when the file is not\n * EMF or carries no supported bitmap.\n */\nexport function extractEmfBitmap(data) {\n if (!data || data.length < 44) return null\n\n const view = new DataView(data.buffer, data.byteOffset, data.byteLength)\n if (view.getUint32(40, true) !== EMF_SIGNATURE) return null\n\n let offset = 0\n while (offset + 8 <= data.length) {\n const recordType = view.getUint32(offset, true)\n const recordSize = view.getUint32(offset + 4, true)\n\n if (recordSize < 8 || offset + recordSize > data.length) break\n if (recordType === EMR_EOF) break\n\n if (recordType === EMR_STRETCHDIBITS && recordSize > 80) {\n const bitmap = parseStretchDibits(data, view, offset)\n if (bitmap) return bitmap\n }\n\n offset += recordSize\n }\n\n return null\n}\n\n/**\n * Parse a STRETCHDIBITS record and extract the bitmap as an RGBA buffer.\n *\n * Record layout (offsets from record start):\n * 0: type(4), 4: size(4), 8: rclBounds(16), 24: xDest(4), 28: yDest(4),\n * 32: xSrc(4), 36: ySrc(4), 40: cxSrc(4), 44: cySrc(4),\n * 48: offBmiSrc(4), 52: cbBmiSrc(4), 56: offBitsSrc(4), 60: cbBitsSrc(4),\n * 64: iUsageSrc(4), 68: dwRop(4), 72: cxDest(4), 76: cyDest(4)\n */\nfunction parseStretchDibits(data, view, offset) {\n if (offset + 80 > data.length) return null\n\n const offBmiSrc = view.getUint32(offset + 48, true)\n const cbBmiSrc = view.getUint32(offset + 52, true)\n const offBitsSrc = view.getUint32(offset + 56, true)\n const cbBitsSrc = view.getUint32(offset + 60, true)\n\n if (cbBmiSrc === 0 || cbBitsSrc === 0) return null\n\n const bmiStart = offset + offBmiSrc\n if (bmiStart + 40 > data.length) return null\n\n // BITMAPINFOHEADER\n const biWidth = view.getInt32(bmiStart + 4, true)\n const biHeight = view.getInt32(bmiStart + 8, true)\n const biBitCount = view.getUint16(bmiStart + 14, true)\n const biCompression = view.getUint32(bmiStart + 16, true)\n\n if (biCompression !== BI_RGB) return null\n if (biBitCount !== 24 && biBitCount !== 32) return null\n\n const width = Math.abs(biWidth)\n const height = Math.abs(biHeight)\n if (width === 0 || height === 0 || width > 8192 || height > 8192) return null\n\n const bitsStart = offset + offBitsSrc\n if (bitsStart + cbBitsSrc > data.length) return null\n\n const bitsData = data.subarray(bitsStart, bitsStart + cbBitsSrc)\n\n // Negative height means top-down row order; positive means bottom-up\n const topDown = biHeight < 0\n\n const pixels = new Uint8ClampedArray(width * height * 4)\n const bytesPerPixel = biBitCount / 8\n // DIB rows are padded to 4-byte boundaries\n const rowStride = Math.ceil((width * bytesPerPixel) / 4) * 4\n\n for (let y = 0; y < height; y++) {\n const srcRow = topDown ? y : height - 1 - y\n const srcOffset = srcRow * rowStride\n const dstOffset = y * width * 4\n\n for (let x = 0; x < width; x++) {\n const srcIdx = srcOffset + x * bytesPerPixel\n if (srcIdx + bytesPerPixel > bitsData.length) break\n\n // DIB stores BGR(A)\n pixels[dstOffset + x * 4 + 0] = bitsData[srcIdx + 2]\n pixels[dstOffset + x * 4 + 1] = bitsData[srcIdx + 1]\n pixels[dstOffset + x * 4 + 2] = bitsData[srcIdx + 0]\n pixels[dstOffset + x * 4 + 3] = biBitCount === 32 ? bitsData[srcIdx + 3] : 255\n }\n }\n\n return { width, height, data: pixels }\n}\n\n/**\n * Convert EMF bytes to a PNG data URL via canvas. Browser-only; returns ''\n * in non-DOM environments or when the EMF has no extractable bitmap.\n */\nexport function emfToPngDataUrl(data) {\n if (typeof document === 'undefined') return ''\n\n const bitmap = extractEmfBitmap(data)\n if (!bitmap) return ''\n\n const canvas = document.createElement('canvas')\n canvas.width = bitmap.width\n canvas.height = bitmap.height\n const ctx = canvas.getContext('2d')\n if (!ctx) return ''\n ctx.putImageData(new ImageData(bitmap.data, bitmap.width, bitmap.height), 0, 0)\n return canvas.toDataURL('image/png')\n}\n","import tinycolor from 'tinycolor2'\n\nexport function hueToRgb(t1, t2, hue) {\n if (hue < 0) hue += 6\n if (hue >= 6) hue -= 6\n if (hue < 1) return (t2 - t1) * hue + t1\n else if (hue < 3) return t2\n else if (hue < 4) return (t2 - t1) * (4 - hue) + t1\n return t1\n}\n\nexport function hslToRgb(hue, sat, light) {\n let t2\n hue = hue / 60\n if (light <= 0.5) {\n t2 = light * (sat + 1)\n } \n else {\n t2 = light + sat - (light * sat)\n }\n const t1 = light * 2 - t2\n const r = hueToRgb(t1, t2, hue + 2) * 255\n const g = hueToRgb(t1, t2, hue) * 255\n const b = hueToRgb(t1, t2, hue - 2) * 255\n return { r, g, b }\n}\n\nexport function applyShade(rgbStr, shadeValue, isAlpha) {\n const color = tinycolor(rgbStr).toHsl()\n if (shadeValue >= 1) shadeValue = 1\n const cacl_l = Math.min(color.l * shadeValue, 1)\n if (isAlpha) {\n return tinycolor({\n h: color.h,\n s: color.s,\n l: cacl_l,\n a: color.a\n }).toHex8()\n }\n\n return tinycolor({\n h: color.h,\n s: color.s,\n l: cacl_l,\n a: color.a,\n }).toHex()\n}\n\nexport function applyTint(rgbStr, tintValue, isAlpha) {\n const color = tinycolor(rgbStr).toHsl()\n if (tintValue >= 1) tintValue = 1\n const cacl_l = color.l * tintValue + (1 - tintValue)\n if (isAlpha) {\n return tinycolor({\n h: color.h,\n s: color.s,\n l: cacl_l,\n a: color.a\n }).toHex8()\n }\n\n return tinycolor({\n h: color.h,\n s: color.s,\n l: cacl_l,\n a: color.a\n }).toHex()\n}\n\nexport function applyLumOff(rgbStr, offset, isAlpha) {\n const color = tinycolor(rgbStr).toHsl()\n const lum = offset + color.l\n if (lum >= 1) {\n if (isAlpha) {\n return tinycolor({\n h: color.h,\n s: color.s,\n l: 1,\n a: color.a\n }).toHex8()\n }\n \n return tinycolor({\n h: color.h,\n s: color.s,\n l: 1,\n a: color.a\n }).toHex()\n }\n if (isAlpha) {\n return tinycolor({\n h: color.h,\n s: color.s,\n l: lum,\n a: color.a\n }).toHex8()\n }\n\n return tinycolor({\n h: color.h,\n s: color.s,\n l: lum,\n a: color.a\n }).toHex()\n}\n\nexport function applyLumMod(rgbStr, multiplier, isAlpha) {\n const color = tinycolor(rgbStr).toHsl()\n let cacl_l = color.l * multiplier\n if (cacl_l >= 1) cacl_l = 1\n if (isAlpha) {\n return tinycolor({\n h: color.h,\n s: color.s,\n l: cacl_l,\n a: color.a\n }).toHex8()\n }\n\n return tinycolor({\n h: color.h,\n s: color.s,\n l: cacl_l,\n a: color.a\n }).toHex()\n}\n\nexport function applyHueMod(rgbStr, multiplier, isAlpha) {\n const color = tinycolor(rgbStr).toHsl()\n let cacl_h = color.h * multiplier\n if (cacl_h >= 360) cacl_h = cacl_h - 360\n if (isAlpha) {\n return tinycolor({\n h: cacl_h,\n s: color.s,\n l: color.l,\n a: color.a\n }).toHex8()\n }\n\n return tinycolor({\n h: cacl_h,\n s: color.s,\n l: color.l,\n a: color.a\n }).toHex()\n}\n\nexport function applySatMod(rgbStr, multiplier, isAlpha) {\n const color = tinycolor(rgbStr).toHsl()\n let cacl_s = color.s * multiplier\n if (cacl_s >= 1) cacl_s = 1\n if (isAlpha) {\n return tinycolor({\n h: color.h,\n s: cacl_s,\n l: color.l,\n a: color.a\n }).toHex8()\n }\n\n return tinycolor({\n h: color.h,\n s: cacl_s,\n l: color.l,\n a: color.a\n }).toHex()\n}\n\nexport function getColorName2Hex(name) {\n let hex\n const colorName = ['AliceBlue', 'AntiqueWhite', 'Aqua', 'Aquamarine', 'Azure', 'Beige', 'Bisque', 'black', 'BlanchedAlmond', 'Blue', 'BlueViolet', 'Brown', 'BurlyWood', 'CadetBlue', 'Chartreuse', 'Chocolate', 'Coral', 'CornflowerBlue', 'Cornsilk', 'Crimson', 'Cyan', 'DarkBlue', 'DarkCyan', 'DarkGoldenRod', 'DarkGray', 'DarkGrey', 'DarkGreen', 'DarkKhaki', 'DarkMagenta', 'DarkOliveGreen', 'DarkOrange', 'DarkOrchid', 'DarkRed', 'DarkSalmon', 'DarkSeaGreen', 'DarkSlateBlue', 'DarkSlateGray', 'DarkSlateGrey', 'DarkTurquoise', 'DarkViolet', 'DeepPink', 'DeepSkyBlue', 'DimGray', 'DimGrey', 'DodgerBlue', 'FireBrick', 'FloralWhite', 'ForestGreen', 'Fuchsia', 'Gainsboro', 'GhostWhite', 'Gold', 'GoldenRod', 'Gray', 'Grey', 'Green', 'GreenYellow', 'HoneyDew', 'HotPink', 'IndianRed', 'Indigo', 'Ivory', 'Khaki', 'Lavender', 'LavenderBlush', 'LawnGreen', 'LemonChiffon', 'LightBlue', 'LightCoral', 'LightCyan', 'LightGoldenRodYellow', 'LightGray', 'LightGrey', 'LightGreen', 'LightPink', 'LightSalmon', 'LightSeaGreen', 'LightSkyBlue', 'LightSlateGray', 'LightSlateGrey', 'LightSteelBlue', 'LightYellow', 'Lime', 'LimeGreen', 'Linen', 'Magenta', 'Maroon', 'MediumAquaMarine', 'MediumBlue', 'MediumOrchid', 'MediumPurple', 'MediumSeaGreen', 'MediumSlateBlue', 'MediumSpringGreen', 'MediumTurquoise', 'MediumVioletRed', 'MidnightBlue', 'MintCream', 'MistyRose', 'Moccasin', 'NavajoWhite', 'Navy', 'OldLace', 'Olive', 'OliveDrab', 'Orange', 'OrangeRed', 'Orchid', 'PaleGoldenRod', 'PaleGreen', 'PaleTurquoise', 'PaleVioletRed', 'PapayaWhip', 'PeachPuff', 'Peru', 'Pink', 'Plum', 'PowderBlue', 'Purple', 'RebeccaPurple', 'Red', 'RosyBrown', 'RoyalBlue', 'SaddleBrown', 'Salmon', 'SandyBrown', 'SeaGreen', 'SeaShell', 'Sienna', 'Silver', 'SkyBlue', 'SlateBlue', 'SlateGray', 'SlateGrey', 'Snow', 'SpringGreen', 'SteelBlue', 'Tan', 'Teal', 'Thistle', 'Tomato', 'Turquoise', 'Violet', 'Wheat', 'White', 'WhiteSmoke', 'Yellow', 'YellowGreen']\n const colorHex = ['f0f8ff', 'faebd7', '00ffff', '7fffd4', 'f0ffff', 'f5f5dc', 'ffe4c4', '000000', 'ffebcd', '0000ff', '8a2be2', 'a52a2a', 'deb887', '5f9ea0', '7fff00', 'd2691e', 'ff7f50', '6495ed', 'fff8dc', 'dc143c', '00ffff', '00008b', '008b8b', 'b8860b', 'a9a9a9', 'a9a9a9', '006400', 'bdb76b', '8b008b', '556b2f', 'ff8c00', '9932cc', '8b0000', 'e9967a', '8fbc8f', '483d8b', '2f4f4f', '2f4f4f', '00ced1', '9400d3', 'ff1493', '00bfff', '696969', '696969', '1e90ff', 'b22222', 'fffaf0', '228b22', 'ff00ff', 'dcdcdc', 'f8f8ff', 'ffd700', 'daa520', '808080', '808080', '008000', 'adff2f', 'f0fff0', 'ff69b4', 'cd5c5c', '4b0082', 'fffff0', 'f0e68c', 'e6e6fa', 'fff0f5', '7cfc00', 'fffacd', 'add8e6', 'f08080', 'e0ffff', 'fafad2', 'd3d3d3', 'd3d3d3', '90ee90', 'ffb6c1', 'ffa07a', '20b2aa', '87cefa', '778899', '778899', 'b0c4de', 'ffffe0', '00ff00', '32cd32', 'faf0e6', 'ff00ff', '800000', '66cdaa', '0000cd', 'ba55d3', '9370db', '3cb371', '7b68ee', '00fa9a', '48d1cc', 'c71585', '191970', 'f5fffa', 'ffe4e1', 'ffe4b5', 'ffdead', '000080', 'fdf5e6', '808000', '6b8e23', 'ffa500', 'ff4500', 'da70d6', 'eee8aa', '98fb98', 'afeeee', 'db7093', 'ffefd5', 'ffdab9', 'cd853f', 'ffc0cb', 'dda0dd', 'b0e0e6', '800080', '663399', 'ff0000', 'bc8f8f', '4169e1', '8b4513', 'fa8072', 'f4a460', '2e8b57', 'fff5ee', 'a0522d', 'c0c0c0', '87ceeb', '6a5acd', '708090', '708090', 'fffafa', '00ff7f', '4682b4', 'd2b48c', '008080', 'd8bfd8', 'ff6347', '40e0d0', 'ee82ee', 'f5deb3', 'ffffff', 'f5f5f5', 'ffff00', '9acd32']\n const nameLower = name.toLowerCase()\n const findIndx = colorName.findIndex(n => n.toLowerCase() === nameLower)\n if (findIndx !== -1) hex = colorHex[findIndx]\n return hex\n}","import tinycolor from 'tinycolor2'\nimport { getSchemeColorFromTheme } from './schemeColor'\nimport { emfToPngDataUrl } from './emf'\nimport {\n applyShade,\n applyTint,\n applyLumOff,\n applyLumMod,\n applyHueMod,\n applySatMod,\n hslToRgb,\n getColorName2Hex,\n} from './color'\n\nimport {\n base64ArrayBuffer,\n getTextByPathList,\n angleToDegrees,\n escapeHtml,\n getMimeType,\n toHex,\n} from './utils'\n\nexport function getFillType(node) {\n let fillType = ''\n if (node['a:noFill']) fillType = 'NO_FILL'\n if (node['a:solidFill']) fillType = 'SOLID_FILL'\n if (node['a:gradFill']) fillType = 'GRADIENT_FILL'\n if (node['a:pattFill']) fillType = 'PATTERN_FILL'\n if (node['a:blipFill']) fillType = 'PIC_FILL'\n if (node['a:grpFill']) fillType = 'GROUP_FILL'\n\n return fillType\n}\n\nfunction createImageData(ref = '') {\n return {\n ref,\n base64: '',\n blob: '',\n align: {\n t: 0,\n b: 0,\n l: 0,\n r: 0,\n },\n alignType: 'stretch',\n }\n}\n\nfunction createMediaData(ref = '') {\n return {\n ref,\n blob: '',\n }\n}\n\nfunction getMediaCache(warpObj, cacheKey) {\n const cache = warpObj[cacheKey] || {}\n warpObj[cacheKey] = cache\n return cache\n}\n\nasync function loadMedia(filePath, warpObj, cacheKey, mode = 'base64') {\n if (!filePath || (mode !== 'base64' && mode !== 'blob')) return ''\n\n const normalizedPath = escapeHtml(filePath)\n const cache = getMediaCache(warpObj, cacheKey)\n const cacheItem = cache[normalizedPath] || { base64: '', blob: '' }\n cache[normalizedPath] = cacheItem\n\n if (cacheItem[mode]) return cacheItem[mode]\n\n const fileExt = normalizedPath.split('.').pop().toLowerCase()\n if (fileExt === 'xml') return ''\n\n const zipFile = warpObj['zip'].file(normalizedPath)\n if (!zipFile) return ''\n const arrayBuffer = await zipFile.async('arraybuffer')\n const mimeType = getMimeType(fileExt)\n\n // Browsers cannot render EMF (typically OLE object previews); extract the\n // embedded DIB bitmap and serve it as PNG instead of a broken image.\n if (fileExt === 'emf') {\n const pngDataUrl = emfToPngDataUrl(new Uint8Array(arrayBuffer))\n if (pngDataUrl) {\n if (mode === 'base64') {\n cacheItem.base64 = pngDataUrl\n }\n else {\n const pngBytes = Uint8Array.from(atob(pngDataUrl.split(',')[1]), c => c.charCodeAt(0))\n cacheItem.blob = URL.createObjectURL(new Blob([pngBytes], { type: 'image/png' }))\n }\n return cacheItem[mode]\n }\n }\n\n if (mode === 'base64') {\n cacheItem.base64 = `data:${mimeType};base64,${base64ArrayBuffer(arrayBuffer)}`\n }\n else if (mode === 'blob') {\n cacheItem.blob = URL.createObjectURL(new Blob([arrayBuffer], mimeType ? {\n type: mimeType\n } : undefined))\n }\n\n return cacheItem[mode]\n}\n\nexport async function loadImage(imgPath, warpObj, mode = 'base64') {\n return await loadMedia(imgPath, warpObj, 'loadedImages', mode)\n}\n\nexport async function loadVideo(videoPath, warpObj, mode = 'blob') {\n if (mode !== 'blob') return ''\n return await loadMedia(videoPath, warpObj, 'loadedVideos', 'blob')\n}\n\nexport async function loadAudio(audioPath, warpObj, mode = 'blob') {\n if (mode !== 'blob') return ''\n return await loadMedia(audioPath, warpObj, 'loadedAudios', 'blob')\n}\n\nfunction getImageMode(warpObj) {\n const imageMode = getTextByPathList(warpObj, ['options', 'imageMode'])\n if (imageMode === 'blob' || imageMode === 'both' || imageMode === 'none') return imageMode\n return 'base64'\n}\n\nfunction getVideoMode(warpObj) {\n const videoMode = getTextByPathList(warpObj, ['options', 'videoMode'])\n if (videoMode === 'blob') return 'blob'\n return 'none'\n}\n\nfunction getAudioMode(warpObj) {\n const audioMode = getTextByPathList(warpObj, ['options', 'audioMode'])\n if (audioMode === 'blob') return 'blob'\n return 'none'\n}\n\nexport async function getImageData(imgPath, warpObj) {\n const imageData = createImageData(imgPath || '')\n if (!imgPath) return imageData\n\n const imageMode = getImageMode(warpObj)\n if (imageMode === 'base64' || imageMode === 'both') {\n imageData.base64 = await loadImage(imgPath, warpObj, 'base64')\n }\n if (imageMode === 'blob' || imageMode === 'both') {\n imageData.blob = await loadImage(imgPath, warpObj, 'blob')\n }\n\n return imageData\n}\n\nexport async function getVideoData(videoPath, warpObj) {\n const videoData = createMediaData(videoPath || '')\n if (!videoPath) return videoData\n\n if (getVideoMode(warpObj) === 'blob') {\n videoData.blob = await loadVideo(videoPath, warpObj, 'blob')\n }\n\n return videoData\n}\n\nexport async function getAudioData(audioPath, warpObj) {\n const audioData = createMediaData(audioPath || '')\n if (!audioPath) return audioData\n\n if (getAudioMode(warpObj) === 'blob') {\n audioData.blob = await loadAudio(audioPath, warpObj, 'blob')\n }\n\n return audioData\n}\n\nexport async function getPicFill(type, node, warpObj) {\n if (!node) return createImageData()\n\n const rId = getTextByPathList(node, ['a:blip', 'attrs', 'r:embed'])\n let imgPath\n if (type === 'slideBg' || type === 'slide') {\n imgPath = getTextByPathList(warpObj, ['slideResObj', rId, 'target'])\n }\n else if (type === 'slideLayoutBg') {\n imgPath = getTextByPathList(warpObj, ['layoutResObj', rId, 'target'])\n }\n else if (type === 'slideMasterBg') {\n imgPath = getTextByPathList(warpObj, ['masterResObj', rId, 'target'])\n }\n else if (type === 'themeBg') {\n imgPath = getTextByPathList(warpObj, ['themeResObj', rId, 'target'])\n }\n else if (type === 'diagramBg') {\n imgPath = getTextByPathList(warpObj, ['diagramResObj', rId, 'target'])\n }\n if (!imgPath) return createImageData()\n\n const imageData = await getImageData(imgPath, warpObj)\n\n const align = { t: 0, b: 0, l: 0, r: 0 }\n let alignType = 'stretch'\n\n if (node['a:stretch']) {\n alignType = 'stretch'\n const fillRectAttrs = getTextByPathList(node, ['a:stretch', 'a:fillRect', 'attrs'])\n if (fillRectAttrs) {\n if (fillRectAttrs.t) align.t = parseInt(fillRectAttrs.t) / 1000\n if (fillRectAttrs.b) align.b = parseInt(fillRectAttrs.b) / 1000\n if (fillRectAttrs.l) align.l = parseInt(fillRectAttrs.l) / 1000\n if (fillRectAttrs.r) align.r = parseInt(fillRectAttrs.r) / 1000\n }\n }\n else if (node['a:tile']) {\n alignType = 'tile'\n const tileAttrs = getTextByPathList(node, ['a:tile', 'attrs'])\n if (tileAttrs) {\n if (tileAttrs.t) align.t = parseInt(tileAttrs.t) / 1000\n if (tileAttrs.b) align.b = parseInt(tileAttrs.b) / 1000\n if (tileAttrs.l) align.l = parseInt(tileAttrs.l) / 1000\n if (tileAttrs.r) align.r = parseInt(tileAttrs.r) / 1000\n }\n }\n else if (node['a:scale']) {\n alignType = 'scale'\n }\n\n imageData.align = align\n imageData.alignType = alignType\n\n return imageData\n}\n\nexport function getPicFillOpacity(node) {\n const aBlipNode = node['a:blip']\n\n const aphaModFixNode = getTextByPathList(aBlipNode, ['a:alphaModFix', 'attrs'])\n let opacity = 1\n if (aphaModFixNode && aphaModFixNode['amt'] && aphaModFixNode['amt'] !== '') {\n opacity = parseInt(aphaModFixNode['amt']) / 100000\n }\n\n return opacity\n}\n\nexport function getPicFilters(node) {\n if (!node) return null\n\n const aBlipNode = node['a:blip']\n if (!aBlipNode) return null\n\n const filters = {}\n\n // 从a:extLst中获取滤镜效果(Microsoft Office 2010+扩展)\n const extLstNode = aBlipNode['a:extLst']\n if (extLstNode && extLstNode['a:ext']) {\n const extNodes = Array.isArray(extLstNode['a:ext']) ? extLstNode['a:ext'] : [extLstNode['a:ext']]\n\n for (const extNode of extNodes) {\n if (!extNode['a14:imgProps'] || !extNode['a14:imgProps']['a14:imgLayer']) continue\n\n const imgLayerNode = extNode['a14:imgProps']['a14:imgLayer']\n const imgEffects = imgLayerNode['a14:imgEffect']\n\n if (!imgEffects) continue\n\n const effectArray = Array.isArray(imgEffects) ? imgEffects : [imgEffects]\n\n for (const effect of effectArray) {\n // 饱和度\n if (effect['a14:saturation']) {\n const satAttr = getTextByPathList(effect, ['a14:saturation', 'attrs', 'sat'])\n if (satAttr) {\n filters.saturation = parseInt(satAttr) / 100000\n }\n }\n\n // 亮度、对比度\n if (effect['a14:brightnessContrast']) {\n const brightAttr = getTextByPathList(effect, ['a14:brightnessContrast', 'attrs', 'bright'])\n const contrastAttr = getTextByPathList(effect, ['a14:brightnessContrast', 'attrs', 'contrast'])\n\n if (brightAttr) {\n filters.brightness = parseInt(brightAttr) / 100000\n }\n if (contrastAttr) {\n filters.contrast = parseInt(contrastAttr) / 100000\n }\n }\n\n // 锐化/柔化\n if (effect['a14:sharpenSoften']) {\n const amountAttr = getTextByPathList(effect, ['a14:sharpenSoften', 'attrs', 'amount'])\n if (amountAttr) {\n const amount = parseInt(amountAttr) / 100000\n if (amount > 0) {\n filters.sharpen = amount\n }\n else {\n filters.soften = Math.abs(amount)\n }\n }\n }\n\n // 色温\n if (effect['a14:colorTemperature']) {\n const tempAttr = getTextByPathList(effect, ['a14:colorTemperature', 'attrs', 'colorTemp'])\n if (tempAttr) {\n filters.colorTemperature = parseInt(tempAttr)\n }\n }\n }\n }\n }\n\n return Object.keys(filters).length > 0 ? filters : null\n}\n\nexport async function getBgPicFill(bgPr, sorce, warpObj) {\n const picFill = await getPicFill(sorce, bgPr['a:blipFill'], warpObj)\n const aBlipNode = bgPr['a:blipFill']['a:blip']\n\n const aphaModFixNode = getTextByPathList(aBlipNode, ['a:alphaModFix', 'attrs'])\n let opacity = 1\n if (aphaModFixNode && aphaModFixNode['amt'] && aphaModFixNode['amt'] !== '') {\n opacity = parseInt(aphaModFixNode['amt']) / 100000\n }\n\n return {\n ref: picFill.ref,\n base64: picFill.base64,\n blob: picFill.blob,\n opacity,\n }\n}\n\nexport function getGradientFill(node, warpObj) {\n if (!node['a:gsLst']) return null\n const gsLst = node['a:gsLst']['a:gs']\n const colors = []\n for (let i = 0; i < gsLst.length; i++) {\n const lo_color = getSolidFill(gsLst[i], undefined, undefined, warpObj)\n const pos = getTextByPathList(gsLst[i], ['attrs', 'pos'])\n\n colors[i] = {\n pos: pos ? (pos / 1000 + '%') : '',\n color: lo_color,\n }\n }\n const lin = node['a:lin']\n let rot = 0\n let pathType = 'line'\n if (lin) rot = angleToDegrees(lin['attrs']['ang'])\n else {\n const path = node['a:path']\n if (path && path['attrs'] && path['attrs']['path']) pathType = path['attrs']['path']\n }\n return {\n rot,\n path: pathType,\n colors: colors.sort((a, b) => parseInt(a.pos) - parseInt(b.pos)),\n }\n}\n\nexport function getPatternFill(node, warpObj) {\n if (!node) return null\n\n const pattFill = node['a:pattFill']\n if (!pattFill) return null\n\n const type = getTextByPathList(pattFill, ['attrs', 'prst'])\n\n const fgColorNode = pattFill['a:fgClr']\n const bgColorNode = pattFill['a:bgClr']\n\n let foregroundColor = '#000000'\n let backgroundColor = '#FFFFFF'\n\n if (fgColorNode) {\n foregroundColor = getSolidFill(fgColorNode, undefined, undefined, warpObj)\n }\n\n if (bgColorNode) {\n backgroundColor = getSolidFill(bgColorNode, undefined, undefined, warpObj)\n }\n\n return {\n type,\n foregroundColor,\n backgroundColor,\n }\n}\n\nexport function getBgGradientFill(bgPr, phClr, slideMasterContent, warpObj) {\n if (bgPr) {\n const grdFill = bgPr['a:gradFill']\n const gsLst = grdFill['a:gsLst']['a:gs']\n const colors = []\n \n for (let i = 0; i < gsLst.length; i++) {\n const lo_color = getSolidFill(gsLst[i], slideMasterContent['p:sldMaster']['p:clrMap']['attrs'], phClr, warpObj)\n const pos = getTextByPathList(gsLst[i], ['attrs', 'pos'])\n\n colors[i] = {\n pos: pos ? (pos / 1000 + '%') : '',\n color: lo_color,\n }\n }\n const lin = grdFill['a:lin']\n let rot = 0\n let pathType = 'line'\n if (lin) rot = angleToDegrees(lin['attrs']['ang']) + 0\n else {\n const path = grdFill['a:path']\n if (path && path['attrs'] && path['attrs']['path']) pathType = path['attrs']['path'] \n }\n return {\n rot,\n path: pathType,\n colors: colors.sort((a, b) => parseInt(a.pos) - parseInt(b.pos)),\n }\n }\n else if (phClr) {\n return phClr.indexOf('#') === -1 ? `#${phClr}` : phClr\n }\n return null\n}\n\nexport async function getSlideBackgroundFill(warpObj) {\n const slideContent = warpObj['slideContent']\n const slideLayoutContent = warpObj['slideLayoutContent']\n const slideMasterContent = warpObj['slideMasterContent']\n \n let bgPr = getTextByPathList(slideContent, ['p:sld', 'p:cSld', 'p:bg', 'p:bgPr'])\n let bgRef = getTextByPathList(slideContent, ['p:sld', 'p:cSld', 'p:bg', 'p:bgRef'])\n\n let background = '#fff'\n let backgroundType = 'color'\n\n if (bgPr) {\n const bgFillTyp = getFillType(bgPr)\n\n if (bgFillTyp === 'SOLID_FILL') {\n const sldFill = bgPr['a:solidFill']\n let clrMapOvr\n const sldClrMapOvr = getTextByPathList(slideContent, ['p:sld', 'p:clrMapOvr', 'a:overrideClrMapping', 'attrs'])\n if (sldClrMapOvr) clrMapOvr = sldClrMapOvr\n else {\n const sldClrMapOvr = getTextByPathList(slideLayoutContent, ['p:sldLayout', 'p:clrMapOvr', 'a:overrideClrMapping', 'attrs'])\n if (sldClrMapOvr) clrMapOvr = sldClrMapOvr\n else clrMapOvr = getTextByPathList(slideMasterContent, ['p:sldMaster', 'p:clrMap', 'attrs'])\n }\n const sldBgClr = getSolidFill(sldFill, clrMapOvr, undefined, warpObj)\n background = sldBgClr\n }\n else if (bgFillTyp === 'GRADIENT_FILL') {\n const gradientFill = getBgGradientFill(bgPr, undefined, slideMasterContent, warpObj)\n if (typeof gradientFill === 'string') {\n background = gradientFill\n }\n else if (gradientFill) {\n background = gradientFill\n backgroundType = 'gradient'\n }\n }\n else if (bgFillTyp === 'PIC_FILL') {\n background = await getBgPicFill(bgPr, 'slideBg', warpObj)\n backgroundType = 'image'\n }\n else if (bgFillTyp === 'PATTERN_FILL') {\n const patternFill = getPatternFill(bgPr, warpObj)\n if (patternFill) {\n background = patternFill\n backgroundType = 'pattern'\n }\n }\n }\n else if (bgRef) {\n let clrMapOvr\n const sldClrMapOvr = getTextByPathList(slideContent, ['p:sld', 'p:clrMapOvr', 'a:overrideClrMapping', 'attrs'])\n if (sldClrMapOvr) clrMapOvr = sldClrMapOvr\n else {\n const sldClrMapOvr = getTextByPathList(slideLayoutContent, ['p:sldLayout', 'p:clrMapOvr', 'a:overrideClrMapping', 'attrs'])\n if (sldClrMapOvr) clrMapOvr = sldClrMapOvr\n else clrMapOvr = getTextByPathList(slideMasterContent, ['p:sldMaster', 'p:clrMap', 'attrs'])\n }\n const phClr = getSolidFill(bgRef, clrMapOvr, undefined, warpObj)\n const idx = Number(bgRef['attrs']['idx'])\n\n if (idx > 1000) {\n const trueIdx = idx - 1000\n const bgFillLst = warpObj['themeContent']['a:theme']['a:themeElements']['a:fmtScheme']['a:bgFillStyleLst']\n const sortblAry = []\n Object.keys(bgFillLst).forEach(key => {\n const bgFillLstTyp = bgFillLst[key]\n if (key !== 'attrs') {\n if (bgFillLstTyp.constructor === Array) {\n for (let i = 0; i < bgFillLstTyp.length; i++) {\n const obj = {}\n obj[key] = bgFillLstTyp[i]\n if (bgFillLstTyp[i]['attrs']) {\n obj['idex'] = bgFillLstTyp[i]['attrs']['order']\n obj['attrs'] = {\n 'order': bgFillLstTyp[i]['attrs']['order']\n }\n }\n sortblAry.push(obj)\n }\n } \n else {\n const obj = {}\n obj[key] = bgFillLstTyp\n if (bgFillLstTyp['attrs']) {\n obj['idex'] = bgFillLstTyp['attrs']['order']\n obj['attrs'] = {\n 'order': bgFillLstTyp['attrs']['order']\n }\n }\n sortblAry.push(obj)\n }\n }\n })\n const sortByOrder = sortblAry.slice(0)\n sortByOrder.sort((a, b) => a.idex - b.idex)\n const bgFillLstIdx = sortByOrder[trueIdx - 1]\n const bgFillTyp = getFillType(bgFillLstIdx)\n if (bgFillTyp === 'SOLID_FILL') {\n const sldFill = bgFillLstIdx['a:solidFill']\n const sldBgClr = getSolidFill(sldFill, clrMapOvr, phClr, warpObj)\n background = sldBgClr\n } \n else if (bgFillTyp === 'GRADIENT_FILL') {\n const gradientFill = getBgGradientFill(bgFillLstIdx, phClr, slideMasterContent, warpObj)\n if (typeof gradientFill === 'string') {\n background = gradientFill\n }\n else if (gradientFill) {\n background = gradientFill\n backgroundType = 'gradient'\n }\n }\n }\n }\n else {\n bgPr = getTextByPathList(slideLayoutContent, ['p:sldLayout', 'p:cSld', 'p:bg', 'p:bgPr'])\n bgRef = getTextByPathList(slideLayoutContent, ['p:sldLayout', 'p:cSld', 'p:bg', 'p:bgRef'])\n\n let clrMapOvr\n const sldClrMapOvr = getTextByPathList(slideLayoutContent, ['p:sldLayout', 'p:clrMapOvr', 'a:overrideClrMapping', 'attrs'])\n if (sldClrMapOvr) clrMapOvr = sldClrMapOvr\n else clrMapOvr = getTextByPathList(slideMasterContent, ['p:sldMaster', 'p:clrMap', 'attrs'])\n\n if (bgPr) {\n const bgFillTyp = getFillType(bgPr)\n if (bgFillTyp === 'SOLID_FILL') {\n const sldFill = bgPr['a:solidFill']\n const sldBgClr = getSolidFill(sldFill, clrMapOvr, undefined, warpObj)\n background = sldBgClr\n }\n else if (bgFillTyp === 'GRADIENT_FILL') {\n const gradientFill = getBgGradientFill(bgPr, undefined, slideMasterContent, warpObj)\n if (typeof gradientFill === 'string') {\n background = gradientFill\n }\n else if (gradientFill) {\n background = gradientFill\n backgroundType = 'gradient'\n }\n }\n else if (bgFillTyp === 'PIC_FILL') {\n background = await getBgPicFill(bgPr, 'slideLayoutBg', warpObj)\n backgroundType = 'image'\n }\n else if (bgFillTyp === 'PATTERN_FILL') {\n const patternFill = getPatternFill(bgPr, warpObj)\n if (patternFill) {\n background = patternFill\n backgroundType = 'pattern'\n }\n }\n }\n else if (bgRef) {\n const phClr = getSolidFill(bgRef, clrMapOvr, undefined, warpObj)\n const idx = Number(bgRef['attrs']['idx'])\n \n if (idx > 1000) {\n const trueIdx = idx - 1000\n const bgFillLst = warpObj['themeContent']['a:theme']['a:themeElements']['a:fmtScheme']['a:bgFillStyleLst']\n const sortblAry = []\n Object.keys(bgFillLst).forEach(key => {\n const bgFillLstTyp = bgFillLst[key]\n if (key !== 'attrs') {\n if (bgFillLstTyp.constructor === Array) {\n for (let i = 0; i < bgFillLstTyp.length; i++) {\n const obj = {}\n obj[key] = bgFillLstTyp[i]\n if (bgFillLstTyp[i]['attrs']) {\n obj['idex'] = bgFillLstTyp[i]['attrs']['order']\n obj['attrs'] = {\n 'order': bgFillLstTyp[i]['attrs']['order']\n }\n }\n sortblAry.push(obj)\n }\n } \n else {\n const obj = {}\n obj[key] = bgFillLstTyp\n if (bgFillLstTyp['attrs']) {\n obj['idex'] = bgFillLstTyp['attrs']['order']\n obj['attrs'] = {\n 'order': bgFillLstTyp['attrs']['order']\n }\n }\n sortblAry.push(obj)\n }\n }\n })\n const sortByOrder = sortblAry.slice(0)\n sortByOrder.sort((a, b) => a.idex - b.idex)\n const bgFillLstIdx = sortByOrder[trueIdx - 1]\n const bgFillTyp = getFillType(bgFillLstIdx)\n if (bgFillTyp === 'SOLID_FILL') {\n const sldFill = bgFillLstIdx['a:solidFill']\n const sldBgClr = getSolidFill(sldFill, clrMapOvr, phClr, warpObj)\n background = sldBgClr\n }\n else if (bgFillTyp === 'GRADIENT_FILL') {\n const gradientFill = getBgGradientFill(bgFillLstIdx, phClr, slideMasterContent, warpObj)\n if (typeof gradientFill === 'string') {\n background = gradientFill\n }\n else if (gradientFill) {\n background = gradientFill\n backgroundType = 'gradient'\n }\n }\n else if (bgFillTyp === 'PIC_FILL') {\n background = await getBgPicFill(bgFillLstIdx, 'themeBg', warpObj)\n backgroundType = 'image'\n }\n else if (bgFillTyp === 'PATTERN_FILL') {\n const patternFill = getPatternFill(bgFillLstIdx, warpObj)\n if (patternFill) {\n background = patternFill\n backgroundType = 'pattern'\n }\n }\n }\n }\n else {\n bgPr = getTextByPathList(slideMasterContent, ['p:sldMaster', 'p:cSld', 'p:bg', 'p:bgPr'])\n bgRef = getTextByPathList(slideMasterContent, ['p:sldMaster', 'p:cSld', 'p:bg', 'p:bgRef'])\n\n const clrMap = getTextByPathList(slideMasterContent, ['p:sldMaster', 'p:clrMap', 'attrs'])\n if (bgPr) {\n const bgFillTyp = getFillType(bgPr)\n if (bgFillTyp === 'SOLID_FILL') {\n const sldFill = bgPr['a:solidFill']\n const sldBgClr = getSolidFill(sldFill, clrMap, undefined, warpObj)\n background = sldBgClr\n }\n else if (bgFillTyp === 'GRADIENT_FILL') {\n const gradientFill = getBgGradientFill(bgPr, undefined, slideMasterContent, warpObj)\n if (typeof gradientFill === 'string') {\n background = gradientFill\n }\n else if (gradientFill) {\n background = gradientFill\n backgroundType = 'gradient'\n }\n }\n else if (bgFillTyp === 'PIC_FILL') {\n background = await getBgPicFill(bgPr, 'slideMasterBg', warpObj)\n backgroundType = 'image'\n }\n else if (bgFillTyp === 'PATTERN_FILL') {\n const patternFill = getPatternFill(bgPr, warpObj)\n if (patternFill) {\n background = patternFill\n backgroundType = 'pattern'\n }\n }\n }\n else if (bgRef) {\n const phClr = getSolidFill(bgRef, clrMap, undefined, warpObj)\n const idx = Number(bgRef['attrs']['idx'])\n \n if (idx > 1000) {\n const trueIdx = idx - 1000\n const bgFillLst = warpObj['themeContent']['a:theme']['a:themeElements']['a:fmtScheme']['a:bgFillStyleLst']\n const sortblAry = []\n Object.keys(bgFillLst).forEach(key => {\n const bgFillLstTyp = bgFillLst[key]\n if (key !== 'attrs') {\n if (bgFillLstTyp.constructor === Array) {\n for (let i = 0; i < bgFillLstTyp.length; i++) {\n const obj = {}\n obj[key] = bgFillLstTyp[i]\n if (bgFillLstTyp[i]['attrs']) {\n obj['idex'] = bgFillLstTyp[i]['attrs']['order']\n obj['attrs'] = {\n 'order': bgFillLstTyp[i]['attrs']['order']\n }\n }\n sortblAry.push(obj)\n }\n } \n else {\n const obj = {}\n obj[key] = bgFillLstTyp\n if (bgFillLstTyp['attrs']) {\n obj['idex'] = bgFillLstTyp['attrs']['order']\n obj['attrs'] = {\n 'order': bgFillLstTyp['attrs']['order']\n }\n }\n sortblAry.push(obj)\n }\n }\n })\n const sortByOrder = sortblAry.slice(0)\n sortByOrder.sort((a, b) => a.idex - b.idex)\n const bgFillLstIdx = sortByOrder[trueIdx - 1]\n const bgFillTyp = getFillType(bgFillLstIdx)\n if (bgFillTyp === 'SOLID_FILL') {\n const sldFill = bgFillLstIdx['a:solidFill']\n const sldBgClr = getSolidFill(sldFill, clrMapOvr, phClr, warpObj)\n background = sldBgClr\n }\n else if (bgFillTyp === 'GRADIENT_FILL') {\n const gradientFill = getBgGradientFill(bgFillLstIdx, phClr, slideMasterContent, warpObj)\n if (typeof gradientFill === 'string') {\n background = gradientFill\n }\n else if (gradientFill) {\n background = gradientFill\n backgroundType = 'gradient'\n }\n }\n else if (bgFillTyp === 'PIC_FILL') {\n background = await getBgPicFill(bgFillLstIdx, 'themeBg', warpObj)\n backgroundType = 'image'\n }\n else if (bgFillTyp === 'PATTERN_FILL') {\n const patternFill = getPatternFill(bgFillLstIdx, warpObj)\n if (patternFill) {\n background = patternFill\n backgroundType = 'pattern'\n }\n }\n }\n }\n }\n }\n return {\n type: backgroundType,\n value: background,\n }\n}\n\nfunction getShapeFillCandidates(node, source, slideLayoutSpNode, slideMasterSpNode) {\n const candidates = [{ node, source }]\n\n if (slideLayoutSpNode) {\n candidates.push({\n node: slideLayoutSpNode,\n source: 'slideLayoutBg',\n })\n }\n if (slideMasterSpNode) {\n candidates.push({\n node: slideMasterSpNode,\n source: 'slideMasterBg',\n })\n }\n\n return candidates\n}\n\nasync function resolveShapeFillFromNode(node, warpObj, source, groupHierarchy) {\n if (!node) return { state: 'missing' }\n\n const spPr = getTextByPathList(node, ['p:spPr'])\n const fillType = spPr ? getFillType(spPr) : ''\n let type = 'color'\n let fillValue = ''\n if (fillType === 'NO_FILL') {\n return { state: 'none' }\n }\n else if (fillType === 'SOLID_FILL') {\n const shpFill = spPr['a:solidFill']\n fillValue = getSolidFill(shpFill, undefined, undefined, warpObj)\n type = 'color'\n }\n else if (fillType === 'GRADIENT_FILL') {\n const shpFill = spPr['a:gradFill']\n fillValue = getGradientFill(shpFill, warpObj)\n type = 'gradient'\n }\n else if (fillType === 'PIC_FILL') {\n const shpFill = spPr['a:blipFill']\n const picFill = await getPicFill(source, shpFill, warpObj)\n const opacity = getPicFillOpacity(shpFill)\n fillValue = {\n ref: picFill.ref,\n base64: picFill.base64,\n blob: picFill.blob,\n opacity,\n align: picFill.align,\n alignType: picFill.alignType,\n }\n type = 'image'\n }\n else if (fillType === 'PATTERN_FILL') {\n const shpFill = spPr['a:pattFill']\n fillValue = getPatternFill({ 'a:pattFill': shpFill }, warpObj)\n type = 'pattern'\n }\n else if (fillType === 'GROUP_FILL') {\n const groupFill = await findFillInGroupHierarchy(groupHierarchy, warpObj, source)\n return groupFill ? { state: 'found', fill: groupFill } : { state: 'none' }\n }\n if (!fillValue) {\n // Shapes with useBgFill=\"1\" take the slide background fill directly.\n const useBgFill = getTextByPathList(node, ['attrs', 'useBgFill'])\n if (useBgFill === '1' || useBgFill === 'true') {\n const bgFill = await getSlideBackgroundFill(warpObj)\n return bgFill ? { state: 'found', fill: bgFill } : { state: 'none' }\n }\n\n const fillRefNode = getTextByPathList(node, ['p:style', 'a:fillRef'])\n // fillRef@idx indexes the theme's fillStyleLst, in which 0 is defined as \"no fill\". The colour\n // the reference carries is only the one that would have applied had an entry been named, so\n // reading it regardless paints every unfilled shape in the theme's accent colour. getBorder\n // already resolves the sibling lnRef through its own idx; this is the same rule for the fill.\n if (fillRefNode && Number(getTextByPathList(fillRefNode, ['attrs', 'idx'])) === 0) {\n return { state: 'none' }\n }\n fillValue = getSolidFill(fillRefNode, undefined, undefined, warpObj)\n type = 'color'\n }\n if (!fillValue) {\n return { state: 'missing' }\n }\n\n return {\n state: 'found',\n fill: {\n type,\n value: fillValue,\n }\n }\n}\n\nexport async function getShapeFill(node, warpObj, source, options = {}) {\n const {\n groupHierarchy = [],\n slideLayoutSpNode,\n slideMasterSpNode,\n } = options\n\n const candidates = getShapeFillCandidates(node, source, slideLayoutSpNode, slideMasterSpNode)\n for (const candidate of candidates) {\n const result = await resolveShapeFillFromNode(candidate.node, warpObj, candidate.source, groupHierarchy)\n\n if (result.state === 'none') return null\n if (result.state === 'found') return result.fill\n }\n\n return null\n}\n\nasync function findFillInGroupHierarchy(groupHierarchy, warpObj, source) {\n for (const groupNode of groupHierarchy) {\n if (!groupNode || !groupNode['p:grpSpPr']) continue\n\n const grpSpPr = groupNode['p:grpSpPr']\n const fillType = getFillType(grpSpPr)\n\n if (fillType === 'SOLID_FILL') {\n const shpFill = grpSpPr['a:solidFill']\n const fillValue = getSolidFill(shpFill, undefined, undefined, warpObj)\n if (fillValue) {\n return {\n type: 'color',\n value: fillValue,\n }\n }\n }\n else if (fillType === 'GRADIENT_FILL') {\n const shpFill = grpSpPr['a:gradFill']\n const fillValue = getGradientFill(shpFill, warpObj)\n if (fillValue) {\n return {\n type: 'gradient',\n value: fillValue,\n }\n }\n }\n else if (fillType === 'PIC_FILL') {\n const shpFill = grpSpPr['a:blipFill']\n const picFill = await getPicFill(source, shpFill, warpObj)\n const opacity = getPicFillOpacity(shpFill)\n if (picFill.ref || picFill.base64 || picFill.blob) {\n return {\n type: 'image',\n value: {\n ref: picFill.ref,\n base64: picFill.base64,\n blob: picFill.blob,\n opacity,\n align: picFill.align,\n alignType: picFill.alignType,\n },\n }\n }\n }\n else if (fillType === 'PATTERN_FILL') {\n const shpFill = grpSpPr['a:pattFill']\n const fillValue = getPatternFill({ 'a:pattFill': shpFill }, warpObj)\n if (fillValue) {\n return {\n type: 'pattern',\n value: fillValue,\n }\n }\n }\n else if (fillType === 'GROUP_FILL') {\n continue\n }\n else if (fillType === 'NO_FILL') {\n return null\n }\n }\n\n return { type: 'slide-background' }\n}\n\nexport function getSolidFill(solidFill, clrMap, phClr, warpObj) {\n if (!solidFill) return ''\n\n let color = ''\n let clrNode\n\n if (solidFill['a:srgbClr']) {\n clrNode = solidFill['a:srgbClr']\n color = getTextByPathList(clrNode, ['attrs', 'val'])\n } \n else if (solidFill['a:schemeClr']) {\n clrNode = solidFill['a:schemeClr']\n const schemeClr = 'a:' + getTextByPathList(clrNode, ['attrs', 'val'])\n color = getSchemeColorFromTheme(schemeClr, warpObj, clrMap, phClr) || ''\n }\n else if (solidFill['a:scrgbClr']) {\n clrNode = solidFill['a:scrgbClr']\n const defBultColorVals = clrNode['attrs']\n const red = (defBultColorVals['r'].indexOf('%') !== -1) ? defBultColorVals['r'].split('%').shift() : defBultColorVals['r']\n const green = (defBultColorVals['g'].indexOf('%') !== -1) ? defBultColorVals['g'].split('%').shift() : defBultColorVals['g']\n const blue = (defBultColorVals['b'].indexOf('%') !== -1) ? defBultColorVals['b'].split('%').shift() : defBultColorVals['b']\n color = toHex(255 * (Number(red) / 100)) + toHex(255 * (Number(green) / 100)) + toHex(255 * (Number(blue) / 100))\n } \n else if (solidFill['a:prstClr']) {\n clrNode = solidFill['a:prstClr']\n const prstClr = getTextByPathList(clrNode, ['attrs', 'val'])\n color = getColorName2Hex(prstClr)\n } \n else if (solidFill['a:hslClr']) {\n clrNode = solidFill['a:hslClr']\n const defBultColorVals = clrNode['attrs']\n const hue = Number(defBultColorVals['hue']) / 100000\n const sat = Number((defBultColorVals['sat'].indexOf('%') !== -1) ? defBultColorVals['sat'].split('%').shift() : defBultColorVals['sat']) / 100\n const lum = Number((defBultColorVals['lum'].indexOf('%') !== -1) ? defBultColorVals['lum'].split('%').shift() : defBultColorVals['lum']) / 100\n const hsl2rgb = hslToRgb(hue, sat, lum)\n color = toHex(hsl2rgb.r) + toHex(hsl2rgb.g) + toHex(hsl2rgb.b)\n } \n else if (solidFill['a:sysClr']) {\n clrNode = solidFill['a:sysClr']\n const sysClr = getTextByPathList(clrNode, ['attrs', 'lastClr'])\n if (sysClr) color = sysClr\n }\n\n let isAlpha = false\n const alpha = parseInt(getTextByPathList(clrNode, ['a:alpha', 'attrs', 'val'])) / 100000\n if (!isNaN(alpha)) {\n const al_color = tinycolor(color)\n al_color.setAlpha(alpha)\n color = al_color.toHex8()\n isAlpha = true\n }\n\n const hueMod = parseInt(getTextByPathList(clrNode, ['a:hueMod', 'attrs', 'val'])) / 100000\n if (!isNaN(hueMod)) {\n color = applyHueMod(color, hueMod, isAlpha)\n }\n const lumMod = parseInt(getTextByPathList(clrNode, ['a:lumMod', 'attrs', 'val'])) / 100000\n if (!isNaN(lumMod)) {\n color = applyLumMod(color, lumMod, isAlpha)\n }\n const lumOff = parseInt(getTextByPathList(clrNode, ['a:lumOff', 'attrs', 'val'])) / 100000\n if (!isNaN(lumOff)) {\n color = applyLumOff(color, lumOff, isAlpha)\n }\n const satMod = parseInt(getTextByPathList(clrNode, ['a:satMod', 'attrs', 'val'])) / 100000\n if (!isNaN(satMod)) {\n color = applySatMod(color, satMod, isAlpha)\n }\n const shade = parseInt(getTextByPathList(clrNode, ['a:shade', 'attrs', 'val'])) / 100000\n if (!isNaN(shade)) {\n color = applyShade(color, shade, isAlpha)\n }\n const tint = parseInt(getTextByPathList(clrNode, ['a:tint', 'attrs', 'val'])) / 100000\n if (!isNaN(tint)) {\n color = applyTint(color, tint, isAlpha)\n }\n\n if (color && color.indexOf('#') === -1) color = '#' + color\n\n return color\n}\n","import { getSolidFill, getGradientFill } from './fill'\nimport { getTextByPathList } from './utils'\n\nfunction getLineEnd(node) {\n const attrs = getTextByPathList(node, ['attrs'])\n if (!attrs) return undefined\n\n const lineEnd = { type: attrs.type || 'none' }\n if (attrs.w) lineEnd.width = attrs.w\n if (attrs.len) lineEnd.length = attrs.len\n return lineEnd\n}\n\nexport function getBorder(node, elType, warpObj) {\n const spPrLineNode = getTextByPathList(node, ['p:spPr', 'a:ln'])\n const lnRefNode = getTextByPathList(node, ['p:style', 'a:lnRef'])\n let lineNode = spPrLineNode\n if (!lineNode) {\n if (lnRefNode) {\n const lnIdx = getTextByPathList(lnRefNode, ['attrs', 'idx'])\n lineNode = warpObj['themeContent']['a:theme']['a:themeElements']['a:fmtScheme']['a:lnStyleLst']['a:ln'][Number(lnIdx) - 1]\n }\n }\n if (!lineNode) lineNode = node\n\n const isNoFill = getTextByPathList(lineNode, ['a:noFill'])\n const hasFill = lineNode['a:solidFill'] || lineNode['a:gradFill']\n const hasWidth = getTextByPathList(lineNode, ['attrs', 'w']) !== undefined\n\n // 正常解析边框宽度\n let borderWidth = isNoFill ? 0 : (parseInt(getTextByPathList(lineNode, ['attrs', 'w'])) / 12700)\n if (isNaN(borderWidth)) {\n const hasLineNode = lineNode && lineNode !== node\n borderWidth = (hasLineNode && (hasFill || hasWidth)) ? 9525 / 12700 : 0\n }\n\n let borderColor = null\n\n if (lineNode['a:solidFill']) {\n const color = getSolidFill(lineNode['a:solidFill'], undefined, undefined, warpObj)\n if (color) borderColor = { type: 'color', value: color }\n }\n\n // 仅当形状本身没有定义 a:ln(使用 lnRef 主题样式)时,才从 lnRef 取颜色\n if (!borderColor && !spPrLineNode) {\n if (lnRefNode) {\n const color = getSolidFill(lnRefNode, undefined, undefined, warpObj)\n if (color) borderColor = { type: 'color', value: color }\n }\n }\n\n if (!borderColor && lineNode['a:gradFill']) {\n const gradValue = getGradientFill(lineNode['a:gradFill'], warpObj)\n if (gradValue && gradValue.colors && gradValue.colors.length > 0) {\n borderColor = { type: 'gradient', value: gradValue }\n }\n }\n\n // 默认边框颜色为透明\n if (!borderColor) {\n borderColor = { type: 'color', value: 'transparent' }\n }\n\n const type = getTextByPathList(lineNode, ['a:prstDash', 'attrs', 'val'])\n let borderType = 'solid'\n let strokeDasharray = '0'\n switch (type) {\n case 'solid':\n borderType = 'solid'\n strokeDasharray = '0'\n break\n case 'dash':\n borderType = 'dashed'\n strokeDasharray = '5'\n break\n case 'dashDot':\n borderType = 'dashed'\n strokeDasharray = '5, 5, 1, 5'\n break\n case 'dot':\n borderType = 'dotted'\n strokeDasharray = '1, 5'\n break\n case 'lgDash':\n borderType = 'dashed'\n strokeDasharray = '10, 5'\n break\n case 'lgDashDotDot':\n borderType = 'dotted'\n strokeDasharray = '10, 5, 1, 5, 1, 5'\n break\n case 'sysDash':\n borderType = 'dashed'\n strokeDasharray = '5, 2'\n break\n case 'sysDashDot':\n borderType = 'dotted'\n strokeDasharray = '5, 2, 1, 5'\n break\n case 'sysDashDotDot':\n borderType = 'dotted'\n strokeDasharray = '5, 2, 1, 5, 1, 5'\n break\n case 'sysDot':\n borderType = 'dotted'\n strokeDasharray = '2, 5'\n break\n default:\n }\n\n const headEnd = getLineEnd(getTextByPathList(lineNode, ['a:headEnd']))\n const tailEnd = getLineEnd(getTextByPathList(lineNode, ['a:tailEnd']))\n\n return {\n borderColor,\n borderWidth,\n borderType,\n strokeDasharray,\n headEnd,\n tailEnd,\n }\n}\n","import { eachElement, getTextByPathList } from './utils'\nimport { applyTint } from './color'\n\nfunction extractChartColors(serNode, warpObj) {\n if (!serNode) return []\n\n if (serNode.constructor !== Array) serNode = [serNode]\n const schemeClrs = []\n for (const node of serNode) {\n let schemeClr = getTextByPathList(node, ['c:spPr', 'a:solidFill', 'a:schemeClr'])\n if (!schemeClr) schemeClr = getTextByPathList(node, ['c:spPr', 'a:ln', 'a:solidFill', 'a:schemeClr'])\n if (!schemeClr) schemeClr = getTextByPathList(node, ['c:marker', 'c:spPr', 'a:ln', 'a:solidFill', 'a:schemeClr'])\n\n let clr = getTextByPathList(schemeClr, ['attrs', 'val'])\n if (clr) {\n clr = getTextByPathList(warpObj['themeContent'], ['a:theme', 'a:themeElements', 'a:clrScheme', `a:${clr}`, 'a:srgbClr', 'attrs', 'val'])\n const tint = getTextByPathList(schemeClr, ['a:tint', 'attrs', 'val']) / 100000\n if (clr && !isNaN(tint)) {\n clr = applyTint(clr, tint)\n }\n }\n else clr = getTextByPathList(node, ['c:spPr', 'a:solidFill', 'a:srgbClr', 'attrs', 'val'])\n\n if (clr) clr = '#' + clr\n schemeClrs.push(clr)\n }\n return schemeClrs\n}\n\nfunction extractChartData(serNode) {\n const dataMat = []\n if (!serNode) return dataMat\n\n eachElement(serNode, (innerNode, index) => {\n const dataRow = []\n const colName = getTextByPathList(innerNode, ['c:tx', 'c:strRef', 'c:strCache', 'c:pt', 'c:v']) || index\n\n const rowNames = {}\n if (getTextByPathList(innerNode, ['c:cat', 'c:strRef', 'c:strCache', 'c:pt'])) {\n eachElement(innerNode['c:cat']['c:strRef']['c:strCache']['c:pt'], innerNode => {\n rowNames[innerNode['attrs']['idx']] = innerNode['c:v']\n return ''\n })\n } \n else if (getTextByPathList(innerNode, ['c:cat', 'c:numRef', 'c:numCache', 'c:pt'])) {\n eachElement(innerNode['c:cat']['c:numRef']['c:numCache']['c:pt'], innerNode => {\n rowNames[innerNode['attrs']['idx']] = innerNode['c:v']\n return ''\n })\n }\n\n if (getTextByPathList(innerNode, ['c:val', 'c:numRef', 'c:numCache', 'c:pt'])) {\n eachElement(innerNode['c:val']['c:numRef']['c:numCache']['c:pt'], innerNode => {\n dataRow.push({\n x: innerNode['attrs']['idx'],\n y: parseFloat(innerNode['c:v']),\n })\n return ''\n })\n }\n\n dataMat.push({\n key: colName,\n values: dataRow,\n xlabels: rowNames,\n })\n return ''\n })\n\n return dataMat\n}\n\nfunction extractScatterChartData(serNode) {\n const dataMat = []\n if (!serNode) return dataMat\n\n const serNodes = serNode.constructor === Array ? serNode : [serNode]\n const firstSerNode = serNodes[0]\n const xData = []\n\n eachElement(firstSerNode['c:xVal']['c:numRef']['c:numCache']['c:pt'], innerNode => {\n xData.push(parseFloat(innerNode['c:v']))\n return ''\n })\n dataMat.push(xData)\n\n for (const node of serNodes) {\n const yData = []\n eachElement(node['c:yVal']['c:numRef']['c:numCache']['c:pt'], innerNode => {\n yData.push(parseFloat(innerNode['c:v']))\n return ''\n })\n dataMat.push(yData)\n }\n\n return dataMat\n}\n\nexport function getChartInfo(plotArea, warpObj) {\n let chart = null\n for (const key in plotArea) {\n if (!plotArea[key]['c:ser']) continue\n\n switch (key) {\n case 'c:lineChart':\n chart = {\n type: 'lineChart',\n data: extractChartData(plotArea[key]['c:ser']),\n colors: extractChartColors(plotArea[key]['c:ser'], warpObj),\n grouping: getTextByPathList(plotArea[key], ['c:grouping', 'attrs', 'val']),\n marker: plotArea[key]['c:marker'] ? true : false,\n }\n break\n case 'c:line3DChart':\n chart = {\n type: 'line3DChart',\n data: extractChartData(plotArea[key]['c:ser']),\n colors: extractChartColors(plotArea[key]['c:ser'], warpObj),\n grouping: getTextByPathList(plotArea[key], ['c:grouping', 'attrs', 'val']),\n }\n break\n case 'c:barChart':\n chart = {\n type: 'barChart',\n data: extractChartData(plotArea[key]['c:ser']),\n colors: extractChartColors(plotArea[key]['c:ser'], warpObj),\n grouping: getTextByPathList(plotArea[key], ['c:grouping', 'attrs', 'val']),\n barDir: getTextByPathList(plotArea[key], ['c:barDir', 'attrs', 'val']),\n }\n break\n case 'c:bar3DChart':\n chart = {\n type: 'bar3DChart',\n data: extractChartData(plotArea[key]['c:ser']),\n colors: extractChartColors(plotArea[key]['c:ser'], warpObj),\n grouping: getTextByPathList(plotArea[key], ['c:grouping', 'attrs', 'val']),\n barDir: getTextByPathList(plotArea[key], ['c:barDir', 'attrs', 'val']),\n }\n break\n case 'c:pieChart':\n chart = {\n type: 'pieChart',\n data: extractChartData(plotArea[key]['c:ser']),\n colors: extractChartColors(plotArea[key]['c:ser']['c:dPt'], warpObj),\n }\n break\n case 'c:pie3DChart':\n chart = {\n type: 'pie3DChart',\n data: extractChartData(plotArea[key]['c:ser']),\n colors: extractChartColors(plotArea[key]['c:ser']['c:dPt'], warpObj),\n }\n break\n case 'c:doughnutChart':\n chart = {\n type: 'doughnutChart',\n data: extractChartData(plotArea[key]['c:ser']),\n colors: extractChartColors(plotArea[key]['c:ser']['c:dPt'], warpObj),\n holeSize: getTextByPathList(plotArea[key], ['c:holeSize', 'attrs', 'val']),\n }\n break\n case 'c:areaChart':\n chart = {\n type: 'areaChart',\n data: extractChartData(plotArea[key]['c:ser']),\n colors: extractChartColors(plotArea[key]['c:ser'], warpObj),\n grouping: getTextByPathList(plotArea[key], ['c:grouping', 'attrs', 'val']),\n }\n break\n case 'c:area3DChart':\n chart = {\n type: 'area3DChart',\n data: extractChartData(plotArea[key]['c:ser']),\n colors: extractChartColors(plotArea[key]['c:ser'], warpObj),\n grouping: getTextByPathList(plotArea[key], ['c:grouping', 'attrs', 'val']),\n }\n break\n case 'c:scatterChart':\n chart = {\n type: 'scatterChart',\n data: extractScatterChartData(plotArea[key]['c:ser']),\n colors: extractChartColors(plotArea[key]['c:ser'], warpObj),\n style: getTextByPathList(plotArea[key], ['c:scatterStyle', 'attrs', 'val']),\n }\n break\n case 'c:bubbleChart':\n chart = {\n type: 'bubbleChart',\n data: extractScatterChartData(plotArea[key]['c:ser']),\n colors: extractChartColors(plotArea[key]['c:ser'], warpObj),\n }\n break\n case 'c:radarChart':\n chart = {\n type: 'radarChart',\n data: extractChartData(plotArea[key]['c:ser']),\n colors: extractChartColors(plotArea[key]['c:ser'], warpObj),\n style: getTextByPathList(plotArea[key], ['c:radarStyle', 'attrs', 'val']),\n }\n break\n case 'c:surfaceChart':\n chart = {\n type: 'surfaceChart',\n data: extractChartData(plotArea[key]['c:ser']),\n colors: extractChartColors(plotArea[key]['c:ser'], warpObj),\n }\n break\n case 'c:surface3DChart':\n chart = {\n type: 'surface3DChart',\n data: extractChartData(plotArea[key]['c:ser']),\n colors: extractChartColors(plotArea[key]['c:ser'], warpObj),\n }\n break\n case 'c:stockChart':\n chart = {\n type: 'stockChart',\n data: extractChartData(plotArea[key]['c:ser']),\n colors: [],\n }\n break\n default:\n }\n }\n\n return chart\n}\n","export const RATIO_Inches_EMUs = 914400 // 1英寸 = 914400EMUs\nexport const RATIO_Inches_Points = 72 // 1英寸 = 72pt\nexport const RATIO_EMUs_Points = RATIO_Inches_Points / RATIO_Inches_EMUs // 1EMUs = (72 / 914400)pt","import { RATIO_EMUs_Points } from './constants'\nimport { getTextByPathList, numberToFixed } from './utils'\n\nfunction getParagraphLevel(node) {\n let lvlIdx = 1\n const lvlNode = getTextByPathList(node, ['a:pPr', 'attrs', 'lvl'])\n if (lvlNode !== undefined) lvlIdx = parseInt(lvlNode) + 1\n return lvlIdx\n}\n\nfunction getAlignFromTextNode(node, lvlStr) {\n if (!node) return ''\n\n let algn = getTextByPathList(node, ['p:txBody', 'a:lstStyle', lvlStr, 'attrs', 'algn'])\n if (!algn) algn = getTextByPathList(node, ['p:txBody', 'a:p', 'a:pPr', 'attrs', 'algn'])\n\n return algn || ''\n}\n\nexport function getHorizontalAlign(node, pNode, type, slideLayoutSpNode, slideMasterSpNode, warpObj) {\n let algn = getTextByPathList(node, ['a:pPr', 'attrs', 'algn'])\n\n if (!algn) algn = getTextByPathList(pNode, ['p:txBody', 'a:p', 'a:pPr', 'attrs', 'algn'])\n\n if (!algn) {\n const lvlIdx = getParagraphLevel(node)\n const lvlStr = 'a:lvl' + lvlIdx + 'pPr'\n\n algn = getAlignFromTextNode(slideLayoutSpNode, lvlStr)\n if (!algn) algn = getAlignFromTextNode(slideMasterSpNode, lvlStr)\n\n if (!algn && (type === 'title' || type === 'ctrTitle' || type === 'subTitle')) {\n algn = getTextByPathList(warpObj, ['slideMasterTextStyles', 'p:titleStyle', lvlStr, 'attrs', 'algn'])\n if (!algn && type === 'subTitle') {\n algn = getTextByPathList(warpObj, ['slideMasterTextStyles', 'p:bodyStyle', lvlStr, 'attrs', 'algn'])\n }\n } \n else if (!algn && type === 'body') {\n algn = getTextByPathList(warpObj, ['slideMasterTextStyles', 'p:bodyStyle', lvlStr, 'attrs', 'algn'])\n } \n else if (!algn) {\n algn = getTextByPathList(warpObj, ['slideMasterTextStyles', 'p:otherStyle', lvlStr, 'attrs', 'algn'])\n }\n }\n\n let align = 'left'\n if (algn) {\n switch (algn) {\n case 'l':\n align = 'left'\n break\n case 'r':\n align = 'right'\n break\n case 'ctr':\n align = 'center'\n break\n case 'just':\n align = 'justify'\n break\n case 'dist':\n align = 'distribute'\n break\n default:\n align = 'inherit'\n }\n }\n return align\n}\n\nexport function getVerticalAlign(node, slideLayoutSpNode, slideMasterSpNode) {\n let anchor = getTextByPathList(node, ['p:txBody', 'a:bodyPr', 'attrs', 'anchor'])\n if (!anchor) {\n anchor = getTextByPathList(slideLayoutSpNode, ['p:txBody', 'a:bodyPr', 'attrs', 'anchor'])\n if (!anchor) {\n anchor = getTextByPathList(slideMasterSpNode, ['p:txBody', 'a:bodyPr', 'attrs', 'anchor'])\n if (!anchor) anchor = 't'\n }\n }\n return (anchor === 'ctr') ? 'mid' : ((anchor === 'b') ? 'down' : 'up')\n}\n\nexport function getTextDirection(node, slideLayoutSpNode, slideMasterSpNode) {\n const sources = [node, slideLayoutSpNode, slideMasterSpNode]\n for (const source of sources) {\n const direction = getTextByPathList(source, ['p:txBody', 'a:bodyPr', 'attrs', 'vert'])\n if (direction) return direction\n }\n return 'horz'\n}\n\nexport function getTextAutoFit(node, slideLayoutSpNode, slideMasterSpNode) {\n function checkBodyPr(bodyPr) {\n if (!bodyPr) return null\n\n if (bodyPr['a:noAutofit']) return { result: null }\n else if (bodyPr['a:spAutoFit']) {\n const wrap = getTextByPathList(bodyPr, ['attrs', 'wrap'])\n const wrapText = wrap !== 'none'\n return { result: { type: 'shape', wrapText } }\n }\n else if (bodyPr['a:normAutofit']) {\n const fontScale = getTextByPathList(bodyPr['a:normAutofit'], ['attrs', 'fontScale'])\n if (fontScale) {\n const scalePercent = parseInt(fontScale) / 1000\n return {\n result: {\n type: 'text',\n fontScale: scalePercent,\n }\n }\n }\n return { result: { type: 'text' } }\n }\n return null\n }\n\n const nodeCheck = checkBodyPr(getTextByPathList(node, ['p:txBody', 'a:bodyPr']))\n if (nodeCheck) return nodeCheck.result\n\n const layoutCheck = checkBodyPr(getTextByPathList(slideLayoutSpNode, ['p:txBody', 'a:bodyPr']))\n if (layoutCheck) return layoutCheck.result\n\n const masterCheck = checkBodyPr(getTextByPathList(slideMasterSpNode, ['p:txBody', 'a:bodyPr']))\n if (masterCheck) return masterCheck.result\n\n return null\n}\n\nfunction pushParagraphStyleNode(styleNodes, styleNode) {\n if (styleNode) styleNodes.push(styleNode)\n}\n\nfunction appendTextBodyParagraphStyleNodes(styleNodes, textBodyNode, lvl) {\n if (!textBodyNode) return\n\n const lvlPath = `a:lvl${lvl}pPr`\n pushParagraphStyleNode(styleNodes, getTextByPathList(textBodyNode, ['a:lstStyle', lvlPath]))\n}\n\nfunction appendShapeParagraphStyleNodes(styleNodes, shapeNode, lvl) {\n if (!shapeNode) return\n\n const lvlPath = `a:lvl${lvl}pPr`\n pushParagraphStyleNode(styleNodes, getTextByPathList(shapeNode, ['p:txBody', 'a:lstStyle', lvlPath]))\n pushParagraphStyleNode(styleNodes, getTextByPathList(shapeNode, ['p:txBody', 'a:p', 'a:pPr']))\n}\n\nfunction appendMasterTextParagraphStyleNodes(styleNodes, type, lvl, slideMasterTextStyles) {\n if (!slideMasterTextStyles) return\n\n const lvlPath = `a:lvl${lvl}pPr`\n\n if (type === 'title' || type === 'ctrTitle' || type === 'subTitle') {\n pushParagraphStyleNode(styleNodes, getTextByPathList(slideMasterTextStyles, ['p:titleStyle', lvlPath]))\n if (type === 'subTitle') {\n pushParagraphStyleNode(styleNodes, getTextByPathList(slideMasterTextStyles, ['p:bodyStyle', lvlPath]))\n }\n }\n else if (type === 'body') {\n pushParagraphStyleNode(styleNodes, getTextByPathList(slideMasterTextStyles, ['p:bodyStyle', lvlPath]))\n }\n else {\n pushParagraphStyleNode(styleNodes, getTextByPathList(slideMasterTextStyles, ['p:otherStyle', lvlPath]))\n }\n}\n\nfunction appendDefaultTextParagraphStyleNodes(styleNodes, defaultTextStyle, lvl) {\n if (!defaultTextStyle) return\n\n const lvlPath = `a:lvl${lvl}pPr`\n pushParagraphStyleNode(styleNodes, getTextByPathList(defaultTextStyle, [lvlPath]))\n pushParagraphStyleNode(styleNodes, getTextByPathList(defaultTextStyle, ['a:defPPr']))\n}\n\nexport function getParagraphStyleNodes(pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, warpObj) {\n if (!pNode) return null\n\n const pPrNode = pNode['a:pPr']\n const lvl = getParagraphLevel(pNode)\n const styleNodes = []\n\n pushParagraphStyleNode(styleNodes, pPrNode)\n appendTextBodyParagraphStyleNodes(styleNodes, textBodyNode, lvl)\n appendShapeParagraphStyleNodes(styleNodes, slideLayoutSpNode, lvl)\n appendShapeParagraphStyleNodes(styleNodes, slideMasterSpNode, lvl)\n appendMasterTextParagraphStyleNodes(styleNodes, type, lvl, slideMasterTextStyles)\n appendDefaultTextParagraphStyleNodes(styleNodes, getTextByPathList(warpObj, ['defaultTextStyle']), lvl)\n\n return styleNodes\n}\n\nfunction getLineSpacingValue(spacingNode) {\n const spcPct = getTextByPathList(spacingNode, ['a:spcPct', 'attrs', 'val'])\n const spcPts = getTextByPathList(spacingNode, ['a:spcPts', 'attrs', 'val'])\n\n if (spcPct) return Math.round(parseInt(spcPct) / 1000 / 100 * 1.2 * 100) / 100\n if (spcPts) return parseInt(spcPts) / 100 + 'pt'\n\n return undefined\n}\n\nfunction getParagraphSpacingValue(spacingNode) {\n const spcPct = getTextByPathList(spacingNode, ['a:spcPct', 'attrs', 'val'])\n const spcPts = getTextByPathList(spacingNode, ['a:spcPts', 'attrs', 'val'])\n\n if (spcPct) return parseInt(spcPct) / 100000 + 'em'\n if (spcPts) return parseInt(spcPts) / 100 + 'pt'\n\n return undefined\n}\n\nfunction getParagraphIndentValue(styleNode, attrName) {\n const val = getTextByPathList(styleNode, ['attrs', attrName])\n\n if (val !== undefined && val !== '') return numberToFixed(parseInt(val) * RATIO_EMUs_Points) + 'pt'\n\n return undefined\n}\n\nexport function getParagraphSpacing(pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, warpObj) {\n const styleNodes = getParagraphStyleNodes(pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, warpObj)\n if (!styleNodes) return null\n\n const spacing = {}\n\n for (const styleNode of styleNodes) {\n if (spacing.lineSpacing === undefined) {\n const lineSpacing = getLineSpacingValue(styleNode['a:lnSpc'])\n if (lineSpacing !== undefined) spacing.lineSpacing = lineSpacing\n }\n\n if (spacing.spaceBefore === undefined) {\n const spaceBefore = getParagraphSpacingValue(styleNode['a:spcBef'])\n if (spaceBefore !== undefined) spacing.spaceBefore = spaceBefore\n }\n\n if (spacing.spaceAfter === undefined) {\n const spaceAfter = getParagraphSpacingValue(styleNode['a:spcAft'])\n if (spaceAfter !== undefined) spacing.spaceAfter = spaceAfter\n }\n }\n\n const lnSpcReductionVal = getLnSpcReduction(textBodyNode, slideLayoutSpNode, slideMasterSpNode)\n if (lnSpcReductionVal !== undefined) {\n const reduction = lnSpcReductionVal / 100000\n if (spacing.lineSpacing !== undefined) {\n if (typeof spacing.lineSpacing === 'number') {\n spacing.lineSpacing = Math.round((spacing.lineSpacing * (1 - reduction)) * 100) / 100\n }\n }\n else {\n spacing.lineSpacing = Math.round((1 - reduction) * 100) / 100\n }\n }\n\n return Object.keys(spacing).length > 0 ? spacing : null\n}\n\nfunction getLnSpcReduction(textBodyNode, slideLayoutSpNode, slideMasterSpNode) {\n const sources = [textBodyNode, slideLayoutSpNode && slideLayoutSpNode['p:txBody'], slideMasterSpNode && slideMasterSpNode['p:txBody']]\n for (const src of sources) {\n const val = getTextByPathList(src, ['a:bodyPr', 'a:normAutofit', 'attrs', 'lnSpcReduction'])\n if (val !== undefined) return parseInt(val)\n }\n return undefined\n}\n\nexport function getParagraphIndent(pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, warpObj) {\n const styleNodes = getParagraphStyleNodes(pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, warpObj)\n if (!styleNodes) return null\n\n const indent = {}\n\n for (const styleNode of styleNodes) {\n if (indent.marginLeft === undefined) {\n const marginLeft = getParagraphIndentValue(styleNode, 'marL')\n if (marginLeft !== undefined) indent.marginLeft = marginLeft\n }\n\n if (indent.textIndent === undefined) {\n const textIndent = getParagraphIndentValue(styleNode, 'indent')\n if (textIndent !== undefined) indent.textIndent = textIndent\n }\n }\n\n return Object.keys(indent).length > 0 ? indent : null\n}\n","import { getTextByPathList, numberToFixed } from './utils'\nimport { RATIO_EMUs_Points } from './constants'\n\nconst DEFAULT_INSET_EMU = {\n lIns: 91440, // 0.1 in\n rIns: 91440, // 0.1 in\n tIns: 45720, // 0.05 in\n bIns: 45720, // 0.05 in\n}\n\nfunction getInsetAttr(slideNode, layoutNode, masterNode, attrName) {\n let v = getTextByPathList(slideNode, ['p:txBody', 'a:bodyPr', 'attrs', attrName])\n if (v !== undefined && v !== null && v !== '') return v\n\n v = getTextByPathList(layoutNode, ['p:txBody', 'a:bodyPr', 'attrs', attrName])\n if (v !== undefined && v !== null && v !== '') return v\n\n return getTextByPathList(masterNode, ['p:txBody', 'a:bodyPr', 'attrs', attrName])\n}\n\nfunction emuToPt(emuStr) {\n if (emuStr === undefined || emuStr === null || emuStr === '') return null\n const v = parseInt(emuStr, 10)\n if (!Number.isFinite(v)) return null\n return numberToFixed(v * RATIO_EMUs_Points)\n}\n\nexport function getTextInsets(node, slideLayoutSpNode, slideMasterSpNode) {\n const nodeBodyPr = getTextByPathList(node, ['p:txBody', 'a:bodyPr'])\n const layoutBodyPr = getTextByPathList(slideLayoutSpNode, ['p:txBody', 'a:bodyPr'])\n const masterBodyPr = getTextByPathList(slideMasterSpNode, ['p:txBody', 'a:bodyPr'])\n\n if (!nodeBodyPr) {\n if (!layoutBodyPr) {\n if (!masterBodyPr) return null\n }\n }\n\n let li = getInsetAttr(node, slideLayoutSpNode, slideMasterSpNode, 'lIns')\n if (li === undefined || li === null || li === '') li = DEFAULT_INSET_EMU.lIns\n\n let ti = getInsetAttr(node, slideLayoutSpNode, slideMasterSpNode, 'tIns')\n if (ti === undefined || ti === null || ti === '') ti = DEFAULT_INSET_EMU.tIns\n\n let ri = getInsetAttr(node, slideLayoutSpNode, slideMasterSpNode, 'rIns')\n if (ri === undefined || ri === null || ri === '') ri = DEFAULT_INSET_EMU.rIns\n\n let bi = getInsetAttr(node, slideLayoutSpNode, slideMasterSpNode, 'bIns')\n if (bi === undefined || bi === null || bi === '') bi = DEFAULT_INSET_EMU.bIns\n\n let l = emuToPt(li)\n if (l === null) l = 0\n\n let t = emuToPt(ti)\n if (t === null) t = 0\n\n let r = emuToPt(ri)\n if (r === null) r = 0\n\n let b = emuToPt(bi)\n if (b === null) b = 0\n\n return { l, t, r, b }\n}\n","import { RATIO_EMUs_Points } from './constants'\nimport { numberToFixed } from './utils'\n\nexport function getPosition(slideSpNode, slideLayoutSpNode, slideMasterSpNode) {\n let off\n\n if (slideSpNode) off = slideSpNode['a:off']['attrs']\n else if (slideLayoutSpNode) off = slideLayoutSpNode['a:off']['attrs']\n else if (slideMasterSpNode) off = slideMasterSpNode['a:off']['attrs']\n\n if (!off) return { top: 0, left: 0 }\n\n return {\n top: numberToFixed(parseInt(off['y']) * RATIO_EMUs_Points),\n left: numberToFixed(parseInt(off['x']) * RATIO_EMUs_Points),\n }\n}\n\nexport function getSize(slideSpNode, slideLayoutSpNode, slideMasterSpNode) {\n let ext\n\n if (slideSpNode) ext = slideSpNode['a:ext']['attrs']\n else if (slideLayoutSpNode) ext = slideLayoutSpNode['a:ext']['attrs']\n else if (slideMasterSpNode) ext = slideMasterSpNode['a:ext']['attrs']\n\n if (!ext) return { width: 0, height: 0 }\n\n return {\n width: numberToFixed(parseInt(ext['cx']) * RATIO_EMUs_Points),\n height: numberToFixed(parseInt(ext['cy']) * RATIO_EMUs_Points),\n }\n}","import { decodeXML } from 'entities'\nimport { ommlNodeToLatex } from 'dwml-ts'\n\nexport function findOMath(obj) {\n let results = []\n if (typeof obj !== 'object') return results\n if (obj['m:oMath']) results = results.concat(obj['m:oMath'])\n \n Object.values(obj).forEach(value => {\n if (Array.isArray(value) || typeof value === 'object') {\n results = results.concat(findOMath(value))\n }\n })\n return results\n}\n\n/**\n * Convert a simplified oMath/oMathPara node to bare LaTeX.\n *\n * Conversion runs on the raw txml node retained by readXmlFile (`__rawNode`)\n * through dwml-ts — a port of the dwml OMML->LaTeX library — instead of the\n * lossy simplified tree. Returns '' when the node carries no convertible math.\n */\nfunction localName(tag) {\n if (!tag) return ''\n const i = tag.indexOf(':')\n return i >= 0 ? tag.slice(i + 1) : tag\n}\n\nfunction firstRawOMath(node) {\n if (!node || typeof node !== 'object') return null\n if (localName(node.tagName) === 'oMath') return node\n for (const child of node.children || []) {\n if (typeof child === 'object') {\n const found = firstRawOMath(child)\n if (found) return found\n }\n }\n return null\n}\n\nexport function oMathToLatex(simplifiedNode) {\n const rawNode = simplifiedNode && simplifiedNode.__rawNode\n if (!rawNode) return ''\n const math = firstRawOMath(rawNode) || rawNode\n return latexFormart(ommlNodeToLatex(math)).trim()\n}\n\nconst toArray = value => {\n if (!value) return []\n return Array.isArray(value) ? value : [value]\n}\n\n/**\n * Collect inline math runs of one `<a:p>` node: `<a14:m>` wrappers and bare\n * `<m:oMath>`/`<m:oMathPara>` siblings of the text runs. Each entry carries\n * the document-order attribute so it can be merged into the run list.\n */\nfunction mathPayloads(container) {\n const direct = toArray(container && container['m:oMath'])\n if (direct.length) return direct\n const out = []\n for (const para of toArray(container && container['m:oMathPara'])) {\n const inner = toArray(para['m:oMath'])\n if (inner.length) out.push(...inner)\n else out.push(para)\n }\n return out\n}\n\nexport function getInlineMathRuns(pNode) {\n const runs = []\n const push = (node, order) => {\n const latex = oMathToLatex(node)\n if (latex) runs.push({ type: 'math', latex, node, attrs: { order } })\n }\n\n for (const wrapper of toArray(pNode['a14:m'])) {\n const order = (wrapper && wrapper.attrs && wrapper.attrs.order) || 0\n for (const node of mathPayloads(wrapper)) push(node, order)\n }\n for (const node of mathPayloads(pNode)) {\n push(node, (node && node.attrs && node.attrs.order) || 0)\n }\n return runs\n}\n\nconst findMathRunPr = (node, skipCtrlPr) => {\n if (!node || typeof node !== 'object') return null\n if (node['a:rPr']) {\n const rPr = node['a:rPr']\n return Array.isArray(rPr) ? rPr[0] : rPr\n }\n for (const [key, value] of Object.entries(node)) {\n if (key === 'attrs' || (skipCtrlPr && key === 'm:ctrlPr')) continue\n for (const child of toArray(value)) {\n const found = findMathRunPr(child, skipCtrlPr)\n if (found) return found\n }\n }\n return null\n}\n\n/**\n * Resolve the run properties that size/color an equation. Math glyph runs\n * (`m:r > a:rPr`) carry the visible size; `m:ctrlPr` is only a fallback since\n * it describes the control characters, not the rendered operands. Returns a\n * node shaped like a text run so the standard fontStyle resolution chain\n * (run -> paragraph -> layout -> master) applies unchanged.\n */\nexport function getMathRunStyleNode(mathRun) {\n const mathNode = mathRun && mathRun.node\n const rPr = findMathRunPr(mathNode, true) || findMathRunPr(mathNode, false)\n return rPr ? { 'a:rPr': rPr } : {}\n}\n\n/** True when the math run's own properties pin a font size. */\nexport function mathRunHasOwnSize(styleNode) {\n const rPr = styleNode && styleNode['a:rPr']\n return !!(rPr && rPr.attrs && rPr.attrs.sz)\n}\n\n/** True when the math run's own properties pin a fill color. */\nexport function mathRunHasOwnColor(styleNode) {\n const rPr = styleNode && styleNode['a:rPr']\n return !!(rPr && (rPr['a:solidFill'] || rPr['a:gradFill'] || rPr['a:pattFill']))\n}\n\nexport function latexFormart(latex) {\n return decodeXML(latex)\n}\n","import { getSolidFill } from './fill'\nimport { RATIO_EMUs_Points } from './constants'\n\nexport function getShadow(node, warpObj) {\n const chdwClrNode = getSolidFill(node, undefined, undefined, warpObj)\n const outerShdwAttrs = node['attrs']\n const dir = outerShdwAttrs['dir'] ? (parseInt(outerShdwAttrs['dir']) / 60000) : 0\n const dist = outerShdwAttrs['dist'] ? parseInt(outerShdwAttrs['dist']) * RATIO_EMUs_Points : 0\n const blurRad = outerShdwAttrs['blurRad'] ? parseInt(outerShdwAttrs['blurRad']) * RATIO_EMUs_Points : ''\n const vx = dist * Math.sin(dir * Math.PI / 180)\n const hx = dist * Math.cos(dir * Math.PI / 180)\n\n return {\n h: hx,\n v: vx,\n blur: blurRad,\n color: chdwClrNode,\n }\n}","import { getTextByPathList, isOoxmlTrue } from './utils'\nimport { getShadow } from './shadow'\nimport { getFillType, getGradientFill, getSolidFill } from './fill'\n\nfunction pushStyleNode(styleNodes, styleNode) {\n if (styleNode) styleNodes.push(styleNode)\n}\n\nfunction getLevelPath(lvl) {\n return `a:lvl${lvl}pPr`\n}\n\nfunction appendTextBodyStyleNodes(styleNodes, textBodyNode, lvl) {\n if (!textBodyNode) return\n\n const lvlPath = getLevelPath(lvl)\n pushStyleNode(styleNodes, getTextByPathList(textBodyNode, ['a:lstStyle', lvlPath, 'a:defRPr']))\n}\n\nfunction appendShapeStyleNodes(styleNodes, shapeNode, lvl) {\n if (!shapeNode) return\n\n const lvlPath = getLevelPath(lvl)\n pushStyleNode(styleNodes, getTextByPathList(shapeNode, ['p:txBody', 'a:lstStyle', lvlPath, 'a:defRPr']))\n pushStyleNode(styleNodes, getTextByPathList(shapeNode, ['p:txBody', 'a:p', 'a:pPr', 'a:defRPr']))\n}\n\nfunction appendMasterTextStyleNodes(styleNodes, type, lvl, slideMasterTextStyles) {\n if (!slideMasterTextStyles) return\n\n const lvlPath = getLevelPath(lvl)\n\n if (type === 'title' || type === 'ctrTitle' || type === 'subTitle') {\n pushStyleNode(styleNodes, getTextByPathList(slideMasterTextStyles, ['p:titleStyle', lvlPath, 'a:defRPr']))\n if (type === 'subTitle') {\n pushStyleNode(styleNodes, getTextByPathList(slideMasterTextStyles, ['p:bodyStyle', lvlPath, 'a:defRPr']))\n }\n }\n else if (type === 'body') {\n pushStyleNode(styleNodes, getTextByPathList(slideMasterTextStyles, ['p:bodyStyle', lvlPath, 'a:defRPr']))\n }\n else {\n pushStyleNode(styleNodes, getTextByPathList(slideMasterTextStyles, ['p:otherStyle', lvlPath, 'a:defRPr']))\n }\n}\n\nfunction appendDefaultTextStyleNodes(styleNodes, lvl, defaultTextStyle) {\n if (!defaultTextStyle) return\n\n const lvlPath = getLevelPath(lvl)\n pushStyleNode(styleNodes, getTextByPathList(defaultTextStyle, [lvlPath, 'a:defRPr']))\n pushStyleNode(styleNodes, getTextByPathList(defaultTextStyle, ['a:defPPr', 'a:defRPr']))\n}\n\nfunction getBaseFontStyleNodes(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, lvl) {\n const styleNodes = []\n const runStyleNode = getTextByPathList(node, ['a:rPr'])\n\n pushStyleNode(styleNodes, runStyleNode)\n if (!runStyleNode) {\n pushStyleNode(styleNodes, getTextByPathList(pNode, ['a:endParaRPr']))\n }\n pushStyleNode(styleNodes, getTextByPathList(pNode, ['a:pPr', 'a:defRPr']))\n\n appendTextBodyStyleNodes(styleNodes, textBodyNode, lvl)\n appendShapeStyleNodes(styleNodes, slideLayoutSpNode, lvl)\n appendShapeStyleNodes(styleNodes, slideMasterSpNode, lvl)\n\n return styleNodes\n}\n\nfunction getFontStyleNodes(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl\n) {\n const styleNodes = getBaseFontStyleNodes(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, lvl)\n appendMasterTextStyleNodes(styleNodes, type, lvl, slideMasterTextStyles)\n\n return styleNodes\n}\n\nfunction getFontAttr(styleNodes, attrName) {\n for (const styleNode of styleNodes) {\n const attrValue = getTextByPathList(styleNode, ['attrs', attrName])\n if (attrValue !== undefined && attrValue !== '') return attrValue\n }\n\n return ''\n}\n\nfunction containsEastAsian(text) {\n // 涵盖中日韩文字、标点符号、全角字符等\n return /[\\u2E80-\\u9FFF\\uF900-\\uFAFF\\uFF00-\\uFF60\\uFFE0-\\uFFE6\\u3000-\\u303F]/.test(text)\n}\n\nfunction getFontTypeface(styleNodes, text) {\n const isEA = containsEastAsian(text)\n\n for (const styleNode of styleNodes) {\n const latin = getTextByPathList(styleNode, ['a:latin', 'attrs', 'typeface'])\n const ea = getTextByPathList(styleNode, ['a:ea', 'attrs', 'typeface'])\n const cs = getTextByPathList(styleNode, ['a:cs', 'attrs', 'typeface'])\n const sym = getTextByPathList(styleNode, ['a:sym', 'attrs', 'typeface'])\n\n if (isEA && ea) return ea\n if (latin) return latin\n if (ea) return ea\n if (cs) return cs\n if (sym) return sym\n }\n\n return ''\n}\n\nfunction getColorFromNode(node, warpObj) {\n if (!node) return ''\n\n const fillType = getFillType(node)\n if (fillType === 'SOLID_FILL') {\n return getSolidFill(node['a:solidFill'], undefined, undefined, warpObj)\n }\n if (fillType === 'GRADIENT_FILL') {\n return getGradientFill(node['a:gradFill'], warpObj)\n }\n\n return ''\n}\n\nfunction getFontColorFromStyleNodes(styleNodes, warpObj) {\n for (const styleNode of styleNodes) {\n const color = getColorFromNode(styleNode, warpObj)\n if (color) return color\n }\n\n return ''\n}\n\nfunction getTextShadowFromStyleNodes(styleNodes, warpObj) {\n for (const styleNode of styleNodes) {\n const txtShadow = getTextByPathList(styleNode, ['a:effectLst', 'a:outerShdw'])\n if (!txtShadow) continue\n\n const shadow = getShadow(txtShadow, warpObj)\n if (shadow) return shadow\n }\n\n return null\n}\n\nexport function getFontType(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl,\n warpObj,\n text\n) {\n const isEA = containsEastAsian(text)\n\n const styleNodes = getFontStyleNodes(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl\n )\n let typeface = getFontTypeface(styleNodes, text)\n\n if (!typeface || typeface.startsWith('+')) {\n const fontSchemeNode = getTextByPathList(warpObj['themeContent'], ['a:theme', 'a:themeElements', 'a:fontScheme'])\n\n if (fontSchemeNode) {\n if (typeface && typeface.startsWith('+')) {\n switch (typeface) {\n case '+mj-lt':\n return getTextByPathList(fontSchemeNode, ['a:majorFont', 'a:latin', 'attrs', 'typeface'])\n case '+mn-lt':\n return getTextByPathList(fontSchemeNode, ['a:minorFont', 'a:latin', 'attrs', 'typeface'])\n case '+mj-ea':\n return getTextByPathList(fontSchemeNode, ['a:majorFont', 'a:ea', 'attrs', 'typeface'])\n case '+mn-ea':\n return getTextByPathList(fontSchemeNode, ['a:minorFont', 'a:ea', 'attrs', 'typeface'])\n case '+mj-cs':\n return getTextByPathList(fontSchemeNode, ['a:majorFont', 'a:cs', 'attrs', 'typeface'])\n case '+mn-cs':\n return getTextByPathList(fontSchemeNode, ['a:minorFont', 'a:cs', 'attrs', 'typeface'])\n default:\n return typeface.replace(/^\\+/, '')\n }\n }\n }\n\n if (type === 'title' || type === 'subTitle' || type === 'ctrTitle') {\n typeface =\n (isEA ? getTextByPathList(fontSchemeNode, ['a:majorFont', 'a:ea', 'attrs', 'typeface']) : '') ||\n getTextByPathList(fontSchemeNode, ['a:majorFont', 'a:latin', 'attrs', 'typeface']) ||\n getTextByPathList(fontSchemeNode, ['a:majorFont', 'a:ea', 'attrs', 'typeface'])\n }\n else {\n typeface =\n (isEA ? getTextByPathList(fontSchemeNode, ['a:minorFont', 'a:ea', 'attrs', 'typeface']) : '') ||\n getTextByPathList(fontSchemeNode, ['a:minorFont', 'a:latin', 'attrs', 'typeface']) ||\n getTextByPathList(fontSchemeNode, ['a:minorFont', 'a:ea', 'attrs', 'typeface'])\n }\n }\n\n return typeface || ''\n}\n\nexport function getFontColor(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl,\n pFontStyle,\n warpObj\n) {\n // run 级别(a:rPr)是最高优先级。如果明确声明了 noFill,\n // 表示文字颜色为透明,应直接返回 transparent,不再继续向上查找。\n const runStyleNode = getTextByPathList(node, ['a:rPr'])\n if (runStyleNode && getFillType(runStyleNode) === 'NO_FILL') {\n return 'transparent'\n }\n\n const styleNodes = getBaseFontStyleNodes(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, lvl)\n let color = getFontColorFromStyleNodes(styleNodes, warpObj)\n\n if (!color) {\n if (pFontStyle) color = getSolidFill(pFontStyle, undefined, undefined, warpObj)\n if (!color) {\n const layoutFontStyle = getTextByPathList(slideLayoutSpNode, ['p:style', 'a:fontRef'])\n if (layoutFontStyle) color = getSolidFill(layoutFontStyle, undefined, undefined, warpObj)\n }\n if (!color) {\n const masterFontStyle = getTextByPathList(slideMasterSpNode, ['p:style', 'a:fontRef'])\n if (masterFontStyle) color = getSolidFill(masterFontStyle, undefined, undefined, warpObj)\n }\n }\n\n if (!color) {\n appendMasterTextStyleNodes(styleNodes, type, lvl, slideMasterTextStyles)\n color = getFontColorFromStyleNodes(styleNodes, warpObj)\n }\n\n return color || ''\n}\n\nexport function getFontSize(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl,\n defaultTextStyle\n) {\n const styleNodes = getFontStyleNodes(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl\n )\n appendDefaultTextStyleNodes(styleNodes, lvl, defaultTextStyle)\n const sz = getFontAttr(styleNodes, 'sz')\n let fontSize = sz ? parseInt(sz) / 100 : undefined\n\n if ((isNaN(fontSize) || !fontSize) && (type === 'dt' || type === 'sldNum')) fontSize = 12\n\n fontSize = isNaN(fontSize) || !fontSize ? 18 : fontSize\n\n return fontSize + 'pt'\n}\n\nexport function getFontBold(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl) {\n const styleNodes = getFontStyleNodes(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl)\n return isOoxmlTrue(getFontAttr(styleNodes, 'b')) ? 'bold' : ''\n}\n\nexport function getFontItalic(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl) {\n const styleNodes = getFontStyleNodes(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl)\n return isOoxmlTrue(getFontAttr(styleNodes, 'i')) ? 'italic' : ''\n}\n\nexport function getFontDecoration(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl\n) {\n const styleNodes = getFontStyleNodes(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl\n )\n return getFontAttr(styleNodes, 'u') === 'sng' ? 'underline' : ''\n}\n\nexport function getFontDecorationLine(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl\n) {\n const styleNodes = getFontStyleNodes(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl\n )\n return getFontAttr(styleNodes, 'strike') === 'sngStrike' ? 'line-through' : ''\n}\n\nexport function getFontSpace(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl\n) {\n const styleNodes = getFontStyleNodes(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl\n )\n const spc = getFontAttr(styleNodes, 'spc')\n return spc && parseInt(spc) !== 0 ? parseInt(spc) / 100 + 'pt' : ''\n}\n\nexport function getFontSubscript(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl\n) {\n const styleNodes = getFontStyleNodes(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl\n )\n const baseline = getFontAttr(styleNodes, 'baseline')\n if (!baseline || parseInt(baseline) === 0) return ''\n return parseInt(baseline) > 0 ? 'super' : 'sub'\n}\n\nexport function getFontShadow(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl,\n warpObj\n) {\n const styleNodes = getFontStyleNodes(\n node,\n pNode,\n textBodyNode,\n slideLayoutSpNode,\n slideMasterSpNode,\n type,\n slideMasterTextStyles,\n lvl\n )\n const shadow = getTextShadowFromStyleNodes(styleNodes, warpObj)\n if (shadow) {\n const { h, v, blur, color } = shadow\n if (!isNaN(v) && !isNaN(h)) {\n return h + 'pt ' + v + 'pt ' + (blur ? blur + 'pt' : '') + ' ' + color\n }\n }\n return ''\n}\n","import { getHorizontalAlign, getParagraphSpacing, getParagraphIndent, getParagraphStyleNodes } from './paragraph'\nimport { getTextByPathList, escapeHtml } from './utils'\nimport { getInlineMathRuns, getMathRunStyleNode, mathRunHasOwnSize, mathRunHasOwnColor } from './math'\nimport { getFillType } from './fill'\nimport { getSchemeColorFromTheme } from './schemeColor'\n\nimport {\n getFontType,\n getFontColor,\n getFontSize,\n getFontBold,\n getFontItalic,\n getFontDecoration,\n getFontDecorationLine,\n getFontSpace,\n getFontSubscript,\n getFontShadow,\n} from './fontStyle'\n\nexport function getTextNodeValue(node) {\n if (typeof node === 'string') return node\n if (node && typeof node.value === 'string') return node.value\n return undefined\n}\n\nexport function genTextBody(textBodyNode, spNode, slideLayoutSpNode, slideMasterSpNode, type, warpObj) {\n if (!textBodyNode) return ''\n\n let text = ''\n\n const pFontStyle = getTextByPathList(spNode, ['p:style', 'a:fontRef'])\n const slideMasterTextStyles = spNode && spNode['a:tcPr'] ? undefined : warpObj['slideMasterTextStyles']\n const defaultTextStyle = spNode && spNode['a:tcPr'] ? warpObj['defaultTextStyle'] : undefined\n\n const pNode = textBodyNode['a:p']\n const pNodes = pNode.constructor === Array ? pNode : [pNode]\n\n const listTypes = []\n\n for (const pNode of pNodes) {\n let rNode = pNode['a:r']\n let fldNode = pNode['a:fld']\n let brNode = pNode['a:br']\n if (rNode) {\n rNode = (rNode.constructor === Array) ? rNode : [rNode]\n\n if (fldNode) {\n fldNode = (fldNode.constructor === Array) ? fldNode : [fldNode]\n rNode = rNode.concat(fldNode)\n }\n if (brNode) {\n brNode = (brNode.constructor === Array) ? brNode : [brNode]\n brNode.forEach(item => item.type = 'br')\n \n if (brNode.length > 1) brNode.shift()\n rNode = rNode.concat(brNode)\n rNode.sort((a, b) => {\n if (!a.attrs || !b.attrs) return true\n return a.attrs.order - b.attrs.order\n })\n }\n }\n\n // Inline OMML math (<a14:m>/<m:oMath> siblings of <a:r>) — merge into the\n // run list by document order so equations keep their place in the text.\n const mathRuns = getInlineMathRuns(pNode)\n if (mathRuns.length) {\n rNode = (rNode || []).concat(mathRuns)\n rNode.sort((a, b) => ((a.attrs && a.attrs.order) || 0) - ((b.attrs && b.attrs.order) || 0))\n }\n\n const align = getHorizontalAlign(pNode, spNode, type, slideLayoutSpNode, slideMasterSpNode, warpObj)\n const spacing = getParagraphSpacing(pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, warpObj)\n const indent = getParagraphIndent(pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, warpObj)\n const listType = getListType(pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, warpObj)\n const listLevel = getListLevel(pNode)\n\n let alignStyle = align\n if (align === 'distribute') alignStyle = 'justify'\n let styleText = `text-align: ${alignStyle};`\n if (align === 'distribute') styleText += `text-align-last: justify;text-justify: distribute;`\n if (spacing) {\n if (spacing.lineSpacing) styleText += `line-height: ${spacing.lineSpacing};`\n else styleText += `line-height: 1.2;`\n if (spacing.spaceBefore) styleText += `margin-top: ${spacing.spaceBefore};`\n if (spacing.spaceAfter) styleText += `margin-bottom: ${spacing.spaceAfter};`\n }\n else styleText += `line-height: 1.2;`\n if (indent) {\n if (!listType && indent.marginLeft) styleText += `margin-left: ${indent.marginLeft};`\n if (!listType && indent.textIndent) styleText += `text-indent: ${indent.textIndent};`\n }\n\n if (listType) {\n while (listTypes.length > listLevel + 1) {\n const closedListType = listTypes.pop()\n text += `</${closedListType}>`\n }\n\n if (listTypes[listLevel] === undefined) {\n text += `<${listType}>`\n listTypes[listLevel] = listType\n }\n else if (listTypes[listLevel] !== listType) {\n text += `</${listTypes[listLevel]}>`\n text += `<${listType}>`\n listTypes[listLevel] = listType\n }\n text += `<li><p style=\"${styleText}\">`\n }\n else {\n while (listTypes.length > 0) {\n const closedListType = listTypes.pop()\n text += `</${closedListType}>`\n }\n text += `<p style=\"${styleText}\">`\n }\n \n if (!rNode) {\n text += genSpanElement(pNode, spNode, textBodyNode, pFontStyle, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, defaultTextStyle, warpObj)\n } \n else {\n let prevStyleInfo = null\n let accumulatedText = ''\n\n // Nearest sibling text run supplies size/color a math run doesn't pin\n // itself — inline equations must look like the text they sit in.\n const firstTextRun = rNode.find(item => !item.type)\n let lastTextRun = null\n\n for (const rNodeItem of rNode) {\n if (rNodeItem.type === 'math') {\n if (accumulatedText && prevStyleInfo) {\n const processedText = accumulatedText.replace(/\\t/g, ' ').replace(/\\s/g, ' ')\n text += `<span style=\"${prevStyleInfo.styleText}\">${processedText}</span>`\n }\n accumulatedText = ''\n prevStyleInfo = null\n\n const latex = escapeHtml(rNodeItem.latex)\n const siblingRun = lastTextRun || firstTextRun\n const mathStyle = getMathRunStyleText(rNodeItem, siblingRun, pNode, textBodyNode, pFontStyle, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, defaultTextStyle, warpObj)\n text += `<span class=\"omml-math\" data-latex=\"${latex}\"${mathStyle ? ` style=\"${mathStyle}\"` : ''}>${latex}</span>`\n continue\n }\n if (!rNodeItem.type) lastTextRun = rNodeItem\n\n const styleInfo = getSpanStyleInfo(rNodeItem, pNode, textBodyNode, pFontStyle, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, defaultTextStyle, warpObj)\n\n if (!prevStyleInfo || prevStyleInfo.styleText !== styleInfo.styleText || prevStyleInfo.hasLink !== styleInfo.hasLink || styleInfo.hasLink) {\n if (accumulatedText) {\n const processedText = accumulatedText.replace(/\\t/g, ' ').replace(/\\s/g, ' ')\n text += `<span style=\"${prevStyleInfo.styleText}\">${processedText}</span>`\n accumulatedText = ''\n }\n\n if (styleInfo.hasLink) {\n const processedText = styleInfo.text.replace(/\\t/g, ' ').replace(/\\s/g, ' ')\n text += `<span style=\"${styleInfo.styleText}\"><a href=\"${styleInfo.linkURL}\" target=\"_blank\">${processedText}</a></span>`\n prevStyleInfo = null\n } \n else {\n prevStyleInfo = styleInfo\n accumulatedText = styleInfo.text\n }\n } \n else accumulatedText += styleInfo.text\n }\n\n if (accumulatedText && prevStyleInfo) {\n const processedText = accumulatedText.replace(/\\t/g, ' ').replace(/\\s/g, ' ')\n text += `<span style=\"${prevStyleInfo.styleText}\">${processedText}</span>`\n }\n }\n\n if (listType) text += '</p></li>'\n else text += '</p>'\n }\n while (listTypes.length > 0) {\n const closedListType = listTypes.pop()\n text += `</${closedListType}>`\n }\n return text\n}\n\n/**\n * Style text for an inline equation. Attributes the math run pins itself\n * (`m:r > a:rPr`) win; anything unspecified inherits from the nearest sibling\n * text run — matching how PowerPoint/LibreOffice render equations embedded in\n * a line of text — before falling back to the usual paragraph/layout/master\n * chain for math-only paragraphs.\n */\nfunction getMathRunStyleText(mathRun, siblingRun, pNode, textBodyNode, pFontStyle, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, defaultTextStyle, warpObj) {\n let lvl = 1\n const lvlNode = getTextByPathList(pNode, ['a:pPr', 'attrs', 'lvl'])\n if (lvlNode !== undefined) lvl = parseInt(lvlNode) + 1\n\n const styleNode = getMathRunStyleNode(mathRun)\n const sizeNode = mathRunHasOwnSize(styleNode) || !siblingRun ? styleNode : siblingRun\n const colorNode = mathRunHasOwnColor(styleNode) || !siblingRun ? styleNode : siblingRun\n\n const fontSize = getFontSize(sizeNode, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl, defaultTextStyle)\n const fontColor = getFontColor(colorNode, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl, pFontStyle, warpObj)\n\n let styleText = ''\n if (fontSize) styleText += `font-size: ${fontSize};`\n if (fontColor && typeof fontColor === 'string') styleText += `color: ${fontColor};`\n return styleText\n}\n\nexport function getListType(node, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, warpObj) {\n const hasContent = node['a:r'] || node['a:br'] || node['a:fld']\n if (!hasContent) return ''\n\n const styleNodes = getParagraphStyleNodes(node, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, warpObj)\n if (!styleNodes) return ''\n\n for (const styleNode of styleNodes) {\n if (styleNode['a:buNone']) return ''\n if (styleNode['a:buChar'] || styleNode['a:buBlip']) return 'ul'\n if (styleNode['a:buAutoNum']) return 'ol'\n }\n\n return ''\n}\nexport function getListLevel(node) {\n const pPrNode = node['a:pPr']\n if (!pPrNode) return 0\n\n const lvlNode = getTextByPathList(pPrNode, ['attrs', 'lvl'])\n if (lvlNode !== undefined) return parseInt(lvlNode)\n\n return 0\n}\n\nfunction schemeColorToCss(color) {\n if (!color) return ''\n return color.startsWith('#') ? color : `#${color}`\n}\n\nfunction applyHyperlinkRunStyle(styleText, node, warpObj) {\n let next = styleText\n const runStyleNode = getTextByPathList(node, ['a:rPr'])\n const runFill = runStyleNode ? getFillType(runStyleNode) : ''\n const runHasOwnColor = runFill === 'SOLID_FILL' || runFill === 'GRADIENT_FILL'\n if (!runHasOwnColor) {\n const hlinkColor = schemeColorToCss(getSchemeColorFromTheme('a:hlink', warpObj)) || '#0563C1'\n if (/color\\s*:/.test(next)) next = next.replace(/color\\s*:\\s*[^;]+;/, `color: ${hlinkColor};`)\n else next += `color: ${hlinkColor};`\n }\n\n const runUnderline = getTextByPathList(node, ['a:rPr', 'attrs', 'u'])\n if (runUnderline !== 'none' && !/text-decoration\\s*:\\s*underline/.test(next)) {\n next += 'text-decoration: underline;'\n }\n\n return next\n}\n\nexport function genSpanElement(node, pNode, textBodyNode, pFontStyle, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, defaultTextStyle, warpObj) {\n const { styleText, text, hasLink, linkURL } = getSpanStyleInfo(node, pNode, textBodyNode, pFontStyle, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, defaultTextStyle, warpObj)\n const processedText = text.replace(/\\t/g, ' ').replace(/\\s/g, ' ')\n\n if (hasLink) {\n return `<span style=\"${styleText}\"><a href=\"${linkURL}\" target=\"_blank\">${processedText}</a></span>`\n }\n return `<span style=\"${styleText}\">${processedText}</span>`\n}\n\nexport function getSpanStyleInfo(node, pNode, textBodyNode, pFontStyle, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, defaultTextStyle, warpObj) {\n let lvl = 1\n const pPrNode = pNode['a:pPr']\n const lvlNode = getTextByPathList(pPrNode, ['attrs', 'lvl'])\n if (lvlNode !== undefined) lvl = parseInt(lvlNode) + 1\n\n let text = getTextNodeValue(node['a:t'])\n if (typeof text !== 'string') text = getTextNodeValue(getTextByPathList(node, ['a:fld', 'a:t']))\n if (typeof text !== 'string') text = ' '\n\n let styleText = ''\n const fontColor = getFontColor(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl, pFontStyle, warpObj)\n const fontSize = getFontSize(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl, defaultTextStyle)\n const fontType = getFontType(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl, warpObj, text)\n const fontBold = getFontBold(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl)\n const fontItalic = getFontItalic(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl)\n const fontDecoration = getFontDecoration(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl)\n const fontDecorationLine = getFontDecorationLine(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl)\n const fontSpace = getFontSpace(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl)\n const shadow = getFontShadow(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl, warpObj)\n const subscript = getFontSubscript(node, pNode, textBodyNode, slideLayoutSpNode, slideMasterSpNode, type, slideMasterTextStyles, lvl)\n\n if (fontColor) {\n if (typeof fontColor === 'string') styleText += `color: ${fontColor};`\n else if (fontColor.colors) {\n const { colors, rot } = fontColor\n const stops = colors.map(item => `${item.color} ${item.pos}`).join(', ')\n const gradientStyle = `linear-gradient(${rot + 90}deg, ${stops})`\n styleText += `background: ${gradientStyle}; background-clip: text; color: transparent;`\n }\n }\n if (fontSize) styleText += `font-size: ${fontSize};`\n if (fontType) styleText += `font-family: ${fontType};`\n if (fontBold) styleText += `font-weight: ${fontBold};`\n if (fontItalic) styleText += `font-style: ${fontItalic};`\n if (fontDecoration) styleText += `text-decoration: ${fontDecoration};`\n if (fontDecorationLine) styleText += `text-decoration-line: ${fontDecorationLine};`\n if (fontSpace) styleText += `letter-spacing: ${fontSpace};`\n if (subscript) styleText += `vertical-align: ${subscript};`\n if (shadow) styleText += `text-shadow: ${shadow};`\n\n const linkID = getTextByPathList(node, ['a:rPr', 'a:hlinkClick', 'attrs', 'r:id'])\n const hasLink = linkID && warpObj['slideResObj'][linkID]\n if (hasLink) styleText = applyHyperlinkRunStyle(styleText, node, warpObj)\n\n return {\n styleText,\n text,\n hasLink,\n linkURL: hasLink ? warpObj['slideResObj'][linkID]['target'] : null\n }\n}\n","import { getTextByPathList } from './utils'\n\nexport function shapeArc(cX, cY, rX, rY, stAng, endAng, isClose) {\n let dData\n let angle = stAng\n if (endAng >= stAng) {\n while (angle <= endAng) {\n const radians = angle * (Math.PI / 180)\n const x = cX + Math.cos(radians) * rX\n const y = cY + Math.sin(radians) * rY\n if (angle === stAng) {\n dData = ' M' + x + ' ' + y\n }\n dData += ' L' + x + ' ' + y\n angle++\n }\n } \n else {\n while (angle > endAng) {\n const radians = angle * (Math.PI / 180)\n const x = cX + Math.cos(radians) * rX\n const y = cY + Math.sin(radians) * rY\n if (angle === stAng) {\n dData = ' M ' + x + ' ' + y\n }\n dData += ' L ' + x + ' ' + y\n angle--\n }\n }\n dData += (isClose ? ' z' : '')\n return dData\n}\n\nexport function getCustomShapePath(custShapType, w, h) {\n const pathLstNode = getTextByPathList(custShapType, ['a:pathLst'])\n let pathNodes = getTextByPathList(pathLstNode, ['a:path'])\n\n if (Array.isArray(pathNodes)) pathNodes = pathNodes.shift()\n\n const maxX = parseInt(pathNodes['attrs']['w']) || 0\n const maxY = parseInt(pathNodes['attrs']['h']) || 0\n const cX = maxX === 0 ? 0 : (1 / maxX) * w\n const cY = maxY === 0 ? 0 : (1 / maxY) * h\n let d = ''\n\n let moveToNode = getTextByPathList(pathNodes, ['a:moveTo'])\n\n let lnToNodes = pathNodes['a:lnTo']\n let cubicBezToNodes = pathNodes['a:cubicBezTo']\n let quadBezToNodes = pathNodes['a:quadBezTo']\n const arcToNodes = pathNodes['a:arcTo']\n let closeNode = getTextByPathList(pathNodes, ['a:close'])\n if (!Array.isArray(moveToNode)) moveToNode = [moveToNode]\n\n const multiSapeAry = []\n if (moveToNode.length > 0) {\n Object.keys(moveToNode).forEach(key => {\n if (!moveToNode[key]) return\n const moveToPtNode = moveToNode[key]['a:pt']\n if (moveToPtNode) {\n Object.keys(moveToPtNode).forEach(key => {\n const moveToNoPt = moveToPtNode[key]\n const spX = moveToNoPt['x']\n const spY = moveToNoPt['y']\n const order = moveToNoPt['order']\n multiSapeAry.push({\n type: 'movto',\n x: spX,\n y: spY,\n order,\n })\n })\n }\n })\n if (lnToNodes) {\n if (!Array.isArray(lnToNodes)) lnToNodes = [lnToNodes]\n Object.keys(lnToNodes).forEach(key => {\n if (!lnToNodes[key]) return\n const lnToPtNode = lnToNodes[key]['a:pt']\n if (lnToPtNode) {\n Object.keys(lnToPtNode).forEach(key => {\n const lnToNoPt = lnToPtNode[key]\n const ptX = lnToNoPt['x']\n const ptY = lnToNoPt['y']\n const order = lnToNoPt['order']\n multiSapeAry.push({\n type: 'lnto',\n x: ptX,\n y: ptY,\n order,\n })\n })\n }\n })\n }\n if (cubicBezToNodes) {\n const cubicBezToPtNodesAry = []\n if (!Array.isArray(cubicBezToNodes)) cubicBezToNodes = [cubicBezToNodes]\n Object.keys(cubicBezToNodes).forEach(key => {\n if (!cubicBezToNodes[key] || !cubicBezToNodes[key]['a:pt']) return\n cubicBezToPtNodesAry.push(cubicBezToNodes[key]['a:pt'])\n })\n\n cubicBezToPtNodesAry.forEach(key => {\n const pts_ary = []\n key.forEach(pt => {\n const pt_obj = {\n x: pt['attrs']['x'],\n y: pt['attrs']['y'],\n }\n pts_ary.push(pt_obj)\n })\n const order = key[0]['attrs']['order']\n multiSapeAry.push({\n type: 'cubicBezTo',\n cubBzPt: pts_ary,\n order,\n })\n })\n }\n if (quadBezToNodes) {\n const quadBezToPtNodesAry = []\n if (!Array.isArray(quadBezToNodes)) quadBezToNodes = [quadBezToNodes]\n Object.keys(quadBezToNodes).forEach(key => {\n if (!quadBezToNodes[key] || !quadBezToNodes[key]['a:pt']) return\n quadBezToPtNodesAry.push(quadBezToNodes[key]['a:pt'])\n })\n\n quadBezToPtNodesAry.forEach(key => {\n const pts_ary = []\n key.forEach(pt => {\n const pt_obj = {\n x: pt['attrs']['x'],\n y: pt['attrs']['y'],\n }\n pts_ary.push(pt_obj)\n })\n const order = key[0]['attrs']['order']\n multiSapeAry.push({\n type: 'quadBezTo',\n quadBzPt: pts_ary,\n order,\n })\n })\n }\n if (arcToNodes) {\n const arcToNodesAry = Array.isArray(arcToNodes) ? arcToNodes : [arcToNodes]\n arcToNodesAry.forEach(arcToNodes => {\n const arcToNodesAttrs = arcToNodes['attrs']\n const order = arcToNodesAttrs['order']\n const hR = arcToNodesAttrs['hR']\n const wR = arcToNodesAttrs['wR']\n const stAng = arcToNodesAttrs['stAng']\n const swAng = arcToNodesAttrs['swAng']\n let shftX = 0\n let shftY = 0\n const arcToPtNode = getTextByPathList(arcToNodes, ['a:pt', 'attrs'])\n if (arcToPtNode) {\n shftX = arcToPtNode['x']\n shftY = arcToPtNode['y']\n }\n multiSapeAry.push({\n type: 'arcTo',\n hR,\n wR,\n stAng,\n swAng,\n shftX,\n shftY,\n order,\n })\n })\n }\n if (closeNode) {\n if (!Array.isArray(closeNode)) closeNode = [closeNode]\n Object.keys(closeNode).forEach(() => {\n multiSapeAry.push({\n type: 'close',\n order: Infinity,\n })\n })\n }\n\n multiSapeAry.sort((a, b) => a.order - b.order)\n\n let k = 0\n while (k < multiSapeAry.length) {\n if (multiSapeAry[k].type === 'movto') {\n const spX = parseInt(multiSapeAry[k].x) * cX\n const spY = parseInt(multiSapeAry[k].y) * cY\n d += ' M' + spX + ',' + spY\n } \n else if (multiSapeAry[k].type === 'lnto') {\n const Lx = parseInt(multiSapeAry[k].x) * cX\n const Ly = parseInt(multiSapeAry[k].y) * cY\n d += ' L' + Lx + ',' + Ly\n } \n else if (multiSapeAry[k].type === 'cubicBezTo') {\n const Cx1 = parseInt(multiSapeAry[k].cubBzPt[0].x) * cX\n const Cy1 = parseInt(multiSapeAry[k].cubBzPt[0].y) * cY\n const Cx2 = parseInt(multiSapeAry[k].cubBzPt[1].x) * cX\n const Cy2 = parseInt(multiSapeAry[k].cubBzPt[1].y) * cY\n const Cx3 = parseInt(multiSapeAry[k].cubBzPt[2].x) * cX\n const Cy3 = parseInt(multiSapeAry[k].cubBzPt[2].y) * cY\n d += ' C' + Cx1 + ',' + Cy1 + ' ' + Cx2 + ',' + Cy2 + ' ' + Cx3 + ',' + Cy3\n }\n else if (multiSapeAry[k].type === 'quadBezTo') {\n const Qx1 = parseInt(multiSapeAry[k].quadBzPt[0].x) * cX\n const Qy1 = parseInt(multiSapeAry[k].quadBzPt[0].y) * cY\n const Qx2 = parseInt(multiSapeAry[k].quadBzPt[1].x) * cX\n const Qy2 = parseInt(multiSapeAry[k].quadBzPt[1].y) * cY\n d += ' Q' + Qx1 + ',' + Qy1 + ' ' + Qx2 + ',' + Qy2\n }\n else if (multiSapeAry[k].type === 'arcTo') {\n const hR = parseInt(multiSapeAry[k].hR) * cX\n const wR = parseInt(multiSapeAry[k].wR) * cY\n const stAng = parseInt(multiSapeAry[k].stAng) / 60000\n const swAng = parseInt(multiSapeAry[k].swAng) / 60000\n const endAng = stAng + swAng\n d += shapeArc(wR, hR, wR, hR, stAng, endAng, false)\n }\n else if (multiSapeAry[k].type === 'close') d += 'z'\n k++\n }\n }\n\n return d\n}\n\nexport function isStrokeOnlyCustomGeometry(custShapType) {\n const pathNodes = getTextByPathList(custShapType, ['a:pathLst', 'a:path'])\n if (!pathNodes) return false\n\n const pathNodeList = Array.isArray(pathNodes) ? pathNodes : [pathNodes]\n\n return pathNodeList.length === 1 && getTextByPathList(pathNodeList[0], ['attrs', 'fill']) === 'none'\n}\n\nexport function identifyShape(shapeData) {\n const pathLst = shapeData['a:pathLst']\n if (!pathLst || !pathLst['a:path']) return 'custom'\n\n const path = pathLst['a:path']\n const pathWidth = parseInt(path.attrs?.w) || 0\n const pathHeight = parseInt(path.attrs?.h) || 0\n\n const commands = extractPathCommands(path)\n \n if (commands.length === 0) return 'custom'\n\n const analysis = analyzePathCommands(commands, pathWidth, pathHeight)\n \n return matchShape(analysis)\n}\n\nfunction extractPathCommands(path) {\n const commands = []\n \n if (path['a:moveTo']) {\n const moveTo = path['a:moveTo']\n const pt = moveTo['a:pt']\n if (pt) {\n commands.push({\n type: 'moveTo',\n points: [{ x: parseInt(pt.attrs?.x) || 0, y: parseInt(pt.attrs?.y) || 0 }]\n })\n }\n }\n\n const lineToList = normalizeToArray(path['a:lnTo'])\n lineToList.forEach(lnTo => {\n const pt = lnTo['a:pt']\n if (pt) {\n commands.push({\n type: 'lineTo',\n points: [{ x: parseInt(pt.attrs?.x) || 0, y: parseInt(pt.attrs?.y) || 0 }]\n })\n }\n })\n\n const cubicList = normalizeToArray(path['a:cubicBezTo'])\n cubicList.forEach(cubic => {\n const pts = normalizeToArray(cubic['a:pt'])\n const points = pts.map(pt => ({\n x: parseInt(pt.attrs?.x) || 0,\n y: parseInt(pt.attrs?.y) || 0\n }))\n if (points.length === 3) {\n commands.push({ type: 'cubicBezTo', points })\n }\n })\n\n const arcList = normalizeToArray(path['a:arcTo'])\n arcList.forEach(arc => {\n commands.push({\n type: 'arcTo',\n wR: parseInt(arc.attrs?.wR) || 0,\n hR: parseInt(arc.attrs?.hR) || 0,\n stAng: parseInt(arc.attrs?.stAng) || 0,\n swAng: parseInt(arc.attrs?.swAng) || 0\n })\n })\n\n const quadList = normalizeToArray(path['a:quadBezTo'])\n quadList.forEach(quad => {\n const pts = normalizeToArray(quad['a:pt'])\n const points = pts.map(pt => ({\n x: parseInt(pt.attrs?.x) || 0,\n y: parseInt(pt.attrs?.y) || 0\n }))\n commands.push({ type: 'quadBezTo', points })\n })\n\n if (path['a:close']) {\n commands.push({ type: 'close' })\n }\n\n return commands\n}\n\nfunction normalizeToArray(value) {\n if (!value) return []\n return Array.isArray(value) ? value : [value]\n}\n\nfunction analyzePathCommands(commands, pathWidth, pathHeight) {\n const analysis = {\n lineCount: 0,\n curveCount: 0,\n arcCount: 0,\n isClosed: false,\n vertices: [],\n aspectRatio: pathHeight !== 0 ? pathWidth / pathHeight : 1,\n pathWidth,\n pathHeight,\n hasCurves: false,\n isCircular: false,\n commands\n }\n\n commands.forEach(cmd => {\n switch (cmd.type) {\n case 'moveTo':\n analysis.vertices.push(cmd.points[0])\n break\n case 'lineTo':\n analysis.lineCount++\n analysis.vertices.push(cmd.points[0])\n break\n case 'cubicBezTo':\n analysis.curveCount++\n analysis.hasCurves = true\n if (cmd.points.length === 3) {\n analysis.vertices.push(cmd.points[2])\n }\n break\n case 'quadBezTo':\n analysis.curveCount++\n analysis.hasCurves = true\n if (cmd.points.length >= 2) {\n analysis.vertices.push(cmd.points[cmd.points.length - 1])\n }\n break\n case 'arcTo':\n analysis.arcCount++\n analysis.hasCurves = true\n break\n case 'close':\n analysis.isClosed = true\n break\n default:\n break\n }\n })\n\n if (analysis.curveCount === 4 && analysis.lineCount === 0 && analysis.isClosed) {\n analysis.isCircular = checkIfCircular(commands, pathWidth, pathHeight)\n }\n\n return analysis\n}\n\nfunction checkIfCircular(commands, width, height) {\n const bezierCommands = commands.filter(c => c.type === 'cubicBezTo')\n if (bezierCommands.length !== 4) return false\n\n const endpoints = bezierCommands.map(cmd => cmd.points[2])\n \n const hasTop = endpoints.some(p => Math.abs(p.y) < height * 0.1)\n const hasBottom = endpoints.some(p => Math.abs(p.y - height) < height * 0.1)\n const hasLeft = endpoints.some(p => Math.abs(p.x) < width * 0.1)\n const hasRight = endpoints.some(p => Math.abs(p.x - width) < width * 0.1)\n\n return (hasTop || hasBottom) && (hasLeft || hasRight)\n}\n\nfunction matchShape(analysis) {\n const { \n lineCount,\n curveCount,\n isClosed,\n vertices,\n hasCurves,\n isCircular,\n pathWidth,\n pathHeight,\n } = analysis\n\n if (isCircular) return 'ellipse'\n\n if (analysis.arcCount >= 2 && isClosed && lineCount === 0) return 'ellipse'\n\n if (!hasCurves && isClosed && vertices.length >= 3) return matchPolygon(vertices, pathWidth, pathHeight)\n\n if (lineCount === 4 && curveCount === 4 && isClosed) return 'roundRect'\n\n if (lineCount >= 3 && curveCount > 0 && curveCount <= lineCount && isClosed) {\n const baseShape = matchPolygonByLineCount(lineCount)\n if (baseShape !== 'custom') return baseShape === 'rectangle' ? 'roundRect' : baseShape\n }\n return 'custom'\n}\n\nfunction matchPolygon(vertices, width, height) {\n const uniqueVertices = removeDuplicateVertices(vertices)\n const vertexCount = uniqueVertices.length\n\n switch (vertexCount) {\n case 3:\n return 'triangle'\n case 4:\n return matchQuadrilateral(uniqueVertices, width, height)\n case 5:\n return 'pentagon'\n case 6:\n return 'hexagon'\n case 7:\n return 'heptagon'\n case 8:\n return 'octagon'\n default:\n if (vertexCount > 8) {\n return 'ellipse'\n }\n return 'custom'\n }\n}\n\nfunction removeDuplicateVertices(vertices) {\n const threshold = 100\n const unique = []\n \n vertices.forEach(v => {\n const isDuplicate = unique.some(u => \n Math.abs(u.x - v.x) < threshold && Math.abs(u.y - v.y) < threshold\n )\n if (!isDuplicate) unique.push(v)\n })\n \n return unique\n}\n\nfunction matchQuadrilateral(vertices) {\n if (vertices.length !== 4) return 'custom'\n\n const edges = []\n for (let i = 0; i < 4; i++) {\n const p1 = vertices[i]\n const p2 = vertices[(i + 1) % 4]\n edges.push({\n dx: p2.x - p1.x,\n dy: p2.y - p1.y,\n length: Math.sqrt((p2.x - p1.x) ** 2 + (p2.y - p1.y) ** 2)\n })\n }\n\n if (isRectangle(edges)) return 'roundRect'\n if (isRhombus(edges)) return 'rhombus'\n if (isParallelogram(edges)) return 'parallelogram'\n if (isTrapezoid(edges)) return 'trapezoid'\n\n return 'custom'\n}\n\nfunction isRectangle(edges) {\n const tolerance = 0.1\n const edge02Similar = Math.abs(edges[0].length - edges[2].length) / Math.max(edges[0].length, edges[2].length) < tolerance\n const edge13Similar = Math.abs(edges[1].length - edges[3].length) / Math.max(edges[1].length, edges[3].length) < tolerance\n \n if (!edge02Similar || !edge13Similar) return false\n\n for (let i = 0; i < 4; i++) {\n const e1 = edges[i]\n const e2 = edges[(i + 1) % 4]\n const dotProduct = e1.dx * e2.dx + e1.dy * e2.dy\n const cosAngle = dotProduct / (e1.length * e2.length)\n if (Math.abs(cosAngle) > 0.1) return false\n }\n \n return true\n}\n\nfunction isRhombus(edges) {\n const tolerance = 0.1\n const avgLength = edges.reduce((sum, e) => sum + e.length, 0) / 4\n \n return edges.every(e => Math.abs(e.length - avgLength) / avgLength < tolerance)\n}\n\nfunction isParallelogram(edges) {\n const tolerance = 0.15\n \n const slope0 = edges[0].dx !== 0 ? edges[0].dy / edges[0].dx : Infinity\n const slope2 = edges[2].dx !== 0 ? edges[2].dy / edges[2].dx : Infinity\n const slope1 = edges[1].dx !== 0 ? edges[1].dy / edges[1].dx : Infinity\n const slope3 = edges[3].dx !== 0 ? edges[3].dy / edges[3].dx : Infinity\n\n const parallel02 = Math.abs(slope0 - slope2) < tolerance || \n (Math.abs(slope0) > 1000 && Math.abs(slope2) > 1000)\n const parallel13 = Math.abs(slope1 - slope3) < tolerance ||\n (Math.abs(slope1) > 1000 && Math.abs(slope3) > 1000)\n\n return parallel02 && parallel13\n}\n\nfunction isTrapezoid(edges) {\n const tolerance = 0.15\n \n const slope0 = edges[0].dx !== 0 ? edges[0].dy / edges[0].dx : Infinity\n const slope2 = edges[2].dx !== 0 ? edges[2].dy / edges[2].dx : Infinity\n const slope1 = edges[1].dx !== 0 ? edges[1].dy / edges[1].dx : Infinity\n const slope3 = edges[3].dx !== 0 ? edges[3].dy / edges[3].dx : Infinity\n\n const parallel02 = Math.abs(slope0 - slope2) < tolerance ||\n (Math.abs(slope0) > 1000 && Math.abs(slope2) > 1000)\n const parallel13 = Math.abs(slope1 - slope3) < tolerance ||\n (Math.abs(slope1) > 1000 && Math.abs(slope3) > 1000)\n\n return (parallel02 && !parallel13) || (!parallel02 && parallel13)\n}\n\nfunction matchPolygonByLineCount(lineCount) {\n switch (lineCount) {\n case 3: return 'triangle'\n case 4: return 'rectangle'\n case 5: return 'pentagon'\n case 6: return 'hexagon'\n case 7: return 'heptagon'\n case 8: return 'octagon'\n default: return 'custom'\n }\n}","/**\n * 将 EOT (.fntdata / .eot) 格式转换为 TTF 格式\n * EOT 文件结构:\n * - 0x00-0x03: EOT 头大小\n * - 0x04-0x07: 字体数据大小\n * - 0x08-0x0B: 版本号\n * - 0x0C-0x53: 字体元数据(Panose、字符集等)\n * - 0x54-...: 字体名称字符串\n * - ...: 可选的 RootString、签名等\n * - 最后部分:嵌入的 TTF/OTF 数据\n *\n * @param {ArrayBuffer} eotBuffer - EOT 文件数据\n * @returns {Uint8Array|null} TTF 数据,如果解析失败返回 null\n */\nfunction convertEOTtoTTF(eotBuffer) {\n const data = new DataView(eotBuffer)\n const bytes = new Uint8Array(eotBuffer)\n\n try {\n // 读取 EOT 头信息\n const eotSize = data.getUint32(0, true) // little-endian\n const fontDataSize = data.getUint32(4, true)\n const version = data.getUint32(8, true)\n const magicNumber = data.getUint16(34, true)\n\n // 验证 EOT 格式\n if (magicNumber !== 0x504c) {\n return null\n }\n\n // 验证版本(支持 1.0, 2.1, 2.2)\n if (version !== 0x00010000 && version !== 0x00020001 && version !== 0x00020002) {\n return null\n }\n\n // 计算 TTF 数据的起始位置\n // TTF 数据位于 EOT 文件的末尾,大小为 fontDataSize\n const ttfOffset = eotSize - fontDataSize\n\n if (ttfOffset < 0 || ttfOffset >= eotSize) {\n return null\n }\n\n // 提取 TTF 数据\n const ttfBytes = bytes.slice(ttfOffset, eotSize)\n\n // 验证 TTF 魔数\n if (ttfBytes.length >= 4) {\n const ttfMagic = (ttfBytes[0] << 24) | (ttfBytes[1] << 16) | (ttfBytes[2] << 8) | ttfBytes[3]\n if (ttfMagic !== 0x00010000 && ttfMagic !== 0x4f54544f) {\n return null\n }\n }\n\n return ttfBytes\n }\n catch (e) {\n return null\n }\n}\n\n/**\n * 从 JSZip 中读取字体文件,返回 Blob URL\n * 支持的格式:\n * - .fntdata / .eot - EOT 格式(PowerPoint 嵌入字体),会转换为 TTF\n * - 其他格式不处理\n */\nexport async function getFontData(zip, fontPath) {\n const fontFilename = fontPath.split('/').pop()\n\n try {\n const fontFile = zip.file(fontPath)\n if (!fontFile) return ''\n\n // 只处理 .fntdata 和 .eot 格式\n if (!fontFilename.toLowerCase().endsWith('.fntdata') && !fontFilename.toLowerCase().endsWith('.eot')) {\n return ''\n }\n\n const buffer = await fontFile.async('arraybuffer')\n\n // 将 EOT 转换为 TTF\n const ttfBytes = convertEOTtoTTF(buffer)\n if (!ttfBytes) {\n return ''\n }\n\n const mimeType = 'font/ttf'\n const blobObj = new Blob([ttfBytes], { type: mimeType })\n return URL.createObjectURL(blobObj)\n }\n catch (e) {\n return ''\n }\n}\n\nconst SYSTEM_FONT_FALLBACK_MAP = {\n // ========== 中文字体 ==========\n // 微软字体\n 微软雅黑: 'Microsoft YaHei, PingFang SC, Noto Sans CJK SC, sans-serif',\n 'Microsoft YaHei': 'Microsoft YaHei, PingFang SC, Noto Sans CJK SC, sans-serif',\n 'Microsoft YaHei UI': 'Microsoft YaHei UI, Microsoft YaHei, PingFang SC, sans-serif',\n '微软雅黑 UI': 'Microsoft YaHei UI, Microsoft YaHei, PingFang SC, sans-serif',\n 宋体: 'SimSun, STSong, serif',\n SimSun: 'SimSun, STSong, serif',\n 新宋体: 'NSimSun, SimSun, STSong, serif',\n NSimSun: 'NSimSun, SimSun, serif',\n 黑体: 'SimHei, STHeiti, Heiti SC, sans-serif',\n SimHei: 'SimHei, STHeiti, sans-serif',\n 仿宋: 'FangSong, STFangSong, serif',\n FangSong: 'FangSong, STFangSong, serif',\n 楷体: 'KaiTi, STKaiti, serif',\n KaiTi: 'KaiTi, STKaiti, serif',\n 仿宋_GB2312: 'FangSong_GB2312, FangSong, serif',\n 楷体_GB2312: 'KaiTi_GB2312, KaiTi, serif',\n 方正舒体: 'FZShuTi, STSong, serif',\n 方正姚体: 'FZYaoti, STSong, serif',\n 华文细黑: 'STXihei, Microsoft YaHei, sans-serif',\n 华文楷体: 'STKaiti, KaiTi, serif',\n 华文宋体: 'STSong, SimSun, serif',\n STSong: 'STSong, SimSun, serif',\n 华文中宋: 'STZhongsong, SimSun, serif',\n 华文仿宋: 'STFangSong, FangSong, serif',\n 华文彩云: 'STCaiyun, STSong, serif',\n 华文琥珀: 'STHupo, STSong, serif',\n 华文隶书: 'STLiti, serif',\n 华文行楷: 'STXingkai, serif',\n 华文新魏: 'STXinwei, serif',\n STHeiti: 'STHeiti, SimHei, sans-serif',\n 苹方: 'PingFang SC, Helvetica Neue, sans-serif',\n 'PingFang SC': 'PingFang SC, Helvetica Neue, sans-serif',\n 'PingFang TC': 'PingFang TC, PingFang SC, sans-serif',\n 'PingFang HK': 'PingFang HK, PingFang SC, sans-serif',\n 冬青黑体: 'Hiragino Sans GB, Microsoft YaHei, sans-serif',\n 'Hiragino Sans GB': 'Hiragino Sans GB, Microsoft YaHei, sans-serif',\n 幼圆: 'YouYuan, SimSun, sans-serif',\n YouYuan: 'YouYuan, SimSun, sans-serif',\n 隶书: 'LiSu, STLiti, serif',\n LiSu: 'LiSu, STLiti, serif',\n // 思源字体\n 'Noto Sans CJK SC': 'Noto Sans CJK SC, Microsoft YaHei, sans-serif',\n 'Noto Serif CJK SC': 'Noto Serif CJK SC, SimSun, serif',\n 'Source Han Sans CN': 'Source Han Sans CN, Microsoft YaHei, sans-serif',\n 'Source Han Serif CN': 'Source Han Serif CN, SimSun, serif',\n\n // ========== 日韩字体 ==========\n Meiryo: 'Meiryo, Microsoft YaHei, sans-serif',\n 'Meiryo UI': 'Meiryo UI, Meiryo, sans-serif',\n 'MS Gothic': 'MS Gothic, monospace',\n 'MS PGothic': 'MS PGothic, sans-serif',\n 'MS Mincho': 'MS Mincho, serif',\n 'Yu Gothic': 'Yu Gothic, Meiryo, sans-serif',\n 'Yu Mincho': 'Yu Mincho, serif',\n 'Malgun Gothic': 'Malgun Gothic, Apple SD Gothic Neo, sans-serif',\n Batang: 'Batang, serif',\n Gulim: 'Gulim, sans-serif',\n Dotum: 'Dotum, sans-serif',\n\n // ========== Office / Windows 内置英文字体 ==========\n Calibri: 'Calibri, Carlito, Helvetica Neue, Arial, sans-serif',\n Cambria: 'Cambria, Georgia, serif',\n 'Cambria Math': 'Cambria Math, Cambria, Georgia, serif',\n Candara: 'Candara, Optima, sans-serif',\n Consolas: 'Consolas, Menlo, monospace',\n Constantia: 'Constantia, Palatino, serif',\n Corbel: 'Corbel, Skia, sans-serif',\n 'Franklin Gothic Medium': 'Franklin Gothic Medium, Arial Narrow, sans-serif',\n 'Gill Sans MT': 'Gill Sans MT, Gill Sans, sans-serif',\n 'Gill Sans': 'Gill Sans, Optima, sans-serif',\n Verdana: 'Verdana, Geneva, Tahoma, sans-serif',\n Tahoma: 'Tahoma, Verdana, sans-serif',\n Arial: 'Arial, Helvetica, sans-serif',\n 'Arial Black': 'Arial Black, Gadget, sans-serif',\n 'Arial Narrow': 'Arial Narrow, Arial, sans-serif',\n 'Arial Unicode MS': 'Arial Unicode MS, Arial, sans-serif',\n 'Times New Roman': 'Times New Roman, Times, serif',\n 'Courier New': 'Courier New, Courier, monospace',\n Georgia: 'Georgia, Times New Roman, serif',\n 'Palatino Linotype': 'Palatino Linotype, Palatino, Book Antiqua, serif',\n 'Book Antiqua': 'Book Antiqua, Palatino, serif',\n Garamond: 'Garamond, Hoefler Text, serif',\n Century: 'Century, Times New Roman, serif',\n 'Century Gothic': 'Century Gothic, Futura, sans-serif',\n 'Comic Sans MS': 'Comic Sans MS, Chalkboard, cursive',\n Impact: 'Impact, Charcoal, sans-serif',\n 'Lucida Console': 'Lucida Console, Monaco, monospace',\n 'Lucida Sans Unicode': 'Lucida Sans Unicode, Lucida Grande, sans-serif',\n Symbol: 'Symbol, serif',\n Wingdings: 'Wingdings, Zapf Dingbats, sans-serif',\n 'Wingdings 2': 'Wingdings 2, sans-serif',\n 'Wingdings 3': 'Wingdings 3, sans-serif',\n Webdings: 'Webdings, sans-serif',\n 'Segoe UI': 'Segoe UI, Helvetica Neue, Arial, sans-serif',\n 'Segoe UI Light': 'Segoe UI Light, Segoe UI, sans-serif',\n 'Segoe UI Semibold': 'Segoe UI Semibold, Segoe UI, sans-serif',\n 'Segoe UI Black': 'Segoe UI Black, Segoe UI, sans-serif',\n 'Segoe Print': 'Segoe Print, Comic Sans MS, cursive',\n 'Segoe Script': 'Segoe Script, Comic Sans MS, cursive',\n 'Trebuchet MS': 'Trebuchet MS, Helvetica, sans-serif',\n Palatino: 'Palatino, Palatino Linotype, serif',\n Helvetica: 'Helvetica, Arial, sans-serif',\n 'Helvetica Neue': 'Helvetica Neue, Helvetica, Arial, sans-serif',\n Futura: 'Futura, Century Gothic, sans-serif',\n Optima: 'Optima, Segoe UI, sans-serif',\n Monaco: 'Monaco, Consolas, monospace',\n Menlo: 'Menlo, Consolas, monospace',\n Roboto: 'Roboto, Helvetica Neue, Arial, sans-serif',\n 'Open Sans': 'Open Sans, Helvetica Neue, Arial, sans-serif',\n Lato: 'Lato, Helvetica Neue, Arial, sans-serif',\n Oswald: 'Oswald, Impact, sans-serif',\n Raleway: 'Raleway, Helvetica Neue, Arial, sans-serif',\n Nunito: 'Nunito, Helvetica Neue, Arial, sans-serif',\n\n // ========== macOS 专有字体 ==========\n 'Hiragino Mincho Pro': 'Hiragino Mincho Pro, STSong, serif',\n 'Hiragino Kaku Gothic Pro': 'Hiragino Kaku Gothic Pro, Microsoft YaHei, sans-serif',\n 'Hiragino Kaku Gothic ProN': 'Hiragino Kaku Gothic ProN, sans-serif',\n 'Apple LiGothic': 'Apple LiGothic, Microsoft YaHei, sans-serif',\n 'Apple LiSung': 'Apple LiSung, STSong, serif',\n 'LiHei Pro': 'LiHei Pro, Microsoft YaHei, sans-serif',\n 'LiSong Pro': 'LiSong Pro, STSong, serif',\n}\n\n/**\n * 根据字体名称获取浏览器可用的回退字体栈\n * @param {string} fontName - 原始字体名\n * @returns {string} 完整的 font-family 回退字符串\n */\nexport function getFontFallback(fontName) {\n if (!fontName) return ''\n\n // 精确匹配\n if (SYSTEM_FONT_FALLBACK_MAP[fontName]) {\n return SYSTEM_FONT_FALLBACK_MAP[fontName]\n }\n\n // 大小写不敏感匹配\n const lowerName = fontName.toLowerCase()\n for (const [key, value] of Object.entries(SYSTEM_FONT_FALLBACK_MAP)) {\n if (key.toLowerCase() === lowerName) return value\n }\n\n // 部分匹配(如 \"Calibri Light\" → Calibri 回退)\n for (const [key, value] of Object.entries(SYSTEM_FONT_FALLBACK_MAP)) {\n if (lowerName.startsWith(key.toLowerCase())) {\n // 在回退栈前面插入原始字体名\n return `${fontName}, ${value}`\n }\n }\n\n // 无法匹配时,根据字体名猜测类型\n return guessGenericFamily(fontName)\n}\n\n/**\n * 根据字体名猜测通用字体族作为最终回退\n */\nfunction guessGenericFamily(fontName) {\n const name = fontName.toLowerCase()\n\n // 等宽/代码字体\n if (\n name.includes('mono') ||\n name.includes('code') ||\n name.includes('console') ||\n name.includes('courier') ||\n name.includes('terminal') ||\n name.includes('fixed')\n ) {\n return `${fontName}, monospace`\n }\n\n // 衬线字体\n if (\n name.includes('serif') ||\n name.includes('roman') ||\n name.includes('mincho') ||\n name.includes('song') ||\n name.includes('sung') ||\n name.includes('ming') ||\n name.includes('times') ||\n name.includes('georgia')\n ) {\n return `${fontName}, serif`\n }\n\n // 手写/草书\n if (\n name.includes('script') ||\n name.includes('cursive') ||\n name.includes('hand') ||\n name.includes('writing') ||\n name.includes('kai') ||\n name.includes('shu')\n ) {\n return `${fontName}, cursive`\n }\n\n // 默认 sans-serif\n return `${fontName}, sans-serif`\n}\n","import { getShapeFill, getSolidFill } from './fill'\nimport { getTextByPathList } from './utils'\nimport { getBorder } from './border'\n\nfunction getTableTextColor(tcTxStyle, warpObj) {\n if (!tcTxStyle) return undefined\n\n return getSolidFill(tcTxStyle['a:solidFill'] || tcTxStyle, undefined, undefined, warpObj)\n}\n\nexport function getTableBorders(node, warpObj) {\n const borders = {}\n if (node['a:bottom']) {\n const obj = {\n 'p:spPr': {\n 'a:ln': node['a:bottom']['a:ln']\n }\n }\n const border = getBorder(obj, undefined, warpObj)\n borders.bottom = border\n }\n if (node['a:top']) {\n const obj = {\n 'p:spPr': {\n 'a:ln': node['a:top']['a:ln']\n }\n }\n const border = getBorder(obj, undefined, warpObj)\n borders.top = border\n }\n if (node['a:right']) {\n const obj = {\n 'p:spPr': {\n 'a:ln': node['a:right']['a:ln']\n }\n }\n const border = getBorder(obj, undefined, warpObj)\n borders.right = border\n }\n if (node['a:left']) {\n const obj = {\n 'p:spPr': {\n 'a:ln': node['a:left']['a:ln']\n }\n }\n const border = getBorder(obj, undefined, warpObj)\n borders.left = border\n }\n return borders\n}\n\nexport async function getTableCellParams(tcNode, thisTblStyle, cellSource, warpObj) {\n const rowSpan = getTextByPathList(tcNode, ['attrs', 'rowSpan'])\n const colSpan = getTextByPathList(tcNode, ['attrs', 'gridSpan'])\n const vMerge = getTextByPathList(tcNode, ['attrs', 'vMerge'])\n const hMerge = getTextByPathList(tcNode, ['attrs', 'hMerge'])\n const anchor = getTextByPathList(tcNode, ['a:tcPr', 'attrs', 'anchor'])\n let fillColor\n let fontColor\n let fontBold\n\n const getCelFill = getTextByPathList(tcNode, ['a:tcPr'])\n if (getCelFill) {\n const cellObj = { 'p:spPr': getCelFill }\n const fill = await getShapeFill(cellObj, warpObj, 'slide')\n\n if (fill && fill.type === 'color' && fill.value) {\n fillColor = fill.value \n }\n }\n if (!fillColor) {\n let bgFillschemeClr\n if (cellSource) bgFillschemeClr = getTextByPathList(thisTblStyle, [cellSource, 'a:tcStyle', 'a:fill', 'a:solidFill'])\n if (bgFillschemeClr) {\n fillColor = getSolidFill(bgFillschemeClr, undefined, undefined, warpObj)\n }\n }\n\n let rowTxtStyl\n if (cellSource) rowTxtStyl = getTextByPathList(thisTblStyle, [cellSource, 'a:tcTxStyle'])\n if (rowTxtStyl) {\n fontColor = getTableTextColor(rowTxtStyl, warpObj)\n if (getTextByPathList(rowTxtStyl, ['attrs', 'b']) === 'on') fontBold = true\n }\n\n let lin_bottm = getTextByPathList(tcNode, ['a:tcPr', 'a:lnB'])\n if (!lin_bottm) {\n if (cellSource) lin_bottm = getTextByPathList(thisTblStyle && thisTblStyle[cellSource], ['a:tcStyle', 'a:tcBdr', 'a:bottom', 'a:ln'])\n if (!lin_bottm) lin_bottm = getTextByPathList(thisTblStyle, ['a:wholeTbl', 'a:tcStyle', 'a:tcBdr', 'a:bottom', 'a:ln'])\n }\n let lin_top = getTextByPathList(tcNode, ['a:tcPr', 'a:lnT'])\n if (!lin_top) {\n if (cellSource) lin_top = getTextByPathList(thisTblStyle && thisTblStyle[cellSource], ['a:tcStyle', 'a:tcBdr', 'a:top', 'a:ln'])\n if (!lin_top) lin_top = getTextByPathList(thisTblStyle, ['a:wholeTbl', 'a:tcStyle', 'a:tcBdr', 'a:top', 'a:ln'])\n }\n let lin_left = getTextByPathList(tcNode, ['a:tcPr', 'a:lnL'])\n if (!lin_left) {\n if (cellSource) lin_left = getTextByPathList(thisTblStyle && thisTblStyle[cellSource], ['a:tcStyle', 'a:tcBdr', 'a:left', 'a:ln'])\n if (!lin_left) lin_left = getTextByPathList(thisTblStyle, ['a:wholeTbl', 'a:tcStyle', 'a:tcBdr', 'a:left', 'a:ln'])\n }\n let lin_right = getTextByPathList(tcNode, ['a:tcPr', 'a:lnR'])\n if (!lin_right) {\n if (cellSource) lin_right = getTextByPathList(thisTblStyle && thisTblStyle[cellSource], ['a:tcStyle', 'a:tcBdr', 'a:right', 'a:ln'])\n if (!lin_right) lin_right = getTextByPathList(thisTblStyle, ['a:wholeTbl', 'a:tcStyle', 'a:tcBdr', 'a:right', 'a:ln'])\n }\n\n const borders = {}\n if (lin_bottm) borders.bottom = getBorder(lin_bottm, undefined, warpObj)\n if (lin_top) borders.top = getBorder(lin_top, undefined, warpObj)\n if (lin_left) borders.left = getBorder(lin_left, undefined, warpObj)\n if (lin_right) borders.right = getBorder(lin_right, undefined, warpObj)\n\n return {\n fillColor,\n fontColor,\n fontBold,\n borders,\n vAlign: (anchor === 'ctr') ? 'mid' : ((anchor === 'b') ? 'down' : 'up'),\n rowSpan: rowSpan ? +rowSpan : undefined,\n colSpan: colSpan ? +colSpan : undefined,\n vMerge: vMerge ? +vMerge : undefined,\n hMerge: hMerge ? +hMerge : undefined,\n }\n}\n\nexport function getTableRowParams(trNodes, i, tblStylAttrObj, thisTblStyle, warpObj) {\n let fillColor\n let fontColor\n let fontBold\n\n if (thisTblStyle && thisTblStyle['a:wholeTbl']) {\n const bgFillschemeClr = getTextByPathList(thisTblStyle, ['a:wholeTbl', 'a:tcStyle', 'a:fill', 'a:solidFill'])\n if (bgFillschemeClr) {\n const local_fillColor = getSolidFill(bgFillschemeClr, undefined, undefined, warpObj)\n if (local_fillColor) fillColor = local_fillColor\n }\n const rowTxtStyl = getTextByPathList(thisTblStyle, ['a:wholeTbl', 'a:tcTxStyle'])\n if (rowTxtStyl) {\n const local_fontColor = getTableTextColor(rowTxtStyl, warpObj)\n if (local_fontColor) fontColor = local_fontColor\n if (getTextByPathList(rowTxtStyl, ['attrs', 'b']) === 'on') fontBold = true\n }\n }\n if (i === 0 && tblStylAttrObj['isFrstRowAttr'] === 1 && thisTblStyle) {\n const bgFillschemeClr = getTextByPathList(thisTblStyle, ['a:firstRow', 'a:tcStyle', 'a:fill', 'a:solidFill'])\n if (bgFillschemeClr) {\n const local_fillColor = getSolidFill(bgFillschemeClr, undefined, undefined, warpObj)\n if (local_fillColor) fillColor = local_fillColor\n }\n const rowTxtStyl = getTextByPathList(thisTblStyle, ['a:firstRow', 'a:tcTxStyle'])\n if (rowTxtStyl) {\n const local_fontColor = getTableTextColor(rowTxtStyl, warpObj)\n if (local_fontColor) fontColor = local_fontColor\n if (getTextByPathList(rowTxtStyl, ['attrs', 'b']) === 'on') fontBold = true\n }\n }\n else if (i > 0 && tblStylAttrObj['isBandRowAttr'] === 1 && thisTblStyle) {\n fillColor = ''\n if ((i % 2) === 0 && thisTblStyle['a:band2H']) {\n const bgFillschemeClr = getTextByPathList(thisTblStyle, ['a:band2H', 'a:tcStyle', 'a:fill', 'a:solidFill'])\n if (bgFillschemeClr) {\n const local_fillColor = getSolidFill(bgFillschemeClr, undefined, undefined, warpObj)\n if (local_fillColor) fillColor = local_fillColor\n }\n const rowTxtStyl = getTextByPathList(thisTblStyle, ['a:band2H', 'a:tcTxStyle'])\n if (rowTxtStyl) {\n const local_fontColor = getTableTextColor(rowTxtStyl, warpObj)\n if (local_fontColor) fontColor = local_fontColor\n }\n if (getTextByPathList(rowTxtStyl, ['attrs', 'b']) === 'on') fontBold = true\n }\n if ((i % 2) !== 0 && thisTblStyle['a:band1H']) {\n const bgFillschemeClr = getTextByPathList(thisTblStyle, ['a:band1H', 'a:tcStyle', 'a:fill', 'a:solidFill'])\n if (bgFillschemeClr) {\n const local_fillColor = getSolidFill(bgFillschemeClr, undefined, undefined, warpObj)\n if (local_fillColor) fillColor = local_fillColor\n }\n const rowTxtStyl = getTextByPathList(thisTblStyle, ['a:band1H', 'a:tcTxStyle'])\n if (rowTxtStyl) {\n const local_fontColor = getTableTextColor(rowTxtStyl, warpObj)\n if (local_fontColor) fontColor = local_fontColor\n if (getTextByPathList(rowTxtStyl, ['attrs', 'b']) === 'on') fontBold = true\n }\n }\n }\n if (i === (trNodes.length - 1) && tblStylAttrObj['isLstRowAttr'] === 1 && thisTblStyle) {\n const bgFillschemeClr = getTextByPathList(thisTblStyle, ['a:lastRow', 'a:tcStyle', 'a:fill', 'a:solidFill'])\n if (bgFillschemeClr) {\n const local_fillColor = getSolidFill(bgFillschemeClr, undefined, undefined, warpObj)\n if (local_fillColor) {\n fillColor = local_fillColor\n }\n }\n const rowTxtStyl = getTextByPathList(thisTblStyle, ['a:lastRow', 'a:tcTxStyle'])\n if (rowTxtStyl) {\n const local_fontColor = getTableTextColor(rowTxtStyl, warpObj)\n if (local_fontColor) fontColor = local_fontColor\n if (getTextByPathList(rowTxtStyl, ['attrs', 'b']) === 'on') fontBold = true\n }\n }\n\n return {\n fillColor,\n fontColor,\n fontBold,\n }\n}\n","/* eslint-disable max-lines */\n\nimport { RATIO_EMUs_Points } from './constants'\nimport { getTextByPathList } from './utils'\n\nfunction shapePie(H, w, adj1, adj2, isClose) {\n const pieVal = parseFloat(adj2)\n const piAngle = parseFloat(adj1)\n const size = parseFloat(H)\n const radiusY = size / 2\n const radiusX = w / 2\n const centerX = radiusX\n const centerY = radiusY\n\n let value = pieVal - piAngle\n if (value < 0) value = 360 + value\n value = Math.min(Math.max(value, 0), 360)\n\n const startRadians = piAngle * Math.PI / 180\n const endRadians = (piAngle + value) * Math.PI / 180\n const startX = centerX + Math.cos(startRadians) * radiusX\n const startY = centerY + Math.sin(startRadians) * radiusY\n const endX = centerX + Math.cos(endRadians) * radiusX\n const endY = centerY + Math.sin(endRadians) * radiusY\n\n let longArc, d\n if (isClose) {\n longArc = (value <= 180) ? 0 : 1\n d = `M${centerX},${centerY} L${startX},${startY} A${radiusX},${radiusY} 0 ${longArc},1 ${endX},${endY} z`\n } \n else {\n longArc = (value <= 180) ? 0 : 1\n d = `M${startX},${startY} A${radiusX},${radiusY} 0 ${longArc},1 ${endX},${endY}`\n }\n\n return d\n}\nfunction shapeGear(h, points) {\n const innerRadius = h\n const outerRadius = 1.5 * innerRadius\n const cx = outerRadius\n const cy = outerRadius\n const notches = points\n const radiusO = outerRadius\n const radiusI = innerRadius\n const taperO = 50\n const taperI = 35\n const pi2 = 2 * Math.PI\n const angle = pi2 / (notches * 2)\n const taperAI = angle * taperI * 0.005\n const taperAO = angle * taperO * 0.005\n\n let a = angle\n let toggle = false\n\n let d = ' M' + (cx + radiusO * Math.cos(taperAO)) + ' ' + (cy + radiusO * Math.sin(taperAO))\n\n for (; a <= pi2 + angle; a += angle) {\n if (toggle) {\n d += ' L' + (cx + radiusI * Math.cos(a - taperAI)) + ',' + (cy + radiusI * Math.sin(a - taperAI))\n d += ' L' + (cx + radiusO * Math.cos(a + taperAO)) + ',' + (cy + radiusO * Math.sin(a + taperAO))\n } \n else {\n d += ' L' + (cx + radiusO * Math.cos(a - taperAO)) + ',' + (cy + radiusO * Math.sin(a - taperAO))\n d += ' L' + (cx + radiusI * Math.cos(a + taperAI)) + ',' + (cy + radiusI * Math.sin(a + taperAI))\n }\n toggle = !toggle\n }\n d += ' '\n return d\n}\n\nfunction shapeArc(cX, cY, rX, rY, stAng, endAng, isClose) {\n let dData = ''\n const increment = (endAng >= stAng) ? 1 : -1\n let angle = stAng\n\n const condition = (a) => (increment > 0 ? a <= endAng : a >= endAng)\n\n while (condition(angle)) {\n const radians = angle * (Math.PI / 180)\n const x = cX + Math.cos(radians) * rX\n const y = cY + Math.sin(radians) * rY\n if (angle === stAng) {\n dData = ` M${x} ${y}`\n }\n dData += ` L${x} ${y}`\n angle += increment\n }\n\n if (isClose) {\n dData += ' z'\n }\n return dData\n}\n\nfunction shapeSnipRoundRect(w, h, adj1, adj2, shapeType, adjType) {\n let adjA, adjB, adjC, adjD\n\n switch (adjType) {\n case 'cornr1':\n adjA = 0\n adjB = 0\n adjC = 0\n adjD = adj1\n break\n case 'cornr2':\n adjA = adj1\n adjB = adj2\n adjC = adj2\n adjD = adj1\n break\n case 'cornrAll':\n adjA = adj1\n adjB = adj1\n adjC = adj1\n adjD = adj1\n break\n case 'diag':\n adjA = adj1\n adjB = adj2\n adjC = adj1\n adjD = adj2\n break\n case 'cornrTL':\n adjA = adj1\n adjB = 0\n adjC = 0\n adjD = 0\n break\n default:\n adjA = adjB = adjC = adjD = 0\n }\n\n // A rounded or snipped corner is a single distance applied equally to both axes, derived from\n // the shorter side: OOXML defines it as `ss * adj / 100000` with `ss = min(w, h)`. Scaling it\n // by w/2 across and h/2 down instead -- which agrees only when the shape is square -- turns a\n // wide, flat roundRect into a lens, because at maximum adj the two corner curves meet in the\n // middle of the shape rather than a corner radius in from each end. `adjA`..`adjD` arrive here\n // already divided by 50000, so half the shorter side is the full-radius case.\n const rA = adjA * (Math.min(w, h) / 2)\n const rB = adjB * (Math.min(w, h) / 2)\n const rC = adjC * (Math.min(w, h) / 2)\n const rD = adjD * (Math.min(w, h) / 2)\n\n if (shapeType === 'round') {\n return `M0,${h - rB} Q0,${h} ${rB},${h} L${w - rC},${h} Q${w},${h} ${w},${h - rC} L${w},${rD} Q${w},0 ${w - rD},0 L${rA},0 Q0,0 0,${rA} z`\n } \n else if (shapeType === 'snip') {\n return `M0,${rA} L0,${h - rB} L${rB},${h} L${w - rC},${h} L${w},${h - rC} L${w},${rD} L${w - rD},0 L${rA},0 z`\n }\n return ''\n}\n\nexport function getShapePath(shapType, w, h, node) {\n let pathData = ''\n\n switch (shapType) {\n case 'rect':\n case 'actionButtonBlank':\n pathData = `M 0 0 L ${w} 0 L ${w} ${h} L 0 ${h} Z`\n break\n case 'flowChartPredefinedProcess':\n pathData = `M 0 0 L ${w} 0 L ${w} ${h} L 0 ${h} Z M ${w * (1 / 8)} 0 L ${w * (1 / 8)} ${h} M ${w * (7 / 8)} 0 L ${w * (7 / 8)} ${h}`\n break\n case 'flowChartInternalStorage':\n pathData = `M 0 0 L ${w} 0 L ${w} ${h} L 0 ${h} Z M ${w * (1 / 8)} 0 L ${w * (1 / 8)} ${h} M 0 ${h * (1 / 8)} L ${w} ${h * (1 / 8)}`\n break\n case 'flowChartCollate':\n pathData = `M 0,0 L ${w},0 L 0,${h} L ${w},${h} z`\n break\n case 'flowChartDocument':\n {\n const x1 = w * 10800 / 21600\n const y1 = h * 17322 / 21600\n const y2 = h * 20172 / 21600\n const y3 = h * 23922 / 21600\n pathData = `M 0,0 L ${w},0 L ${w},${y1} C ${x1},${y1} ${x1},${y3} 0,${y2} z`\n }\n break\n case 'flowChartMultidocument':\n {\n const y1 = h * 18022 / 21600\n const y2 = h * 3675 / 21600\n const y3 = h * 23542 / 21600\n const y4 = h * 1815 / 21600\n const y5 = h * 16252 / 21600\n const y6 = h * 16352 / 21600\n const y7 = h * 14392 / 21600\n const y8 = h * 20782 / 21600\n const y9 = h * 14467 / 21600\n const x1 = w * 1532 / 21600\n const x2 = w * 20000 / 21600\n const x3 = w * 9298 / 21600\n const x4 = w * 19298 / 21600\n const x5 = w * 18595 / 21600\n const x6 = w * 2972 / 21600\n const x7 = w * 20800 / 21600\n pathData = `M 0,${y2} L ${x5},${y2} L ${x5},${y1} C ${x3},${y1} ${x3},${y3} 0,${y8} z M ${x1},${y2} L ${x1},${y4} L ${x2},${y4} L ${x2},${y5} C ${x4},${y5} ${x5},${y6} ${x5},${y6} M ${x6},${y4} L ${x6},0 L ${w},0 L ${w},${y7} C ${x7},${y7} ${x2},${y9} ${x2},${y9}`\n }\n break\n case 'actionButtonBackPrevious':\n {\n const hc = w / 2,\n vc = h / 2,\n ss = Math.min(w, h)\n const dx2 = ss * 3 / 8\n const g9 = vc - dx2\n const g10 = vc + dx2\n const g11 = hc - dx2\n const g12 = hc + dx2\n pathData = `M 0,0 L ${w},0 L ${w},${h} L 0,${h} z M ${g11},${vc} L ${g12},${g9} L ${g12},${g10} z`\n }\n break\n case 'actionButtonBeginning':\n {\n const hc = w / 2,\n vc = h / 2,\n ss = Math.min(w, h)\n const dx2 = ss * 3 / 8\n const g9 = vc - dx2\n const g10 = vc + dx2\n const g11 = hc - dx2\n const g12 = hc + dx2\n const g13 = ss * 3 / 4\n const g14 = g13 / 8\n const g15 = g13 / 4\n const g16 = g11 + g14\n const g17 = g11 + g15\n pathData = `M 0,0 L ${w},0 L ${w},${h} L 0,${h} z M ${g17},${vc} L ${g12},${g9} L ${g12},${g10} z M ${g16},${g9} L ${g11},${g9} L ${g11},${g10} L ${g16},${g10} z`\n }\n break\n case 'actionButtonDocument':\n {\n const hc = w / 2,\n vc = h / 2,\n ss = Math.min(w, h)\n const dx2 = ss * 3 / 8\n const g9 = vc - dx2\n const g10 = vc + dx2\n const dx1 = ss * 9 / 32\n const g11 = hc - dx1\n const g12 = hc + dx1\n const g13 = ss * 3 / 16\n const g14 = g12 - g13\n const g15 = g9 + g13\n pathData = `M 0,0 L ${w},0 L ${w},${h} L 0,${h} z M ${g11},${g9} L ${g14},${g9} L ${g12},${g15} L ${g12},${g10} L ${g11},${g10} z M ${g14},${g9} L ${g14},${g15} L ${g12},${g15} z`\n }\n break\n case 'actionButtonEnd':\n {\n const hc = w / 2,\n vc = h / 2,\n ss = Math.min(w, h)\n const dx2 = ss * 3 / 8\n const g9 = vc - dx2\n const g10 = vc + dx2\n const g11 = hc - dx2\n const g12 = hc + dx2\n const g13 = ss * 3 / 4\n const g14 = g13 * 3 / 4\n const g15 = g13 * 7 / 8\n const g16 = g11 + g14\n const g17 = g11 + g15\n pathData = `M 0,${h} L ${w},${h} L ${w},0 L 0,0 z M ${g17},${g9} L ${g12},${g9} L ${g12},${g10} L ${g17},${g10} z M ${g16},${vc} L ${g11},${g9} L ${g11},${g10} z`\n }\n break\n case 'actionButtonForwardNext':\n {\n const hc = w / 2,\n vc = h / 2,\n ss = Math.min(w, h)\n const dx2 = ss * 3 / 8\n const g9 = vc - dx2\n const g10 = vc + dx2\n const g11 = hc - dx2\n const g12 = hc + dx2\n pathData = `M 0,${h} L ${w},${h} L ${w},0 L 0,0 z M ${g12},${vc} L ${g11},${g9} L ${g11},${g10} z`\n }\n break\n case 'actionButtonHelp':\n {\n const hc = w / 2,\n vc = h / 2,\n ss = Math.min(w, h)\n const dx2 = ss * 3 / 8\n const g9 = vc - dx2\n const g11 = hc - dx2\n const g13 = ss * 3 / 4\n const g14 = g13 / 7\n const g15 = g13 * 3 / 14\n const g16 = g13 * 2 / 7\n const g19 = g13 * 3 / 7\n const g20 = g13 * 4 / 7\n const g21 = g13 * 17 / 28\n const g23 = g13 * 21 / 28\n const g24 = g13 * 11 / 14\n const g27 = g9 + g16\n const g29 = g9 + g21\n const g30 = g9 + g23\n const g31 = g9 + g24\n const g33 = g11 + g15\n const g36 = g11 + g19\n const g37 = g11 + g20\n const g41 = g13 / 14\n const g42 = g13 * 3 / 28\n const cX1 = g33 + g16\n const cX2 = g36 + g14\n const cY3 = g31 + g42\n const cX4 = (g37 + g36 + g16) / 2\n pathData = `M 0,0 L ${w},0 L ${w},${h} L 0,${h} z M ${g33},${g27} ${shapeArc(cX1, g27, g16, g16, 180, 360, false).replace('M', 'L')} ${shapeArc(cX4, g27, g14, g15, 0, 90, false).replace('M', 'L')} ${shapeArc(cX4, g29, g41, g42, 270, 180, false).replace('M', 'L')} L ${g37},${g30} L ${g36},${g30} L ${g36},${g29} ${shapeArc(cX2, g29, g14, g15, 180, 270, false).replace('M', 'L')} ${shapeArc(g37, g27, g41, g42, 90, 0, false).replace('M', 'L')} ${shapeArc(cX1, g27, g14, g14, 0, -180, false).replace('M', 'L')} z M ${hc},${g31} ${shapeArc(hc, cY3, g42, g42, 270, 630, false).replace('M', 'L')} z`\n }\n break\n case 'actionButtonHome':\n {\n const hc = w / 2,\n vc = h / 2,\n ss = Math.min(w, h)\n const dx2 = ss * 3 / 8\n const g9 = vc - dx2\n const g10 = vc + dx2\n const g11 = hc - dx2\n const g12 = hc + dx2\n const g13 = ss * 3 / 4\n const g14 = g13 / 16\n const g15 = g13 / 8\n const g16 = g13 * 3 / 16\n const g17 = g13 * 5 / 16\n const g18 = g13 * 7 / 16\n const g19 = g13 * 9 / 16\n const g20 = g13 * 11 / 16\n const g21 = g13 * 3 / 4\n const g22 = g13 * 13 / 16\n const g23 = g13 * 7 / 8\n const g24 = g9 + g14\n const g25 = g9 + g16\n const g26 = g9 + g17\n const g27 = g9 + g21\n const g28 = g11 + g15\n const g29 = g11 + g18\n const g30 = g11 + g19\n const g31 = g11 + g20\n const g32 = g11 + g22\n const g33 = g11 + g23\n pathData = `M 0,0 L ${w},0 L ${w},${h} L 0,${h} z M ${hc},${g9} L ${g11},${vc} L ${g28},${vc} L ${g28},${g10} L ${g33},${g10} L ${g33},${vc} L ${g12},${vc} L ${g32},${g26} L ${g32},${g24} L ${g31},${g24} L ${g31},${g25} z M ${g29},${g27} L ${g30},${g27} L ${g30},${g10} L ${g29},${g10} z`\n }\n break\n case 'actionButtonInformation':\n {\n const hc = w / 2,\n vc = h / 2,\n ss = Math.min(w, h)\n const dx2 = ss * 3 / 8\n const g9 = vc - dx2\n const g11 = hc - dx2\n const g13 = ss * 3 / 4\n const g14 = g13 / 32\n const g17 = g13 * 5 / 16\n const g18 = g13 * 3 / 8\n const g19 = g13 * 13 / 32\n const g20 = g13 * 19 / 32\n const g22 = g13 * 11 / 16\n const g23 = g13 * 13 / 16\n const g24 = g13 * 7 / 8\n const g25 = g9 + g14\n const g28 = g9 + g17\n const g29 = g9 + g18\n const g30 = g9 + g23\n const g31 = g9 + g24\n const g32 = g11 + g17\n const g34 = g11 + g19\n const g35 = g11 + g20\n const g37 = g11 + g22\n const g38 = g13 * 3 / 32\n const cY1 = g9 + dx2\n const cY2 = g25 + g38\n pathData = `M 0,0 L ${w},0 L ${w},${h} L 0,${h} z M ${hc},${g9} ${shapeArc(hc, cY1, dx2, dx2, 270, 630, false).replace('M', 'L')} z M ${hc},${g25} ${shapeArc(hc, cY2, g38, g38, 270, 630, false).replace('M', 'L')} M ${g32},${g28} L ${g35},${g28} L ${g35},${g30} L ${g37},${g30} L ${g37},${g31} L ${g32},${g31} L ${g32},${g30} L ${g34},${g30} L ${g34},${g29} L ${g32},${g29} z`\n }\n break\n case 'actionButtonMovie':\n {\n const hc = w / 2,\n vc = h / 2,\n ss = Math.min(w, h)\n const g11 = hc - (ss * 3 / 8)\n const g9 = vc - (ss * 3 / 8)\n const g12 = hc + (ss * 3 / 8)\n const g13 = ss * 3 / 4\n const g14 = g13 * 1455 / 21600\n const g15 = g13 * 1905 / 21600\n const g16 = g13 * 2325 / 21600\n const g17 = g13 * 16155 / 21600\n const g18 = g13 * 17010 / 21600\n const g19 = g13 * 19335 / 21600\n const g20 = g13 * 19725 / 21600\n const g21 = g13 * 20595 / 21600\n const g22 = g13 * 5280 / 21600\n const g23 = g13 * 5730 / 21600\n const g24 = g13 * 6630 / 21600\n const g25 = g13 * 7492 / 21600\n const g26 = g13 * 9067 / 21600\n const g27 = g13 * 9555 / 21600\n const g28 = g13 * 13342 / 21600\n const g29 = g13 * 14580 / 21600\n const g30 = g13 * 15592 / 21600\n const g31 = g11 + g14\n const g32 = g11 + g15\n const g33 = g11 + g16\n const g34 = g11 + g17\n const g35 = g11 + g18\n const g36 = g11 + g19\n const g37 = g11 + g20\n const g38 = g11 + g21\n const g39 = g9 + g22\n const g40 = g9 + g23\n const g41 = g9 + g24\n const g42 = g9 + g25\n const g43 = g9 + g26\n const g44 = g9 + g27\n const g45 = g9 + g28\n const g46 = g9 + g29\n const g47 = g9 + g30\n pathData = `M 0,${h} L ${w},${h} L ${w},0 L 0,0 z M ${g11},${g39} L ${g11},${g44} L ${g31},${g44} L ${g32},${g43} L ${g33},${g43} L ${g33},${g47} L ${g35},${g47} L ${g35},${g45} L ${g36},${g45} L ${g38},${g46} L ${g12},${g46} L ${g12},${g41} L ${g38},${g41} L ${g37},${g42} L ${g35},${g42} L ${g35},${g41} L ${g34},${g40} L ${g32},${g40} L ${g31},${g39} z`\n }\n break\n case 'actionButtonReturn':\n {\n const hc = w / 2,\n vc = h / 2,\n ss = Math.min(w, h)\n const dx2 = ss * 3 / 8\n const g9 = vc - dx2\n const g10 = vc + dx2\n const g11 = hc - dx2\n const g12 = hc + dx2\n const g13 = ss * 3 / 4\n const g14 = g13 * 7 / 8\n const g15 = g13 * 3 / 4\n const g16 = g13 * 5 / 8\n const g17 = g13 * 3 / 8\n const g18 = g13 / 4\n const g19 = g9 + g15\n const g20 = g9 + g16\n const g21 = g9 + g18\n const g22 = g11 + g14\n const g23 = g11 + g15\n const g24 = g11 + g16\n const g25 = g11 + g17\n const g26 = g11 + g18\n const g27 = g13 / 8\n const cX1 = g24 - g27\n const cY2 = g19 - g27\n const cX3 = g11 + g17\n const cY4 = g10 - g17\n pathData = `M 0,${h} L ${w},${h} L ${w},0 L 0,0 z M ${g12},${g21} L ${g23},${g9} L ${hc},${g21} L ${g24},${g21} L ${g24},${g20} ${shapeArc(cX1, g20, g27, g27, 0, 90, false).replace('M', 'L')} L ${g25},${g19} ${shapeArc(g25, cY2, g27, g27, 90, 180, false).replace('M', 'L')} L ${g26},${g21} L ${g11},${g21} L ${g11},${g20} ${shapeArc(cX3, g20, g17, g17, 180, 90, false).replace('M', 'L')} L ${hc},${g10} ${shapeArc(hc, cY4, g17, g17, 90, 0, false).replace('M', 'L')} L ${g22},${g21} z`\n }\n break\n case 'actionButtonSound':\n {\n const hc = w / 2,\n vc = h / 2,\n ss = Math.min(w, h)\n const dx2 = ss * 3 / 8\n const g9 = vc - dx2\n const g10 = vc + dx2\n const g11 = hc - dx2\n const g12 = hc + dx2\n const g13 = ss * 3 / 4\n const g14 = g13 / 8\n const g15 = g13 * 5 / 16\n const g16 = g13 * 5 / 8\n const g17 = g13 * 11 / 16\n const g18 = g13 * 3 / 4\n const g19 = g13 * 7 / 8\n const g20 = g9 + g14\n const g21 = g9 + g15\n const g22 = g9 + g17\n const g23 = g9 + g19\n const g24 = g11 + g15\n const g25 = g11 + g16\n const g26 = g11 + g18\n pathData = `M 0,0 L ${w},0 L ${w},${h} L 0,${h} z M ${g11},${g21} L ${g24},${g21} L ${g25},${g9} L ${g25},${g10} L ${g24},${g22} L ${g11},${g22} z M ${g26},${g21} L ${g12},${g20} M ${g26},${vc} L ${g12},${vc} M ${g26},${g22} L ${g12},${g23}`\n }\n break\n case 'irregularSeal1':\n pathData = `M ${w * 10800 / 21600},${h * 5800 / 21600} L ${w * 14522 / 21600},0 L ${w * 14155 / 21600},${h * 5325 / 21600} L ${w * 18380 / 21600},${h * 4457 / 21600} L ${w * 16702 / 21600},${h * 7315 / 21600} L ${w * 21097 / 21600},${h * 8137 / 21600} L ${w * 17607 / 21600},${h * 10475 / 21600} L ${w},${h * 13290 / 21600} L ${w * 16837 / 21600},${h * 12942 / 21600} L ${w * 18145 / 21600},${h * 18095 / 21600} L ${w * 14020 / 21600},${h * 14457 / 21600} L ${w * 13247 / 21600},${h * 19737 / 21600} L ${w * 10532 / 21600},${h * 14935 / 21600} L ${w * 8485 / 21600},${h} L ${w * 7715 / 21600},${h * 15627 / 21600} L ${w * 4762 / 21600},${h * 17617 / 21600} L ${w * 5667 / 21600},${h * 13937 / 21600} L ${w * 135 / 21600},${h * 14587 / 21600} L ${w * 3722 / 21600},${h * 11775 / 21600} L 0,${h * 8615 / 21600} L ${w * 4627 / 21600},${h * 7617 / 21600} L ${w * 370 / 21600},${h * 2295 / 21600} L ${w * 7312 / 21600},${h * 6320 / 21600} L ${w * 8352 / 21600},${h * 2295 / 21600} z`\n break\n case 'irregularSeal2':\n pathData = `M ${w * 11462 / 21600},${h * 4342 / 21600} L ${w * 14790 / 21600},0 L ${w * 14525 / 21600},${h * 5777 / 21600} L ${w * 18007 / 21600},${h * 3172 / 21600} L ${w * 16380 / 21600},${h * 6532 / 21600} L ${w},${h * 6645 / 21600} L ${w * 16985 / 21600},${h * 9402 / 21600} L ${w * 18270 / 21600},${h * 11290 / 21600} L ${w * 16380 / 21600},${h * 12310 / 21600} L ${w * 18877 / 21600},${h * 15632 / 21600} L ${w * 14640 / 21600},${h * 14350 / 21600} L ${w * 14942 / 21600},${h * 17370 / 21600} L ${w * 12180 / 21600},${h * 15935 / 21600} L ${w * 11612 / 21600},${h * 18842 / 21600} L ${w * 9872 / 21600},${h * 17370 / 21600} L ${w * 8700 / 21600},${h * 19712 / 21600} L ${w * 7527 / 21600},${h * 18125 / 21600} L ${w * 4917 / 21600},${h} L ${w * 4805 / 21600},${h * 18240 / 21600} L ${w * 1285 / 21600},${h * 17825 / 21600} L ${w * 3330 / 21600},${h * 15370 / 21600} L 0,${h * 12877 / 21600} L ${w * 3935 / 21600},${h * 11592 / 21600} L ${w * 1172 / 21600},${h * 8270 / 21600} L ${w * 5372 / 21600},${h * 7817 / 21600} L ${w * 4502 / 21600},${h * 3625 / 21600} L ${w * 8550 / 21600},${h * 6382 / 21600} L ${w * 9722 / 21600},${h * 1887 / 21600} z`\n break\n case 'flowChartTerminator':\n {\n const cd2 = 180,\n cd4 = 90,\n c3d4 = 270\n const x1 = w * 3475 / 21600\n const x2 = w * 18125 / 21600\n const y1 = h * 10800 / 21600\n pathData = `M ${x1},0 L ${x2},0 ${shapeArc(x2, h / 2, x1, y1, c3d4, c3d4 + cd2, false).replace('M', 'L')} L ${x1},${h} ${shapeArc(x1, h / 2, x1, y1, cd4, cd4 + cd2, false).replace('M', 'L')} z`\n }\n break\n case 'flowChartPunchedTape':\n {\n const cd2 = 180\n const x1 = w * 5 / 20\n const y1 = h * 2 / 20\n const y2 = h * 18 / 20\n pathData = `M 0,${y1} ${shapeArc(x1, y1, x1, y1, cd2, 0, false).replace('M', 'L')} ${shapeArc(w * (3 / 4), y1, x1, y1, cd2, 360, false).replace('M', 'L')} L ${w},${y2} ${shapeArc(w * (3 / 4), y2, x1, y1, 0, -cd2, false).replace('M', 'L')} ${shapeArc(x1, y2, x1, y1, 0, cd2, false).replace('M', 'L')} z`\n }\n break\n case 'flowChartOnlineStorage':\n {\n const c3d4 = 270,\n cd4 = 90\n const x1 = w * 1 / 6\n const y1 = h * 3 / 6\n pathData = `M ${x1},0 L ${w},0 ${shapeArc(w, h / 2, x1, y1, c3d4, 90, false).replace('M', 'L')} L ${x1},${h} ${shapeArc(x1, h / 2, x1, y1, cd4, 270, false).replace('M', 'L')} z`\n }\n break\n case 'flowChartDisplay':\n {\n const c3d4 = 270,\n cd2 = 180\n const x1 = w * 1 / 6\n const x2 = w * 5 / 6\n const y1 = h * 3 / 6\n pathData = `M 0,${y1} L ${x1},0 L ${x2},0 ${shapeArc(w, h / 2, x1, y1, c3d4, c3d4 + cd2, false).replace('M', 'L')} L ${x1},${h} z`\n }\n break\n case 'flowChartDelay':\n {\n const wd2 = w / 2,\n hd2 = h / 2,\n cd2 = 180,\n c3d4 = 270\n pathData = `M 0,0 L ${wd2},0 ${shapeArc(wd2, hd2, wd2, hd2, c3d4, c3d4 + cd2, false).replace('M', 'L')} L 0,${h} z`\n }\n break\n case 'flowChartMagneticTape':\n {\n const wd2 = w / 2,\n hd2 = h / 2,\n cd2 = 180,\n c3d4 = 270,\n cd4 = 90\n const idy = hd2 * Math.sin(Math.PI / 4)\n const ib = hd2 + idy\n const ang1 = Math.atan(h / w)\n const ang1Dg = ang1 * 180 / Math.PI\n pathData = `M ${wd2},${h} ${shapeArc(wd2, hd2, wd2, hd2, cd4, cd2, false).replace('M', 'L')} ${shapeArc(wd2, hd2, wd2, hd2, cd2, c3d4, false).replace('M', 'L')} ${shapeArc(wd2, hd2, wd2, hd2, c3d4, 360, false).replace('M', 'L')} ${shapeArc(wd2, hd2, wd2, hd2, 0, ang1Dg, false).replace('M', 'L')} L ${w},${ib} L ${w},${h} z`\n }\n break\n case 'ellipse':\n case 'flowChartConnector':\n case 'flowChartSummingJunction':\n case 'flowChartOr':\n {\n const cx = w / 2\n const cy = h / 2\n const rx = w / 2\n const ry = h / 2\n\n pathData = `M ${cx - rx},${cy} A ${rx},${ry} 0 1,0 ${cx + rx},${cy} A ${rx},${ry} 0 1,0 ${cx - rx},${cy} Z`\n\n if (shapType === 'flowChartOr') {\n pathData += ` M ${w / 2} 0 L ${w / 2} ${h} M 0 ${h / 2} L ${w} ${h / 2}`\n } \n else if (shapType === 'flowChartSummingJunction') {\n const angVal = Math.PI / 4\n const iDx = (w / 2) * Math.cos(angVal)\n const idy = (h / 2) * Math.sin(angVal)\n const il = cx - iDx\n const ir = cx + iDx\n const it = cy - idy\n const ib = cy + idy\n pathData += ` M ${il} ${it} L ${ir} ${ib} M ${ir} ${it} L ${il} ${ib}`\n }\n }\n break\n case 'roundRect':\n case 'round1Rect':\n case 'round2DiagRect':\n case 'round2SameRect':\n case 'snip1Rect':\n case 'snip2DiagRect':\n case 'snip2SameRect':\n case 'flowChartAlternateProcess':\n case 'flowChartPunchedCard':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let sAdj1_val, sAdj2_val\n let shpTyp, adjTyp\n\n if (shapAdjst_ary && Array.isArray(shapAdjst_ary)) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n const sAdj1 = getTextByPathList(adj, ['attrs', 'fmla'])\n sAdj1_val = parseInt(sAdj1.substring(4)) / 50000\n } \n else if (sAdj_name === 'adj2') {\n const sAdj2 = getTextByPathList(adj, ['attrs', 'fmla'])\n sAdj2_val = parseInt(sAdj2.substring(4)) / 50000\n }\n }\n } \n else if (shapAdjst_ary) {\n const sAdj = getTextByPathList(shapAdjst_ary, ['attrs', 'fmla'])\n sAdj1_val = parseInt(sAdj.substring(4)) / 50000\n sAdj2_val = 0\n }\n\n switch (shapType) {\n case 'roundRect':\n case 'flowChartAlternateProcess':\n shpTyp = 'round'\n adjTyp = 'cornrAll'\n if (sAdj1_val === undefined) sAdj1_val = 0.33334\n sAdj2_val = 0\n break\n case 'round1Rect':\n shpTyp = 'round'\n adjTyp = 'cornr1'\n if (sAdj1_val === undefined) sAdj1_val = 0.33334\n sAdj2_val = 0\n break\n case 'round2DiagRect':\n shpTyp = 'round'\n adjTyp = 'diag'\n if (sAdj1_val === undefined) sAdj1_val = 0.33334\n if (sAdj2_val === undefined) sAdj2_val = 0\n break\n case 'round2SameRect':\n shpTyp = 'round'\n adjTyp = 'cornr2'\n if (sAdj1_val === undefined) sAdj1_val = 0.33334\n if (sAdj2_val === undefined) sAdj2_val = 0\n break\n case 'snip1Rect':\n shpTyp = 'snip'\n adjTyp = 'cornr1'\n if (sAdj1_val === undefined) sAdj1_val = 0.33334\n sAdj2_val = 0\n break\n case 'flowChartPunchedCard':\n shpTyp = 'snip'\n adjTyp = 'cornrTL'\n if (sAdj1_val === undefined) sAdj1_val = 0.33334\n sAdj2_val = 0\n break\n case 'snip2DiagRect':\n shpTyp = 'snip'\n adjTyp = 'diag'\n if (sAdj1_val === undefined) sAdj1_val = 0\n if (sAdj2_val === undefined) sAdj2_val = 0.33334\n break\n case 'snip2SameRect':\n shpTyp = 'snip'\n adjTyp = 'cornr2'\n if (sAdj1_val === undefined) sAdj1_val = 0.33334\n if (sAdj2_val === undefined) sAdj2_val = 0\n break\n default:\n }\n pathData = shapeSnipRoundRect(w, h, sAdj1_val, sAdj2_val, shpTyp, adjTyp)\n }\n break\n case 'snipRoundRect':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let sAdj1_val = 0.33334\n let sAdj2_val = 0.33334\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n const sAdj1 = getTextByPathList(adj, ['attrs', 'fmla'])\n sAdj1_val = parseInt(sAdj1.substring(4)) / 50000\n } \n else if (sAdj_name === 'adj2') {\n const sAdj2 = getTextByPathList(adj, ['attrs', 'fmla'])\n sAdj2_val = parseInt(sAdj2.substring(4)) / 50000\n }\n }\n }\n pathData = `M0,${h} L${w},${h} L${w},${(h / 2) * sAdj2_val} L${w / 2 + (w / 2) * (1 - sAdj2_val)},0 L${(w / 2) * sAdj1_val},0 Q0,0 0,${(h / 2) * sAdj1_val} z`\n }\n break\n case 'bentConnector2':\n pathData = `M ${w} 0 L ${w} ${h} L 0 ${h}`\n break\n case 'rtTriangle':\n pathData = `M 0 0 L 0 ${h} L ${w} ${h} Z`\n break\n case 'triangle':\n case 'flowChartExtract':\n case 'flowChartMerge':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let shapAdjst_val = 0.5\n if (shapAdjst) {\n shapAdjst_val = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n\n let p1x = w * shapAdjst_val\n let p1y = 0\n let p2x = 0\n let p2y = h\n let p3x = w\n let p3y = h\n\n if (shapType === 'flowChartMerge') {\n [p1x, p1y] = [w - p1x, h - p1y]\n ;[p2x, p2y] = [w - p2x, h - p2y]\n ;[p3x, p3y] = [w - p3x, h - p3y]\n }\n\n pathData = `M ${p1x} ${p1y} L ${p2x} ${p2y} L ${p3x} ${p3y} Z`\n }\n break\n case 'diamond':\n case 'flowChartDecision':\n case 'flowChartSort':\n pathData = `M ${w / 2} 0 L 0 ${h / 2} L ${w / 2} ${h} L ${w} ${h / 2} Z`\n if (shapType === 'flowChartSort') {\n pathData += ` M 0 ${h / 2} L ${w} ${h / 2}`\n }\n break\n case 'trapezoid':\n case 'flowChartManualOperation':\n case 'flowChartManualInput':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adjst_val = 0.2\n if (shapAdjst) {\n // The adjust value is a fraction of the shorter side in 100000ths, not an EMU length,\n // so RATIO_EMUs_Points has no business here; putting it through produced a top edge\n // wider than the shape itself and a self-crossing bow tie. `maxAdj` is where the two\n // top corners meet, past which the shape would invert.\n const ss = Math.min(w, h)\n const a = Math.max(0, Math.min(parseInt(shapAdjst.substring(4)), (50000 * w) / ss))\n adjst_val = (ss * a) / 100000 / w\n }\n\n let p1x = w * adjst_val,\n p1y = 0\n let p2x = 0,\n p2y = h\n let p3x = w,\n p3y = h\n let p4x = (1 - adjst_val) * w,\n p4y = 0\n\n if (shapType === 'flowChartManualInput') {\n adjst_val = 0\n p1y = h / 5\n p1x = w * adjst_val\n p4x = (1 - adjst_val) * w\n }\n\n if (shapType === 'flowChartManualOperation') {\n [p1x, p1y] = [w - p1x, h - p1y]\n ;[p2x, p2y] = [w - p2x, h - p2y]\n ;[p3x, p3y] = [w - p3x, h - p3y]\n ;[p4x, p4y] = [w - p4x, h - p4y]\n }\n\n pathData = `M ${p1x} ${p1y} L ${p2x} ${p2y} L ${p3x} ${p3y} L ${p4x} ${p4y} Z`\n }\n break\n case 'parallelogram':\n case 'flowChartInputOutput':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adjst_val = 0.25\n if (shapAdjst) {\n // Same rule as the trapezoid: the offset is `ss * adj / 200000`, a fraction of the\n // shorter side. Dividing by the aspect ratio instead leaves the slant too steep on\n // any shape that is not square.\n const ss = Math.min(w, h)\n const a = Math.max(0, Math.min(parseInt(shapAdjst.substring(4)), (100000 * w) / ss))\n adjst_val = (ss * a) / 200000 / w\n }\n pathData = `M ${adjst_val * w} 0 L 0 ${h} L ${(1 - adjst_val) * w} ${h} L ${w} 0 Z`\n }\n break\n case 'pentagon':\n pathData = `M ${0.5 * w} 0 L 0 ${0.375 * h} L ${0.15 * w} ${h} L ${0.85 * w} ${h} L ${w} ${0.375 * h} Z`\n break\n case 'hexagon':\n case 'flowChartPreparation':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj = 25000 * RATIO_EMUs_Points\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n const vf = 115470 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const angVal1 = 60 * Math.PI / 180\n const ss = Math.min(w, h)\n const maxAdj = cnstVal1 * w / ss\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n const hd2 = h / 2\n const shd2 = hd2 * vf / cnstVal2\n const x1 = ss * a / cnstVal2\n const x2 = w - x1\n const dy1 = shd2 * Math.sin(angVal1)\n const vc = h / 2\n const y1 = vc - dy1\n const y2 = vc + dy1\n pathData = `M 0,${vc} L ${x1},${y1} L ${x2},${y1} L ${w},${vc} L ${x2},${y2} L ${x1},${y2} z`\n }\n break\n case 'heptagon':\n pathData = `M ${0.5 * w} 0 L ${w / 8} ${h / 4} L 0 ${5 / 8 * h} L ${w / 4} ${h} L ${3 / 4 * w} ${h} L ${w} ${5 / 8 * h} L ${7 / 8 * w} ${h / 4} Z`\n break\n case 'octagon':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj1 = 0.25\n if (shapAdjst) {\n adj1 = parseInt(shapAdjst.substring(4)) / 100000\n }\n const adj2 = (1 - adj1)\n pathData = `M ${adj1 * w} 0 L 0 ${adj1 * h} L 0 ${adj2 * h} L ${adj1 * w} ${h} L ${adj2 * w} ${h} L ${w} ${adj2 * h} L ${w} ${adj1 * h} L ${adj2 * w} 0 Z`\n }\n break\n case 'decagon':\n pathData = `M ${3 / 8 * w} 0 L ${w / 8} ${h / 8} L 0 ${h / 2} L ${w / 8} ${7 / 8 * h} L ${3 / 8 * w} ${h} L ${5 / 8 * w} ${h} L ${7 / 8 * w} ${7 / 8 * h} L ${w} ${h / 2} L ${7 / 8 * w} ${h / 8} L ${5 / 8 * w} 0 Z`\n break\n case 'dodecagon':\n pathData = `M ${3 / 8 * w} 0 L ${w / 8} ${h / 8} L 0 ${3 / 8 * h} L 0 ${5 / 8 * h} L ${w / 8} ${7 / 8 * h} L ${3 / 8 * w} ${h} L ${5 / 8 * w} ${h} L ${7 / 8 * w} ${7 / 8 * h} L ${w} ${5 / 8 * h} L ${w} ${3 / 8 * h} L ${7 / 8 * w} ${h / 8} L ${5 / 8 * w} 0 Z`\n break\n case 'star4':\n {\n const hc = w / 2,\n vc = h / 2,\n wd2 = w / 2,\n hd2 = h / 2\n let adj = 19098 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n if (shapAdjst) {\n const name = shapAdjst['attrs']['name']\n if (name === 'adj') {\n adj = parseInt(shapAdjst['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n }\n }\n const a = (adj < 0) ? 0 : (adj > cnstVal1) ? cnstVal1 : adj\n const iwd2 = wd2 * a / cnstVal1\n const ihd2 = hd2 * a / cnstVal1\n const sdx = iwd2 * Math.cos(0.7853981634)\n const sdy = ihd2 * Math.sin(0.7853981634)\n const sx1 = hc - sdx\n const sx2 = hc + sdx\n const sy1 = vc - sdy\n const sy2 = vc + sdy\n pathData = `M 0,${vc} L ${sx1},${sy1} L ${hc},0 L ${sx2},${sy1} L ${w},${vc} L ${sx2},${sy2} L ${hc},${h} L ${sx1},${sy2} z`\n }\n break\n case 'star5':\n {\n const hc = w / 2,\n vc = h / 2,\n wd2 = w / 2,\n hd2 = h / 2\n let adj = 19098 * RATIO_EMUs_Points\n let hf = 105146 * RATIO_EMUs_Points\n let vf = 110557 * RATIO_EMUs_Points\n const maxAdj = 50000 * RATIO_EMUs_Points\n const cnstVal1 = 100000 * RATIO_EMUs_Points\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n if (shapAdjst) {\n Object.keys(shapAdjst).forEach(key => {\n const name = shapAdjst[key]['attrs']['name']\n if (name === 'adj') {\n adj = parseInt(shapAdjst[key]['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n } \n else if (name === 'hf') {\n hf = parseInt(shapAdjst[key]['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n } \n else if (name === 'vf') {\n vf = parseInt(shapAdjst[key]['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n }\n })\n }\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n const swd2 = wd2 * hf / cnstVal1\n const shd2 = hd2 * vf / cnstVal1\n const svc = vc * vf / cnstVal1\n const dx1 = swd2 * Math.cos(0.31415926536)\n const dx2 = swd2 * Math.cos(5.3407075111)\n const dy1 = shd2 * Math.sin(0.31415926536)\n const dy2 = shd2 * Math.sin(5.3407075111)\n const x1 = hc - dx1\n const x2 = hc - dx2\n const x3 = hc + dx2\n const x4 = hc + dx1\n const y1 = svc - dy1\n const y2 = svc - dy2\n const iwd2 = swd2 * a / maxAdj\n const ihd2 = shd2 * a / maxAdj\n const sdx1 = iwd2 * Math.cos(5.9690260418)\n const sdx2 = iwd2 * Math.cos(0.94247779608)\n const sdy1 = ihd2 * Math.sin(0.94247779608)\n const sdy2 = ihd2 * Math.sin(5.9690260418)\n const sx1 = hc - sdx1\n const sx2 = hc - sdx2\n const sx3 = hc + sdx2\n const sx4 = hc + sdx1\n const sy1 = svc - sdy1\n const sy2 = svc - sdy2\n const sy3 = svc + ihd2\n pathData = `M ${x1},${y1} L ${sx2},${sy1} L ${hc},0 L ${sx3},${sy1} L ${x4},${y1} L ${sx4},${sy2} L ${x3},${y2} L ${hc},${sy3} L ${x2},${y2} L ${sx1},${sy2} z`\n }\n break\n case 'star6':\n {\n const hc = w / 2,\n vc = h / 2,\n wd2 = w / 2,\n hd2 = h / 2,\n hd4 = h / 4\n let adj = 28868 * RATIO_EMUs_Points\n let hf = 115470 * RATIO_EMUs_Points\n const maxAdj = 50000 * RATIO_EMUs_Points\n const cnstVal1 = 100000 * RATIO_EMUs_Points\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n if (shapAdjst) {\n Object.keys(shapAdjst).forEach(key => {\n const name = shapAdjst[key]['attrs']['name']\n if (name === 'adj') {\n adj = parseInt(shapAdjst[key]['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n } \n else if (name === 'hf') {\n hf = parseInt(shapAdjst[key]['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n }\n })\n }\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n const swd2 = wd2 * hf / cnstVal1\n const dx1 = swd2 * Math.cos(0.5235987756)\n const x1 = hc - dx1\n const x2 = hc + dx1\n const y2 = vc + hd4\n const iwd2 = swd2 * a / maxAdj\n const ihd2 = hd2 * a / maxAdj\n const sdx2 = iwd2 / 2\n const sx1 = hc - iwd2\n const sx2 = hc - sdx2\n const sx3 = hc + sdx2\n const sx4 = hc + iwd2\n const sdy1 = ihd2 * Math.sin(1.0471975512)\n const sy1 = vc - sdy1\n const sy2 = vc + sdy1\n pathData = `M ${x1},${hd4} L ${sx2},${sy1} L ${hc},0 L ${sx3},${sy1} L ${x2},${hd4} L ${sx4},${vc} L ${x2},${y2} L ${sx3},${sy2} L ${hc},${h} L ${sx2},${sy2} L ${x1},${y2} L ${sx1},${vc} z`\n }\n break\n case 'star7':\n {\n const hc = w / 2,\n vc = h / 2,\n wd2 = w / 2,\n hd2 = h / 2\n let adj = 34601 * RATIO_EMUs_Points\n let hf = 102572 * RATIO_EMUs_Points\n let vf = 105210 * RATIO_EMUs_Points\n const maxAdj = 50000 * RATIO_EMUs_Points\n const cnstVal1 = 100000 * RATIO_EMUs_Points\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n if (shapAdjst) {\n Object.keys(shapAdjst).forEach(key => {\n const name = shapAdjst[key]['attrs']['name']\n if (name === 'adj') {\n adj = parseInt(shapAdjst[key]['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n } \n else if (name === 'hf') {\n hf = parseInt(shapAdjst[key]['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n } \n else if (name === 'vf') {\n vf = parseInt(shapAdjst[key]['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n }\n })\n }\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n const swd2 = wd2 * hf / cnstVal1\n const shd2 = hd2 * vf / cnstVal1\n const svc = vc * vf / cnstVal1\n const dx1 = swd2 * 97493 / 100000\n const dx2 = swd2 * 78183 / 100000\n const dx3 = swd2 * 43388 / 100000\n const dy1 = shd2 * 62349 / 100000\n const dy2 = shd2 * 22252 / 100000\n const dy3 = shd2 * 90097 / 100000\n const x1 = hc - dx1\n const x2 = hc - dx2\n const x3 = hc - dx3\n const x4 = hc + dx3\n const x5 = hc + dx2\n const x6 = hc + dx1\n const y1 = svc - dy1\n const y2 = svc + dy2\n const y3 = svc + dy3\n const iwd2 = swd2 * a / maxAdj\n const ihd2 = shd2 * a / maxAdj\n const sdx1 = iwd2 * 97493 / 100000\n const sdx2 = iwd2 * 78183 / 100000\n const sdx3 = iwd2 * 43388 / 100000\n const sx1 = hc - sdx1\n const sx2 = hc - sdx2\n const sx3 = hc - sdx3\n const sx4 = hc + sdx3\n const sx5 = hc + sdx2\n const sx6 = hc + sdx1\n const sdy1 = ihd2 * 90097 / 100000\n const sdy2 = ihd2 * 22252 / 100000\n const sdy3 = ihd2 * 62349 / 100000\n const sy1 = svc - sdy1\n const sy2 = svc - sdy2\n const sy3 = svc + sdy3\n const sy4 = svc + ihd2\n pathData = `M ${x1},${y2} L ${sx1},${sy2} L ${x2},${y1} L ${sx3},${sy1} L ${hc},0 L ${sx4},${sy1} L ${x5},${y1} L ${sx6},${sy2} L ${x6},${y2} L ${sx5},${sy3} L ${x4},${y3} L ${hc},${sy4} L ${x3},${y3} L ${sx2},${sy3} z`\n }\n break\n case 'star8':\n {\n const hc = w / 2,\n vc = h / 2,\n wd2 = w / 2,\n hd2 = h / 2\n let adj = 37500 * RATIO_EMUs_Points\n const maxAdj = 50000 * RATIO_EMUs_Points\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n if (shapAdjst) {\n const name = shapAdjst['attrs']['name']\n if (name === 'adj') {\n adj = parseInt(shapAdjst['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n }\n }\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n const dx1 = wd2 * Math.cos(0.7853981634)\n const x1 = hc - dx1\n const x2 = hc + dx1\n const dy1 = hd2 * Math.sin(0.7853981634)\n const y1 = vc - dy1\n const y2 = vc + dy1\n const iwd2 = wd2 * a / maxAdj\n const ihd2 = hd2 * a / maxAdj\n const sdx1 = iwd2 * 92388 / 100000\n const sdx2 = iwd2 * 38268 / 100000\n const sdy1 = ihd2 * 92388 / 100000\n const sdy2 = ihd2 * 38268 / 100000\n const sx1 = hc - sdx1\n const sx2 = hc - sdx2\n const sx3 = hc + sdx2\n const sx4 = hc + sdx1\n const sy1 = vc - sdy1\n const sy2 = vc - sdy2\n const sy3 = vc + sdy2\n const sy4 = vc + sdy1\n pathData = `M 0,${vc} L ${sx1},${sy2} L ${x1},${y1} L ${sx2},${sy1} L ${hc},0 L ${sx3},${sy1} L ${x2},${y1} L ${sx4},${sy2} L ${w},${vc} L ${sx4},${sy3} L ${x2},${y2} L ${sx3},${sy4} L ${hc},${h} L ${sx2},${sy4} L ${x1},${y2} L ${sx1},${sy3} z`\n }\n break\n case 'star10':\n {\n const hc = w / 2,\n vc = h / 2,\n wd2 = w / 2,\n hd2 = h / 2\n let adj = 42533 * RATIO_EMUs_Points\n let hf = 105146 * RATIO_EMUs_Points\n const maxAdj = 50000 * RATIO_EMUs_Points\n const cnstVal1 = 100000 * RATIO_EMUs_Points\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n if (shapAdjst) {\n Object.keys(shapAdjst).forEach(key => {\n const name = shapAdjst[key]['attrs']['name']\n if (name === 'adj') {\n adj = parseInt(shapAdjst[key]['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n } \n else if (name === 'hf') {\n hf = parseInt(shapAdjst[key]['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n }\n })\n }\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n const swd2 = wd2 * hf / cnstVal1\n const dx1 = swd2 * 95106 / 100000\n const dx2 = swd2 * 58779 / 100000\n const x1 = hc - dx1\n const x2 = hc - dx2\n const x3 = hc + dx2\n const x4 = hc + dx1\n const dy1 = hd2 * 80902 / 100000\n const dy2 = hd2 * 30902 / 100000\n const y1 = vc - dy1\n const y2 = vc - dy2\n const y3 = vc + dy2\n const y4 = vc + dy1\n const iwd2 = swd2 * a / maxAdj\n const ihd2 = hd2 * a / maxAdj\n const sdx1 = iwd2 * 80902 / 100000\n const sdx2 = iwd2 * 30902 / 100000\n const sdy1 = ihd2 * 95106 / 100000\n const sdy2 = ihd2 * 58779 / 100000\n const sx1 = hc - iwd2\n const sx2 = hc - sdx1\n const sx3 = hc - sdx2\n const sx4 = hc + sdx2\n const sx5 = hc + sdx1\n const sx6 = hc + iwd2\n const sy1 = vc - sdy1\n const sy2 = vc - sdy2\n const sy3 = vc + sdy2\n const sy4 = vc + sdy1\n pathData = `M ${x1},${y2} L ${sx2},${sy2} L ${x2},${y1} L ${sx3},${sy1} L ${hc},0 L ${sx4},${sy1} L ${x3},${y1} L ${sx5},${sy2} L ${x4},${y2} L ${sx6},${vc} L ${x4},${y3} L ${sx5},${sy3} L ${x3},${y4} L ${sx4},${sy4} L ${hc},${h} L ${sx3},${sy4} L ${x2},${y4} L ${sx2},${sy3} L ${x1},${y3} L ${sx1},${vc} z`\n }\n break\n case 'star12':\n {\n const hc = w / 2,\n vc = h / 2,\n wd2 = w / 2,\n hd2 = h / 2,\n hd4 = h / 4,\n wd4 = w / 4\n let adj = 37500 * RATIO_EMUs_Points\n const maxAdj = 50000 * RATIO_EMUs_Points\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n if (shapAdjst) {\n const name = shapAdjst['attrs']['name']\n if (name === 'adj') {\n adj = parseInt(shapAdjst['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n }\n }\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n const dx1 = wd2 * Math.cos(0.5235987756)\n const dy1 = hd2 * Math.sin(1.0471975512)\n const x1 = hc - dx1\n const x3 = w * 3 / 4\n const x4 = hc + dx1\n const y1 = vc - dy1\n const y3 = h * 3 / 4\n const y4 = vc + dy1\n const iwd2 = wd2 * a / maxAdj\n const ihd2 = hd2 * a / maxAdj\n const sdx1 = iwd2 * Math.cos(0.2617993878)\n const sdx2 = iwd2 * Math.cos(0.7853981634)\n const sdx3 = iwd2 * Math.cos(1.308996939)\n const sdy1 = ihd2 * Math.sin(1.308996939)\n const sdy2 = ihd2 * Math.sin(0.7853981634)\n const sdy3 = ihd2 * Math.sin(0.2617993878)\n const sx1 = hc - sdx1\n const sx2 = hc - sdx2\n const sx3 = hc - sdx3\n const sx4 = hc + sdx3\n const sx5 = hc + sdx2\n const sx6 = hc + sdx1\n const sy1 = vc - sdy1\n const sy2 = vc - sdy2\n const sy3 = vc - sdy3\n const sy4 = vc + sdy3\n const sy5 = vc + sdy2\n const sy6 = vc + sdy1\n pathData = `M 0,${vc} L ${sx1},${sy3} L ${x1},${hd4} L ${sx2},${sy2} L ${wd4},${y1} L ${sx3},${sy1} L ${hc},0 L ${sx4},${sy1} L ${x3},${y1} L ${sx5},${sy2} L ${x4},${hd4} L ${sx6},${sy3} L ${w},${vc} L ${sx6},${sy4} L ${x4},${y3} L ${sx5},${sy5} L ${x3},${y4} L ${sx4},${sy6} L ${hc},${h} L ${sx3},${sy6} L ${wd4},${y4} L ${sx2},${sy5} L ${x1},${y3} L ${sx1},${sy4} z`\n }\n break\n case 'star16':\n {\n const hc = w / 2,\n vc = h / 2,\n wd2 = w / 2,\n hd2 = h / 2\n let adj = 37500 * RATIO_EMUs_Points\n const maxAdj = 50000 * RATIO_EMUs_Points\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n if (shapAdjst) {\n const name = shapAdjst['attrs']['name']\n if (name === 'adj') {\n adj = parseInt(shapAdjst['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n }\n }\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n const dx1 = wd2 * 92388 / 100000\n const dx2 = wd2 * 70711 / 100000\n const dx3 = wd2 * 38268 / 100000\n const dy1 = hd2 * 92388 / 100000\n const dy2 = hd2 * 70711 / 100000\n const dy3 = hd2 * 38268 / 100000\n const x1 = hc - dx1\n const x2 = hc - dx2\n const x3 = hc - dx3\n const x4 = hc + dx3\n const x5 = hc + dx2\n const x6 = hc + dx1\n const y1 = vc - dy1\n const y2 = vc - dy2\n const y3 = vc - dy3\n const y4 = vc + dy3\n const y5 = vc + dy2\n const y6 = vc + dy1\n const iwd2 = wd2 * a / maxAdj\n const ihd2 = hd2 * a / maxAdj\n const sdx1 = iwd2 * 98079 / 100000\n const sdx2 = iwd2 * 83147 / 100000\n const sdx3 = iwd2 * 55557 / 100000\n const sdx4 = iwd2 * 19509 / 100000\n const sdy1 = ihd2 * 98079 / 100000\n const sdy2 = ihd2 * 83147 / 100000\n const sdy3 = ihd2 * 55557 / 100000\n const sdy4 = ihd2 * 19509 / 100000\n const sx1 = hc - sdx1\n const sx2 = hc - sdx2\n const sx3 = hc - sdx3\n const sx4 = hc - sdx4\n const sx5 = hc + sdx4\n const sx6 = hc + sdx3\n const sx7 = hc + sdx2\n const sx8 = hc + sdx1\n const sy1 = vc - sdy1\n const sy2 = vc - sdy2\n const sy3 = vc - sdy3\n const sy4 = vc - sdy4\n const sy5 = vc + sdy4\n const sy6 = vc + sdy3\n const sy7 = vc + sdy2\n const sy8 = vc + sdy1\n pathData = `M 0,${vc} L ${sx1},${sy4} L ${x1},${y3} L ${sx2},${sy3} L ${x2},${y2} L ${sx3},${sy2} L ${x3},${y1} L ${sx4},${sy1} L ${hc},0 L ${sx5},${sy1} L ${x4},${y1} L ${sx6},${sy2} L ${x5},${y2} L ${sx7},${sy3} L ${x6},${y3} L ${sx8},${sy4} L ${w},${vc} L ${sx8},${sy5} L ${x6},${y4} L ${sx7},${sy6} L ${x5},${y5} L ${sx6},${sy7} L ${x4},${y6} L ${sx5},${sy8} L ${hc},${h} L ${sx4},${sy8} L ${x3},${y6} L ${sx3},${sy7} L ${x2},${y5} L ${sx2},${sy6} L ${x1},${y4} L ${sx1},${sy5} z`\n }\n break\n case 'star24':\n {\n const hc = w / 2,\n vc = h / 2,\n wd2 = w / 2,\n hd2 = h / 2,\n hd4 = h / 4,\n wd4 = w / 4\n let adj = 37500 * RATIO_EMUs_Points\n const maxAdj = 50000 * RATIO_EMUs_Points\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n if (shapAdjst) {\n const name = shapAdjst['attrs']['name']\n if (name === 'adj') {\n adj = parseInt(shapAdjst['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n }\n }\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n const dx1 = wd2 * Math.cos(0.2617993878)\n const dx2 = wd2 * Math.cos(0.5235987756)\n const dx3 = wd2 * Math.cos(0.7853981634)\n const dx4 = wd4\n const dx5 = wd2 * Math.cos(1.308996939)\n const dy1 = hd2 * Math.sin(1.308996939)\n const dy2 = hd2 * Math.sin(1.0471975512)\n const dy3 = hd2 * Math.sin(0.7853981634)\n const dy4 = hd4\n const dy5 = hd2 * Math.sin(0.2617993878)\n const x1 = hc - dx1\n const x2 = hc - dx2\n const x3 = hc - dx3\n const x4 = hc - dx4\n const x5 = hc - dx5\n const x6 = hc + dx5\n const x7 = hc + dx4\n const x8 = hc + dx3\n const x9 = hc + dx2\n const x10 = hc + dx1\n const y1 = vc - dy1\n const y2 = vc - dy2\n const y3 = vc - dy3\n const y4 = vc - dy4\n const y5 = vc - dy5\n const y6 = vc + dy5\n const y7 = vc + dy4\n const y8 = vc + dy3\n const y9 = vc + dy2\n const y10 = vc + dy1\n const iwd2 = wd2 * a / maxAdj\n const ihd2 = hd2 * a / maxAdj\n const sdx1 = iwd2 * 99144 / 100000\n const sdx2 = iwd2 * 92388 / 100000\n const sdx3 = iwd2 * 79335 / 100000\n const sdx4 = iwd2 * 60876 / 100000\n const sdx5 = iwd2 * 38268 / 100000\n const sdx6 = iwd2 * 13053 / 100000\n const sdy1 = ihd2 * 99144 / 100000\n const sdy2 = ihd2 * 92388 / 100000\n const sdy3 = ihd2 * 79335 / 100000\n const sdy4 = ihd2 * 60876 / 100000\n const sdy5 = ihd2 * 38268 / 100000\n const sdy6 = ihd2 * 13053 / 100000\n const sx1 = hc - sdx1\n const sx2 = hc - sdx2\n const sx3 = hc - sdx3\n const sx4 = hc - sdx4\n const sx5 = hc - sdx5\n const sx6 = hc - sdx6\n const sx7 = hc + sdx6\n const sx8 = hc + sdx5\n const sx9 = hc + sdx4\n const sx10 = hc + sdx3\n const sx11 = hc + sdx2\n const sx12 = hc + sdx1\n const sy1 = vc - sdy1\n const sy2 = vc - sdy2\n const sy3 = vc - sdy3\n const sy4 = vc - sdy4\n const sy5 = vc - sdy5\n const sy6 = vc - sdy6\n const sy7 = vc + sdy6\n const sy8 = vc + sdy5\n const sy9 = vc + sdy4\n const sy10 = vc + sdy3\n const sy11 = vc + sdy2\n const sy12 = vc + sdy1\n pathData = `M 0,${vc} L ${sx1},${sy6} L ${x1},${y5} L ${sx2},${sy5} L ${x2},${y4} L ${sx3},${sy4} L ${x3},${y3} L ${sx4},${sy3} L ${x4},${y2} L ${sx5},${sy2} L ${x5},${y1} L ${sx6},${sy1} L ${hc},0 L ${sx7},${sy1} L ${x6},${y1} L ${sx8},${sy2} L ${x7},${y2} L ${sx9},${sy3} L ${x8},${y3} L ${sx10},${sy4} L ${x9},${y4} L ${sx11},${sy5} L ${x10},${y5} L ${sx12},${sy6} L ${w},${vc} L ${sx12},${sy7} L ${x10},${y6} L ${sx11},${sy8} L ${x9},${y7} L ${sx10},${sy9} L ${x8},${y8} L ${sx9},${sy10} L ${x7},${y9} L ${sx8},${sy11} L ${x6},${y10} L ${sx7},${sy12} L ${hc},${h} L ${sx6},${sy12} L ${x5},${y10} L ${sx5},${sy11} L ${x4},${y9} L ${sx4},${sy10} L ${x3},${y8} L ${sx3},${sy9} L ${x2},${y7} L ${sx2},${sy8} L ${x1},${y6} L ${sx1},${sy7} z`\n }\n break\n case 'star32':\n {\n const hc = w / 2,\n vc = h / 2,\n wd2 = w / 2,\n hd2 = h / 2\n let adj = 37500 * RATIO_EMUs_Points\n const maxAdj = 50000 * RATIO_EMUs_Points\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n if (shapAdjst) {\n const name = shapAdjst['attrs']['name']\n if (name === 'adj') {\n adj = parseInt(shapAdjst['attrs']['fmla'].substring(4)) * RATIO_EMUs_Points\n }\n }\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n const dx1 = wd2 * 98079 / 100000\n const dx2 = wd2 * 92388 / 100000\n const dx3 = wd2 * 83147 / 100000\n const dx4 = wd2 * Math.cos(0.7853981634)\n const dx5 = wd2 * 55557 / 100000\n const dx6 = wd2 * 38268 / 100000\n const dx7 = wd2 * 19509 / 100000\n const dy1 = hd2 * 98079 / 100000\n const dy2 = hd2 * 92388 / 100000\n const dy3 = hd2 * 83147 / 100000\n const dy4 = hd2 * Math.sin(0.7853981634)\n const dy5 = hd2 * 55557 / 100000\n const dy6 = hd2 * 38268 / 100000\n const dy7 = hd2 * 19509 / 100000\n const x1 = hc - dx1\n const x2 = hc - dx2\n const x3 = hc - dx3\n const x4 = hc - dx4\n const x5 = hc - dx5\n const x6 = hc - dx6\n const x7 = hc - dx7\n const x8 = hc + dx7\n const x9 = hc + dx6\n const x10 = hc + dx5\n const x11 = hc + dx4\n const x12 = hc + dx3\n const x13 = hc + dx2\n const x14 = hc + dx1\n const y1 = vc - dy1\n const y2 = vc - dy2\n const y3 = vc - dy3\n const y4 = vc - dy4\n const y5 = vc - dy5\n const y6 = vc - dy6\n const y7 = vc - dy7\n const y8 = vc + dy7\n const y9 = vc + dy6\n const y10 = vc + dy5\n const y11 = vc + dy4\n const y12 = vc + dy3\n const y13 = vc + dy2\n const y14 = vc + dy1\n const iwd2 = wd2 * a / maxAdj\n const ihd2 = hd2 * a / maxAdj\n const sdx1 = iwd2 * 99518 / 100000\n const sdx2 = iwd2 * 95694 / 100000\n const sdx3 = iwd2 * 88192 / 100000\n const sdx4 = iwd2 * 77301 / 100000\n const sdx5 = iwd2 * 63439 / 100000\n const sdx6 = iwd2 * 47140 / 100000\n const sdx7 = iwd2 * 29028 / 100000\n const sdx8 = iwd2 * 9802 / 100000\n const sdy1 = ihd2 * 99518 / 100000\n const sdy2 = ihd2 * 95694 / 100000\n const sdy3 = ihd2 * 88192 / 100000\n const sdy4 = ihd2 * 77301 / 100000\n const sdy5 = ihd2 * 63439 / 100000\n const sdy6 = ihd2 * 47140 / 100000\n const sdy7 = ihd2 * 29028 / 100000\n const sdy8 = ihd2 * 9802 / 100000\n const sx1 = hc - sdx1\n const sx2 = hc - sdx2\n const sx3 = hc - sdx3\n const sx4 = hc - sdx4\n const sx5 = hc - sdx5\n const sx6 = hc - sdx6\n const sx7 = hc - sdx7\n const sx8 = hc - sdx8\n const sx9 = hc + sdx8\n const sx10 = hc + sdx7\n const sx11 = hc + sdx6\n const sx12 = hc + sdx5\n const sx13 = hc + sdx4\n const sx14 = hc + sdx3\n const sx15 = hc + sdx2\n const sx16 = hc + sdx1\n const sy1 = vc - sdy1\n const sy2 = vc - sdy2\n const sy3 = vc - sdy3\n const sy4 = vc - sdy4\n const sy5 = vc - sdy5\n const sy6 = vc - sdy6\n const sy7 = vc - sdy7\n const sy8 = vc - sdy8\n const sy9 = vc + sdy8\n const sy10 = vc + sdy7\n const sy11 = vc + sdy6\n const sy12 = vc + sdy5\n const sy13 = vc + sdy4\n const sy14 = vc + sdy3\n const sy15 = vc + sdy2\n const sy16 = vc + sdy1\n pathData = `M 0,${vc} L ${sx1},${sy8} L ${x1},${y7} L ${sx2},${sy7} L ${x2},${y6} L ${sx3},${sy6} L ${x3},${y5} L ${sx4},${sy5} L ${x4},${y4} L ${sx5},${sy4} L ${x5},${y3} L ${sx6},${sy3} L ${x6},${y2} L ${sx7},${sy2} L ${x7},${y1} L ${sx8},${sy1} L ${hc},0 L ${sx9},${sy1} L ${x8},${y1} L ${sx10},${sy2} L ${x9},${y2} L ${sx11},${sy3} L ${x10},${y3} L ${sx12},${sy4} L ${x11},${y4} L ${sx13},${sy5} L ${x12},${y5} L ${sx14},${sy6} L ${x13},${y6} L ${sx15},${sy7} L ${x14},${y7} L ${sx16},${sy8} L ${w},${vc} L ${sx16},${sy9} L ${x14},${y8} L ${sx15},${sy10} L ${x13},${y9} L ${sx14},${sy11} L ${x12},${y10} L ${sx13},${sy12} L ${x11},${y11} L ${sx12},${sy13} L ${x10},${y12} L ${sx11},${sy14} L ${x9},${y13} L ${sx10},${sy15} L ${x8},${y14} L ${sx9},${sy16} L ${hc},${h} L ${sx8},${sy16} L ${x7},${y14} L ${sx7},${sy15} L ${x6},${y13} L ${sx6},${sy14} L ${x5},${y12} L ${sx5},${sy13} L ${x4},${y11} L ${sx4},${sy12} L ${x3},${y10} L ${sx3},${sy11} L ${x2},${y9} L ${sx2},${sy10} L ${x1},${y8} L ${sx1},${sy9} z`\n }\n break\n case 'pie':\n case 'pieWedge':\n case 'arc':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1, adj2, H, isClose\n\n if (shapType === 'pie') {\n adj1 = 0\n adj2 = 270\n H = h\n isClose = true\n } \n else if (shapType === 'pieWedge') {\n adj1 = 180\n adj2 = 270\n H = 2 * h\n isClose = true\n } \n else if (shapType === 'arc') {\n adj1 = 270\n adj2 = 0\n H = h\n isClose = false\n }\n\n if (shapAdjst) {\n const shapAdjstAry = Array.isArray(shapAdjst) ? shapAdjst : [shapAdjst]\n for (const adj of shapAdjstAry) {\n const name = getTextByPathList(adj, ['attrs', 'name'])\n const fmla = getTextByPathList(adj, ['attrs', 'fmla'])\n if (!name || !fmla) continue\n\n if (name === 'adj1') {\n adj1 = parseInt(fmla.substring(4)) / 60000\n }\n else if (name === 'adj2') {\n adj2 = parseInt(fmla.substring(4)) / 60000\n }\n }\n }\n\n pathData = shapePie(H, w, adj1, adj2, isClose)\n }\n break\n case 'chord':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let sAdj1_val = 45\n let sAdj2_val = 270\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n const sAdj1 = getTextByPathList(adj, ['attrs', 'fmla'])\n sAdj1_val = parseInt(sAdj1.substring(4)) / 60000\n } \n else if (sAdj_name === 'adj2') {\n const sAdj2 = getTextByPathList(adj, ['attrs', 'fmla'])\n sAdj2_val = parseInt(sAdj2.substring(4)) / 60000\n }\n }\n }\n const hR = h / 2\n const wR = w / 2\n pathData = shapeArc(wR, hR, wR, hR, sAdj1_val, sAdj2_val, true)\n }\n break\n case 'frame':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj1 = 12500 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n if (shapAdjst) {\n adj1 = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal1) ? cnstVal1 : adj1\n const x1 = Math.min(w, h) * a1 / cnstVal2\n const x4 = w - x1\n const y4 = h - x1\n pathData = `M 0,0 L ${w},0 L ${w},${h} L 0,${h} z M ${x1},${x1} L ${x1},${y4} L ${x4},${y4} L ${x4},${x1} z`\n }\n break\n case 'donut':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj = 25000 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n const a = (adj < 0) ? 0 : (adj > cnstVal1) ? cnstVal1 : adj\n const dr = Math.min(w, h) * a / cnstVal2\n const iwd2 = w / 2 - dr\n const ihd2 = h / 2 - dr\n const outerPath = `M ${w / 2 - w / 2},${h / 2} A ${w / 2},${h / 2} 0 1,0 ${w / 2 + w / 2},${h / 2} A ${w / 2},${h / 2} 0 1,0 ${w / 2 - w / 2},${h / 2} Z`\n const innerPath = `M ${w / 2 + iwd2},${h / 2} A ${iwd2},${ihd2} 0 1,0 ${w / 2 - iwd2},${h / 2} A ${iwd2},${ihd2} 0 1,0 ${w / 2 + iwd2},${h / 2} Z`\n pathData = `${outerPath} ${innerPath}`\n }\n break\n case 'noSmoking':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj = 18750 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n const a = (adj < 0) ? 0 : (adj > cnstVal1) ? cnstVal1 : adj\n const dr = Math.min(w, h) * a / cnstVal2\n const iwd2 = w / 2 - dr\n const ihd2 = h / 2 - dr\n const ang = Math.atan(h / w)\n const ct = ihd2 * Math.cos(ang)\n const st = iwd2 * Math.sin(ang)\n const m = Math.sqrt(ct * ct + st * st)\n const n = iwd2 * ihd2 / m\n const drd2 = dr / 2\n const dang = Math.atan(drd2 / n)\n const swAng = -Math.PI + (dang * 2)\n const stAng1 = ang - dang\n const stAng2 = stAng1 - Math.PI\n const ct1 = ihd2 * Math.cos(stAng1)\n const st1 = iwd2 * Math.sin(stAng1)\n const m1 = Math.sqrt(ct1 * ct1 + st1 * st1)\n const n1 = iwd2 * ihd2 / m1\n const dx1 = n1 * Math.cos(stAng1)\n const dy1 = n1 * Math.sin(stAng1)\n const x1 = w / 2 + dx1\n const y1 = h / 2 + dy1\n const x2 = w / 2 - dx1\n const y2 = h / 2 - dy1\n const stAng1deg = stAng1 * 180 / Math.PI\n const stAng2deg = stAng2 * 180 / Math.PI\n const swAng2deg = swAng * 180 / Math.PI\n const outerCircle = `M ${w / 2 - w / 2},${h / 2} A ${w / 2},${h / 2} 0 1,0 ${w / 2 + w / 2},${h / 2} A ${w / 2},${h / 2} 0 1,0 ${w / 2 - w / 2},${h / 2} Z`\n const slash1 = `M ${x1},${y1} ${shapeArc(w / 2, h / 2, iwd2, ihd2, stAng1deg, (stAng1deg + swAng2deg), false).replace('M', 'L')} z`\n const slash2 = `M ${x2},${y2} ${shapeArc(w / 2, h / 2, iwd2, ihd2, stAng2deg, (stAng2deg + swAng2deg), false).replace('M', 'L')} z`\n pathData = `${outerCircle} ${slash1} ${slash2}`\n }\n break\n case 'halfFrame':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let sAdj1_val = 3.5\n let sAdj2_val = 3.5\n const cnsVal = 100000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n sAdj1_val = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj2') {\n sAdj2_val = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const minWH = Math.min(w, h)\n const maxAdj2 = (cnsVal * w) / minWH\n const a2 = (sAdj2_val < 0) ? 0 : (sAdj2_val > maxAdj2) ? maxAdj2 : sAdj2_val\n const x1 = (minWH * a2) / cnsVal\n const g2 = h - (h * x1 / w)\n const maxAdj1 = (cnsVal * g2) / minWH\n const a1 = (sAdj1_val < 0) ? 0 : (sAdj1_val > maxAdj1) ? maxAdj1 : sAdj1_val\n const y1 = minWH * a1 / cnsVal\n const x2 = w - (y1 * w / h)\n const y2 = h - (x1 * h / w)\n pathData = `M 0,0 L ${w},0 L ${x2},${y1} L ${x1},${y1} L ${x1},${y2} L 0,${h} z`\n }\n break\n case 'blockArc':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 180\n let adj2 = 0\n let adj3 = 25000 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 60000\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 60000\n } \n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const cd1 = 360\n const stAng = (adj1 < 0) ? 0 : (adj1 > cd1) ? cd1 : adj1\n const istAng = (adj2 < 0) ? 0 : (adj2 > cd1) ? cd1 : adj2\n const a3 = (adj3 < 0) ? 0 : (adj3 > cnstVal1) ? cnstVal1 : adj3\n const sw11 = istAng - stAng\n const sw12 = sw11 + cd1\n const swAng = (sw11 > 0) ? sw11 : sw12\n const iswAng = -swAng\n const endAng = stAng + swAng\n const iendAng = istAng + iswAng\n const stRd = stAng * (Math.PI) / 180\n const istRd = istAng * (Math.PI) / 180\n const wd2 = w / 2\n const hd2 = h / 2\n const hc = w / 2\n const vc = h / 2\n let x1, y1\n if (stAng > 90 && stAng < 270) {\n const wt1 = wd2 * (Math.sin((Math.PI) / 2 - stRd))\n const ht1 = hd2 * (Math.cos((Math.PI) / 2 - stRd))\n const dx1 = wd2 * (Math.cos(Math.atan(ht1 / wt1)))\n const dy1 = hd2 * (Math.sin(Math.atan(ht1 / wt1)))\n x1 = hc - dx1\n y1 = vc - dy1\n } \n else {\n const wt1 = wd2 * (Math.sin(stRd))\n const ht1 = hd2 * (Math.cos(stRd))\n const dx1 = wd2 * (Math.cos(Math.atan(wt1 / ht1)))\n const dy1 = hd2 * (Math.sin(Math.atan(wt1 / ht1)))\n x1 = hc + dx1\n y1 = vc + dy1\n }\n const dr = Math.min(w, h) * a3 / cnstVal2\n const iwd2 = wd2 - dr\n const ihd2 = hd2 - dr\n let x2, y2\n if ((endAng <= 450 && endAng > 270) || ((endAng >= 630 && endAng < 720))) {\n const wt2 = iwd2 * (Math.sin(istRd))\n const ht2 = ihd2 * (Math.cos(istRd))\n const dx2 = iwd2 * (Math.cos(Math.atan(wt2 / ht2)))\n const dy2 = ihd2 * (Math.sin(Math.atan(wt2 / ht2)))\n x2 = hc + dx2\n y2 = vc + dy2\n } \n else {\n const wt2 = iwd2 * (Math.sin((Math.PI) / 2 - istRd))\n const ht2 = ihd2 * (Math.cos((Math.PI) / 2 - istRd))\n const dx2 = iwd2 * (Math.cos(Math.atan(ht2 / wt2)))\n const dy2 = ihd2 * (Math.sin(Math.atan(ht2 / wt2)))\n x2 = hc - dx2\n y2 = vc - dy2\n }\n pathData = `M ${x1},${y1} ${shapeArc(wd2, hd2, wd2, hd2, stAng, endAng, false).replace('M', 'L')} L ${x2},${y2} ${shapeArc(wd2, hd2, iwd2, ihd2, istAng, iendAng, false).replace('M', 'L')} z`\n }\n break\n case 'bracePair':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj = 8333 * RATIO_EMUs_Points\n const cnstVal1 = 25000 * RATIO_EMUs_Points\n const cnstVal2 = 50000 * RATIO_EMUs_Points\n const cnstVal3 = 100000 * RATIO_EMUs_Points\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n const vc = h / 2,\n cd2 = 180,\n cd4 = 90,\n c3d4 = 270\n const a = (adj < 0) ? 0 : (adj > cnstVal1) ? cnstVal1 : adj\n const minWH = Math.min(w, h)\n const x1 = minWH * a / cnstVal3\n const x2 = minWH * a / cnstVal2\n const x3 = w - x2\n const x4 = w - x1\n const y2 = vc - x1\n const y3 = vc + x1\n const y4 = h - x1\n pathData = `M ${x2},${h} ${shapeArc(x2, y4, x1, x1, cd4, cd2, false).replace('M', 'L')} L ${x1},${y3} ${shapeArc(0, y3, x1, x1, 0, (-cd4), false).replace('M', 'L')} ${shapeArc(0, y2, x1, x1, cd4, 0, false).replace('M', 'L')} L ${x1},${x1} ${shapeArc(x2, x1, x1, x1, cd2, c3d4, false).replace('M', 'L')} M ${x3},0 ${shapeArc(x3, x1, x1, x1, c3d4, 360, false).replace('M', 'L')} L ${x4},${y2} ${shapeArc(w, y2, x1, x1, cd2, cd4, false).replace('M', 'L')} ${shapeArc(w, y3, x1, x1, c3d4, cd2, false).replace('M', 'L')} L ${x4},${y4} ${shapeArc(x3, y4, x1, x1, 0, cd4, false).replace('M', 'L')}`\n }\n break\n case 'leftBrace':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 8333 * RATIO_EMUs_Points\n let adj2 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const cd2 = 180,\n cd4 = 90,\n c3d4 = 270\n const a2 = (adj2 < 0) ? 0 : (adj2 > cnstVal2) ? cnstVal2 : adj2\n const minWH = Math.min(w, h)\n const q1 = cnstVal2 - a2\n const q2 = (q1 < a2) ? q1 : a2\n const q3 = q2 / 2\n const maxAdj1 = q3 * h / minWH\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const y1 = minWH * a1 / cnstVal2\n const y3 = h * a2 / cnstVal2\n const y2 = y3 - y1\n const y4 = y3 + y1\n pathData = `M ${w},${h} ${shapeArc(w, h - y1, w / 2, y1, cd4, cd2, false).replace('M', 'L')} L ${w / 2},${y4} ${shapeArc(0, y4, w / 2, y1, 0, (-cd4), false).replace('M', 'L')} ${shapeArc(0, y2, w / 2, y1, cd4, 0, false).replace('M', 'L')} L ${w / 2},${y1} ${shapeArc(w, y1, w / 2, y1, cd2, c3d4, false).replace('M', 'L')}`\n }\n break\n case 'rightBrace':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 8333 * RATIO_EMUs_Points\n let adj2 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const cd = 360,\n cd2 = 180,\n cd4 = 90,\n c3d4 = 270\n const a2 = (adj2 < 0) ? 0 : (adj2 > cnstVal2) ? cnstVal2 : adj2\n const minWH = Math.min(w, h)\n const q1 = cnstVal2 - a2\n const q2 = (q1 < a2) ? q1 : a2\n const q3 = q2 / 2\n const maxAdj1 = q3 * h / minWH\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const y1 = minWH * a1 / cnstVal2\n const y3 = h * a2 / cnstVal2\n const y2 = y3 - y1\n const y4 = h - y1\n pathData = `M 0,0 ${shapeArc(0, y1, w / 2, y1, c3d4, cd, false).replace('M', 'L')} L ${w / 2},${y2} ${shapeArc(w, y2, w / 2, y1, cd2, cd4, false).replace('M', 'L')} ${shapeArc(w, y3 + y1, w / 2, y1, c3d4, cd2, false).replace('M', 'L')} L ${w / 2},${y4} ${shapeArc(0, y4, w / 2, y1, 0, cd4, false).replace('M', 'L')}`\n }\n break\n case 'bracketPair':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj = 16667 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n const cd2 = 180,\n cd4 = 90,\n c3d4 = 270\n const a = (adj < 0) ? 0 : (adj > cnstVal1) ? cnstVal1 : adj\n const x1 = Math.min(w, h) * a / cnstVal2\n const x2 = w - x1\n const y2 = h - x1\n pathData = `${shapeArc(x1, x1, x1, x1, c3d4, cd2, false)} ${shapeArc(x1, y2, x1, x1, cd2, cd4, false).replace('M', 'L')} ${shapeArc(x2, x1, x1, x1, c3d4, (c3d4 + cd4), false)} ${shapeArc(x2, y2, x1, x1, 0, cd4, false).replace('M', 'L')}`\n }\n break\n case 'leftBracket':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj = 8333 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const maxAdj = cnstVal1 * h / Math.min(w, h)\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n const cd2 = 180,\n cd4 = 90,\n c3d4 = 270\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n let y1 = Math.min(w, h) * a / cnstVal2\n if (y1 > w) y1 = w\n const y2 = h - y1\n pathData = `M ${w},${h} ${shapeArc(y1, y2, y1, y1, cd4, cd2, false).replace('M', 'L')} L 0,${y1} ${shapeArc(y1, y1, y1, y1, cd2, c3d4, false).replace('M', 'L')} L ${w},0`\n }\n break\n case 'rightBracket':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj = 8333 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const maxAdj = cnstVal1 * h / Math.min(w, h)\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n const cd = 360,\n cd4 = 90,\n c3d4 = 270\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n const y1 = Math.min(w, h) * a / cnstVal2\n const y2 = h - y1\n const y3 = w - y1\n pathData = `M 0,${h} ${shapeArc(y3, y2, y1, y1, cd4, 0, false).replace('M', 'L')} L ${w},${h / 2} ${shapeArc(y3, y1, y1, y1, cd, c3d4, false).replace('M', 'L')} L 0,0`\n }\n break\n case 'moon':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj = 0.5\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) / 100000\n }\n const hd2 = h / 2\n const cd2 = 180\n const cd4 = 90\n const adj2 = (1 - adj) * w\n pathData = `M ${w},${h} ${shapeArc(w, hd2, w, hd2, cd4, (cd4 + cd2), false).replace('M', 'L')} ${shapeArc(w, hd2, adj2, hd2, (cd4 + cd2), cd4, false).replace('M', 'L')} z`\n }\n break\n case 'corner':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let sAdj1_val = 50000 * RATIO_EMUs_Points\n let sAdj2_val = 50000 * RATIO_EMUs_Points\n const cnsVal = 100000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n sAdj1_val = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj2') {\n sAdj2_val = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const minWH = Math.min(w, h)\n const maxAdj1 = cnsVal * h / minWH\n const maxAdj2 = cnsVal * w / minWH\n const a1 = (sAdj1_val < 0) ? 0 : (sAdj1_val > maxAdj1) ? maxAdj1 : sAdj1_val\n const a2 = (sAdj2_val < 0) ? 0 : (sAdj2_val > maxAdj2) ? maxAdj2 : sAdj2_val\n const x1 = minWH * a2 / cnsVal\n const dy1 = minWH * a1 / cnsVal\n const y1 = h - dy1\n pathData = `M 0,0 L ${x1},0 L ${x1},${y1} L ${w},${y1} L ${w},${h} L 0,${h} z`\n }\n break\n case 'diagStripe':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let sAdj1_val = 50000 * RATIO_EMUs_Points\n const cnsVal = 100000 * RATIO_EMUs_Points\n if (shapAdjst) {\n sAdj1_val = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n const a1 = (sAdj1_val < 0) ? 0 : (sAdj1_val > cnsVal) ? cnsVal : sAdj1_val\n const x2 = w * a1 / cnsVal\n const y2 = h * a1 / cnsVal\n pathData = `M 0,${y2} L ${x2},0 L ${w},0 L 0,${h} z`\n }\n break\n case 'gear6':\n case 'gear9':\n pathData = shapeGear(w, h / 3.5, parseInt(shapType.substring(4)))\n break\n case 'bentConnector3':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let shapAdjst_val = 0.5\n if (shapAdjst) {\n shapAdjst_val = parseInt(shapAdjst.substring(4)) / 100000\n }\n pathData = `M 0 0 L ${shapAdjst_val * w} 0 L ${shapAdjst_val * w} ${h} L ${w} ${h}`\n }\n break\n case 'plus':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj1 = 0.25\n if (shapAdjst) {\n adj1 = parseInt(shapAdjst.substring(4)) / 100000\n }\n const adj2 = (1 - adj1)\n pathData = `M ${adj1 * w} 0 L ${adj1 * w} ${adj1 * h} L 0 ${adj1 * h} L 0 ${adj2 * h} L ${adj1 * w} ${adj2 * h} L ${adj1 * w} ${h} L ${adj2 * w} ${h} L ${adj2 * w} ${adj2 * h} L ${w} ${adj2 * h} L ${w} ${adj1 * h} L ${adj2 * w} ${adj1 * h} L ${adj2 * w} 0 Z`\n }\n break\n case 'teardrop':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj1 = 100000 * RATIO_EMUs_Points\n const cnsVal1 = adj1\n const cnsVal2 = 200000 * RATIO_EMUs_Points\n if (shapAdjst) {\n adj1 = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnsVal2) ? cnsVal2 : adj1\n const r2 = Math.sqrt(2)\n const tw = r2 * (w / 2)\n const th = r2 * (h / 2)\n const sw = (tw * a1) / cnsVal1\n const sh = (th * a1) / cnsVal1\n const rd45 = (45 * (Math.PI) / 180)\n const dx1 = sw * (Math.cos(rd45))\n const dy1 = sh * (Math.cos(rd45))\n const x1 = (w / 2) + dx1\n const y1 = (h / 2) - dy1\n const x2 = ((w / 2) + x1) / 2\n const y2 = ((h / 2) + y1) / 2\n pathData = `${shapeArc(w / 2, h / 2, w / 2, h / 2, 180, 270, false)} Q ${x2},0 ${x1},${y1} Q ${w},${y2} ${w},${h / 2} ${shapeArc(w / 2, h / 2, w / 2, h / 2, 0, 90, false).replace('M', 'L')} ${shapeArc(w / 2, h / 2, w / 2, h / 2, 90, 180, false).replace('M', 'L')} z`\n }\n break\n case 'plaque':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj1 = 16667 * RATIO_EMUs_Points\n const cnsVal1 = 50000 * RATIO_EMUs_Points\n const cnsVal2 = 100000 * RATIO_EMUs_Points\n if (shapAdjst) {\n adj1 = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnsVal1) ? cnsVal1 : adj1\n const x1 = a1 * (Math.min(w, h)) / cnsVal2\n const x2 = w - x1\n const y2 = h - x1\n pathData = `M 0,${x1} ${shapeArc(0, 0, x1, x1, 90, 0, false).replace('M', 'L')} L ${x2},0 ${shapeArc(w, 0, x1, x1, 180, 90, false).replace('M', 'L')} L ${w},${y2} ${shapeArc(w, h, x1, x1, 270, 180, false).replace('M', 'L')} L ${x1},${h} ${shapeArc(0, h, x1, x1, 0, -90, false).replace('M', 'L')} z`\n }\n break\n case 'sun':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n const refr = RATIO_EMUs_Points\n let adj1 = 25000 * refr\n const cnstVal1 = 12500 * refr\n const cnstVal2 = 46875 * refr\n if (shapAdjst) {\n adj1 = parseInt(shapAdjst.substring(4)) * refr\n }\n const a1 = (adj1 < cnstVal1) ? cnstVal1 : (adj1 > cnstVal2) ? cnstVal2 : adj1\n const cnstVa3 = 50000 * refr\n const cnstVa4 = 100000 * refr\n const g0 = cnstVa3 - a1\n const g1 = g0 * 30274 / 32768\n const g2 = g0 * 12540 / 32768\n const g5 = cnstVa3 - g1\n const g6 = cnstVa3 - g2\n const g10 = g5 * 3 / 4\n const g11 = g6 * 3 / 4\n const g12 = g10 + 3662 * refr\n const g13 = g11 + 36620 * refr\n const g14 = g11 + 12500 * refr\n const g15 = cnstVa4 - g10\n const g16 = cnstVa4 - g12\n const g17 = cnstVa4 - g13\n const g18 = cnstVa4 - g14\n const ox1 = w * 18436 / 21600\n const oy1 = h * 3163 / 21600\n const ox2 = w * 3163 / 21600\n const oy2 = h * 18436 / 21600\n const x10 = w * g10 / cnstVa4\n const x12 = w * g12 / cnstVa4\n const x13 = w * g13 / cnstVa4\n const x14 = w * g14 / cnstVa4\n const x15 = w * g15 / cnstVa4\n const x16 = w * g16 / cnstVa4\n const x17 = w * g17 / cnstVa4\n const x18 = w * g18 / cnstVa4\n const x19 = w * a1 / cnstVa4\n const wR = w * g0 / cnstVa4\n const hR = h * g0 / cnstVa4\n const y10 = h * g10 / cnstVa4\n const y12 = h * g12 / cnstVa4\n const y13 = h * g13 / cnstVa4\n const y14 = h * g14 / cnstVa4\n const y15 = h * g15 / cnstVa4\n const y16 = h * g16 / cnstVa4\n const y17 = h * g17 / cnstVa4\n const y18 = h * g18 / cnstVa4\n pathData = `M ${w},${h / 2} L ${x15},${y18} L ${x15},${y14} z M ${ox1},${oy1} L ${x16},${y17} L ${x13},${y12} z M ${w / 2},0 L ${x18},${y10} L ${x14},${y10} z M ${ox2},${oy1} L ${x17},${y12} L ${x12},${y17} z M 0,${h / 2} L ${x10},${y14} L ${x10},${y18} z M ${ox2},${oy2} L ${x12},${y13} L ${x17},${y16} z M ${w / 2},${h} L ${x14},${y15} L ${x18},${y15} z M ${ox1},${oy2} L ${x13},${y16} L ${x16},${y13} z M ${x19},${h / 2} ${shapeArc(w / 2, h / 2, wR, hR, 180, 540, false).replace('M', 'L')} z`\n }\n break\n case 'heart':\n {\n const dx1 = w * 49 / 48\n const dx2 = w * 10 / 48\n const x1 = w / 2 - dx1\n const x2 = w / 2 - dx2\n const x3 = w / 2 + dx2\n const x4 = w / 2 + dx1\n const y1 = -h / 3\n pathData = `M ${w / 2},${h / 4} C ${x3},${y1} ${x4},${h / 4} ${w / 2},${h} C ${x1},${h / 4} ${x2},${y1} ${w / 2},${h / 4} z`\n }\n break\n case 'lightningBolt':\n {\n const x1 = w * 5022 / 21600,\n x2 = w * 11050 / 21600,\n x3 = w * 8472 / 21600,\n x5 = w * 10012 / 21600,\n x6 = w * 14767 / 21600,\n x7 = w * 12222 / 21600,\n x8 = w * 12860 / 21600,\n x10 = w * 7602 / 21600,\n x11 = w * 16577 / 21600,\n y1 = h * 3890 / 21600,\n y2 = h * 6080 / 21600,\n y3 = h * 6797 / 21600,\n y5 = h * 12877 / 21600,\n y6 = h * 9705 / 21600,\n y7 = h * 12007 / 21600,\n y8 = h * 13987 / 21600,\n y9 = h * 8382 / 21600,\n y11 = h * 14915 / 21600\n pathData = `M ${x3},0 L ${x8},${y2} L ${x2},${y3} L ${x11},${y7} L ${x6},${y5} L ${w},${h} L ${x5},${y11} L ${x7},${y8} L ${x1},${y6} L ${x10},${y9} L 0,${y1} z`\n }\n break\n case 'cube':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n const refr = RATIO_EMUs_Points\n let adj = 25000 * refr\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * refr\n }\n const cnstVal2 = 100000 * refr\n const ss = Math.min(w, h)\n const a = (adj < 0) ? 0 : (adj > cnstVal2) ? cnstVal2 : adj\n const y1 = ss * a / cnstVal2\n const y4 = h - y1\n const x4 = w - y1\n pathData = `M 0,${y1} L ${y1},0 L ${w},0 L ${w},${y4} L ${x4},${h} L 0,${h} z M 0,${y1} L ${x4},${y1} M ${x4},${y1} L ${w},0 M ${x4},${y1} L ${x4},${h}`\n }\n break\n case 'bevel':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n const refr = RATIO_EMUs_Points\n let adj = 12500 * refr\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * refr\n }\n const cnstVal1 = 50000 * refr\n const cnstVal2 = 100000 * refr\n const ss = Math.min(w, h)\n const a = (adj < 0) ? 0 : (adj > cnstVal1) ? cnstVal1 : adj\n const x1 = ss * a / cnstVal2\n const x2 = w - x1\n const y2 = h - x1\n pathData = `M 0,0 L ${w},0 L ${w},${h} L 0,${h} z M ${x1},${x1} L ${x2},${x1} L ${x2},${y2} L ${x1},${y2} z M 0,0 L ${x1},${x1} M 0,${h} L ${x1},${y2} M ${w},0 L ${x2},${x1} M ${w},${h} L ${x2},${y2}`\n }\n break\n case 'foldedCorner':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n const refr = RATIO_EMUs_Points\n let adj = 16667 * refr\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * refr\n }\n const cnstVal1 = 50000 * refr\n const cnstVal2 = 100000 * refr\n const ss = Math.min(w, h)\n const a = (adj < 0) ? 0 : (adj > cnstVal1) ? cnstVal1 : adj\n const dy2 = ss * a / cnstVal2\n const dy1 = dy2 / 5\n const x1 = w - dy2\n const x2 = x1 + dy1\n const y2 = h - dy2\n const y1 = y2 + dy1\n pathData = `M ${x1},${h} L ${x2},${y1} L ${w},${y2} L ${x1},${h} L 0,${h} L 0,0 L ${w},0 L ${w},${y2}`\n }\n break\n case 'cloud':\n case 'cloudCallout':\n {\n const x0 = w * 3900 / 43200\n const y0 = h * 14370 / 43200\n const rX1 = w * 6753 / 43200,\n rY1 = h * 9190 / 43200,\n rX2 = w * 5333 / 43200,\n rY2 = h * 7267 / 43200,\n rX3 = w * 4365 / 43200,\n rY3 = h * 5945 / 43200,\n rX4 = w * 4857 / 43200,\n rY4 = h * 6595 / 43200,\n rY5 = h * 7273 / 43200,\n rX6 = w * 6775 / 43200,\n rY6 = h * 9220 / 43200,\n rX7 = w * 5785 / 43200,\n rY7 = h * 7867 / 43200,\n rX8 = w * 6752 / 43200,\n rY8 = h * 9215 / 43200,\n rX9 = w * 7720 / 43200,\n rY9 = h * 10543 / 43200,\n rX10 = w * 4360 / 43200,\n rY10 = h * 5918 / 43200,\n rX11 = w * 4345 / 43200\n const sA1 = -11429249 / 60000,\n wA1 = 7426832 / 60000,\n sA2 = -8646143 / 60000,\n wA2 = 5396714 / 60000,\n sA3 = -8748475 / 60000,\n wA3 = 5983381 / 60000,\n sA4 = -7859164 / 60000,\n wA4 = 7034504 / 60000,\n sA5 = -4722533 / 60000,\n wA5 = 6541615 / 60000,\n sA6 = -2776035 / 60000,\n wA6 = 7816140 / 60000,\n sA7 = 37501 / 60000,\n wA7 = 6842000 / 60000,\n sA8 = 1347096 / 60000,\n wA8 = 6910353 / 60000,\n sA9 = 3974558 / 60000,\n wA9 = 4542661 / 60000,\n sA10 = -16496525 / 60000,\n wA10 = 8804134 / 60000,\n sA11 = -14809710 / 60000,\n wA11 = 9151131 / 60000\n\n const getArc = (startX, startY, rX, rY, sA, wA) => {\n const cX = startX - rX * Math.cos(sA * Math.PI / 180)\n const cY = startY - rY * Math.sin(sA * Math.PI / 180)\n return shapeArc(cX, cY, rX, rY, sA, sA + wA, false).replace('M', 'L')\n }\n\n let cloudPath = `M ${x0},${y0}`\n let lastPoint = [x0, y0]\n const arcs = [\n [rX1, rY1, sA1, wA1],\n [rX2, rY2, sA2, wA2],\n [rX3, rY3, sA3, wA3],\n [rX4, rY4, sA4, wA4],\n [rX2, rY5, sA5, wA5],\n [rX6, rY6, sA6, wA6],\n [rX7, rY7, sA7, wA7],\n [rX8, rY8, sA8, wA8],\n [rX9, rY9, sA9, wA9],\n [rX10, rY10, sA10, wA10],\n [rX11, rY3, sA11, wA11]\n ]\n\n for (const arcParams of arcs) {\n const arcPath = getArc(lastPoint[0], lastPoint[1], ...arcParams)\n cloudPath += arcPath\n const lastL = arcPath.lastIndexOf('L')\n const coords = arcPath.substring(lastL + 1).split(' ')\n lastPoint = [parseFloat(coords[0]), parseFloat(coords[1])]\n }\n cloudPath += ' z'\n\n if (shapType === 'cloudCallout') {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n const refr = RATIO_EMUs_Points\n let adj1 = -20833 * refr\n let adj2 = 62500 * refr\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n }\n }\n }\n const cnstVal2 = 100000 * refr\n const ss = Math.min(w, h)\n const wd2 = w / 2,\n hd2 = h / 2\n const dxPos = w * adj1 / cnstVal2\n const dyPos = h * adj2 / cnstVal2\n const xPos = wd2 + dxPos\n const yPos = hd2 + dyPos\n const ht = hd2 * Math.cos(Math.atan(dyPos / dxPos))\n const wt = wd2 * Math.sin(Math.atan(dyPos / dxPos))\n const g2 = wd2 * Math.cos(Math.atan(wt / ht))\n const g3 = hd2 * Math.sin(Math.atan(wt / ht))\n const g4 = (adj1 >= 0) ? wd2 + g2 : wd2 - g2\n const g5 = (adj1 >= 0) ? hd2 + g3 : hd2 - g3\n const g6 = g4 - xPos\n const g7 = g5 - yPos\n const g8 = Math.sqrt(g6 * g6 + g7 * g7)\n const g9 = ss * 6600 / 21600\n const g10 = g8 - g9\n const g11 = g10 / 3\n const g12 = ss * 1800 / 21600\n const g13 = g11 + g12\n const g16 = (g13 * g6 / g8) + xPos\n const g17 = (g13 * g7 / g8) + yPos\n const g18 = ss * 4800 / 21600\n const g20 = g18 + (g11 * 2)\n const g23 = (g20 * g6 / g8) + xPos\n const g24 = (g20 * g7 / g8) + yPos\n const g25 = ss * 1200 / 21600\n const g26 = ss * 600 / 21600\n const x23 = xPos + g26\n const x24 = g16 + g25\n const x25 = g23 + g12\n const calloutPath = `${shapeArc(x23 - g26, yPos, g26, g26, 0, 360, true)} M ${x24},${g17} ${shapeArc(x24 - g25, g17, g25, g25, 0, 360, true).replace('M', 'L')} M ${x25},${g24} ${shapeArc(x25 - g12, g24, g12, g12, 0, 360, true).replace('M', 'L')}`\n cloudPath += calloutPath\n }\n pathData = cloudPath\n }\n break\n case 'smileyFace':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n const refr = RATIO_EMUs_Points\n let adj = 4653 * refr\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * refr\n }\n const cnstVal1 = 50000 * refr\n const cnstVal2 = 100000 * refr\n const cnstVal3 = 4653 * refr\n const wd2 = w / 2,\n hd2 = h / 2\n const a = (adj < -cnstVal3) ? -cnstVal3 : (adj > cnstVal3) ? cnstVal3 : adj\n const x2 = w * 6215 / 21600\n const x3 = w * 13135 / 21600\n const x4 = w * 16640 / 21600\n const y1 = h * 7570 / 21600\n const y3 = h * 16515 / 21600\n const dy2 = h * a / cnstVal2\n const y2 = y3 - dy2\n const y4 = y3 + dy2\n const dy3 = h * a / cnstVal1\n const y5 = y4 + dy3\n const wR = w * 1125 / 21600\n const hR = h * 1125 / 21600\n const cX1 = x2\n const cY1 = y1\n const cX2 = x3\n const x1_mouth = w * 4969 / 21699\n pathData = `${shapeArc(cX1, cY1, wR, hR, 0, 360, true)} ${shapeArc(cX2, cY1, wR, hR, 0, 360, true)} M ${x1_mouth},${y2} Q ${wd2},${y5} ${x4},${y2} Q ${wd2},${y5} ${x1_mouth},${y2} M 0,${hd2} ${shapeArc(wd2, hd2, wd2, hd2, 180, 540, false).replace('M', 'L')} z`\n }\n break\n case 'verticalScroll':\n case 'horizontalScroll':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n const refr = RATIO_EMUs_Points\n let adj = 12500 * refr\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * refr\n }\n const cnstVal1 = 25000 * refr\n const cnstVal2 = 100000 * refr\n const ss = Math.min(w, h)\n const t = 0,\n l = 0,\n b = h,\n r = w\n const a = (adj < 0) ? 0 : (adj > cnstVal1) ? cnstVal1 : adj\n const ch = ss * a / cnstVal2\n const ch2 = ch / 2\n const ch4 = ch / 4\n if (shapType === 'verticalScroll') {\n const x3 = ch + ch2\n const x4 = ch + ch\n const x6 = r - ch\n const x7 = r - ch2\n const x5 = x6 - ch2\n const y3 = b - ch\n const y4 = b - ch2\n pathData = `M ${ch},${y3} L ${ch},${ch2} ${shapeArc(x3, ch2, ch2, ch2, 180, 270, false).replace('M', 'L')} L ${x7},${t} ${shapeArc(x7, ch2, ch2, ch2, 270, 450, false).replace('M', 'L')} L ${x6},${ch} L ${x6},${y4} ${shapeArc(x5, y4, ch2, ch2, 0, 90, false).replace('M', 'L')} L ${ch2},${b} ${shapeArc(ch2, y4, ch2, ch2, 90, 270, false).replace('M', 'L')} z M ${x3},${t} ${shapeArc(x3, ch2, ch2, ch2, 270, 450, false).replace('M', 'L')} ${shapeArc(x3, x3 / 2, ch4, ch4, 90, 270, false).replace('M', 'L')} L ${x4},${ch2} M ${x6},${ch} L ${x3},${ch} M ${ch},${y4} ${shapeArc(ch2, y4, ch2, ch2, 0, 270, false).replace('M', 'L')} ${shapeArc(ch2, (y4 + y3) / 2, ch4, ch4, 270, 450, false).replace('M', 'L')} z M ${ch},${y4} L ${ch},${y3}`\n } \n else if (shapType === 'horizontalScroll') {\n const y3 = ch + ch2\n const y4 = ch + ch\n const y6 = b - ch\n const y7 = b - ch2\n const y5 = y6 - ch2\n const x3 = r - ch\n const x4 = r - ch2\n pathData = `M ${l},${y3} ${shapeArc(ch2, y3, ch2, ch2, 180, 270, false).replace('M', 'L')} L ${x3},${ch} L ${x3},${ch2} ${shapeArc(x4, ch2, ch2, ch2, 180, 360, false).replace('M', 'L')} L ${r},${y5} ${shapeArc(x4, y5, ch2, ch2, 0, 90, false).replace('M', 'L')} L ${ch},${y6} L ${ch},${y7} ${shapeArc(ch2, y7, ch2, ch2, 0, 180, false).replace('M', 'L')} z M ${x4},${ch} ${shapeArc(x4, ch2, ch2, ch2, 90, -180, false).replace('M', 'L')} ${shapeArc((x3 + x4) / 2, ch2, ch4, ch4, 180, 0, false).replace('M', 'L')} z M ${x4},${ch} L ${x3},${ch} M ${ch2},${y4} L ${ch2},${y3} ${shapeArc(y3 / 2, y3, ch4, ch4, 180, 360, false).replace('M', 'L')} ${shapeArc(ch2, y3, ch2, ch2, 0, 180, false).replace('M', 'L')} M ${ch},${y3} L ${ch},${y6}`\n }\n }\n break\n case 'wedgeEllipseCallout':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n const refr = RATIO_EMUs_Points\n let adj1 = -20833 * refr\n let adj2 = 62500 * refr\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n }\n }\n }\n const cnstVal1 = 100000 * RATIO_EMUs_Points\n const angVal1 = 11 * Math.PI / 180\n const vc = h / 2,\n hc = w / 2\n const dxPos = w * adj1 / cnstVal1\n const dyPos = h * adj2 / cnstVal1\n const xPos = hc + dxPos\n const yPos = vc + dyPos\n const pang = Math.atan2(dyPos * w, dxPos * h)\n const stAng = pang + angVal1\n const enAng = pang - angVal1\n const dx1 = hc * Math.cos(stAng)\n const dy1 = vc * Math.sin(stAng)\n const dx2 = hc * Math.cos(enAng)\n const dy2 = vc * Math.sin(enAng)\n const x1 = hc + dx1\n const y1 = vc + dy1\n const x2 = hc + dx2\n const y2 = vc + dy2\n pathData = `M ${x1},${y1} L ${xPos},${yPos} L ${x2},${y2} ${shapeArc(hc, vc, hc, vc, enAng * 180 / Math.PI, stAng * 180 / Math.PI, true).replace('M', 'L')}`\n }\n break\n case 'wedgeRectCallout':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n const refr = RATIO_EMUs_Points\n let adj1 = -20833 * refr\n let adj2 = 62500 * refr\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n }\n }\n }\n const cnstVal1 = 100000 * RATIO_EMUs_Points\n const vc = h / 2,\n hc = w / 2\n const dxPos = w * adj1 / cnstVal1\n const dyPos = h * adj2 / cnstVal1\n const xPos = hc + dxPos\n const yPos = vc + dyPos\n const dq = dxPos * h / w\n const dz = Math.abs(dyPos) - Math.abs(dq)\n const xg1 = (dxPos > 0) ? 7 : 2\n const xg2 = (dxPos > 0) ? 10 : 5\n const x1 = w * xg1 / 12\n const x2 = w * xg2 / 12\n const yg1 = (dyPos > 0) ? 7 : 2\n const yg2 = (dyPos > 0) ? 10 : 5\n const y1 = h * yg1 / 12\n const y2 = h * yg2 / 12\n const xl = (dz > 0) ? 0 : ((dxPos > 0) ? 0 : xPos)\n const xt = (dz > 0) ? ((dyPos > 0) ? x1 : xPos) : x1\n const xr = (dz > 0) ? w : ((dxPos > 0) ? xPos : w)\n const xb = (dz > 0) ? ((dyPos > 0) ? xPos : x1) : x1\n const yl = (dz > 0) ? y1 : ((dxPos > 0) ? y1 : yPos)\n const yt = (dz > 0) ? ((dyPos > 0) ? 0 : yPos) : 0\n const yr = (dz > 0) ? y1 : ((dxPos > 0) ? yPos : y1)\n const yb = (dz > 0) ? ((dyPos > 0) ? yPos : h) : h\n pathData = `M 0,0 L ${x1},0 L ${xt},${yt} L ${x2},0 L ${w},0 L ${w},${y1} L ${xr},${yr} L ${w},${y2} L ${w},${h} L ${x2},${h} L ${xb},${yb} L ${x1},${h} L 0,${h} L 0,${y2} L ${xl},${yl} L 0,${y1} z`\n }\n break\n case 'wedgeRoundRectCallout':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n const refr = RATIO_EMUs_Points\n let adj1 = -20833 * refr\n let adj2 = 62500 * refr\n let adj3 = 16667 * refr\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n } \n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n }\n }\n }\n const cnstVal1 = 100000 * RATIO_EMUs_Points\n const ss = Math.min(w, h)\n const vc = h / 2,\n hc = w / 2\n const dxPos = w * adj1 / cnstVal1\n const dyPos = h * adj2 / cnstVal1\n const xPos = hc + dxPos\n const yPos = vc + dyPos\n const dq = dxPos * h / w\n const dz = Math.abs(dyPos) - Math.abs(dq)\n const xg1 = (dxPos > 0) ? 7 : 2\n const xg2 = (dxPos > 0) ? 10 : 5\n const x1 = w * xg1 / 12\n const x2 = w * xg2 / 12\n const yg1 = (dyPos > 0) ? 7 : 2\n const yg2 = (dyPos > 0) ? 10 : 5\n const y1 = h * yg1 / 12\n const y2 = h * yg2 / 12\n const xl = (dz > 0) ? 0 : ((dxPos > 0) ? 0 : xPos)\n const xt = (dz > 0) ? ((dyPos > 0) ? x1 : xPos) : x1\n const xr = (dz > 0) ? w : ((dxPos > 0) ? xPos : w)\n const xb = (dz > 0) ? ((dyPos > 0) ? xPos : x1) : x1\n const yl = (dz > 0) ? y1 : ((dxPos > 0) ? y1 : yPos)\n const yt = (dz > 0) ? ((dyPos > 0) ? 0 : yPos) : 0\n const yr = (dz > 0) ? y1 : ((dxPos > 0) ? yPos : y1)\n const yb = (dz > 0) ? ((dyPos > 0) ? yPos : h) : h\n const u1 = ss * adj3 / cnstVal1\n const u2 = w - u1\n const v2 = h - u1\n pathData = `M 0,${u1} ${shapeArc(u1, u1, u1, u1, 180, 270, false).replace('M', 'L')} L ${x1},0 L ${xt},${yt} L ${x2},0 L ${u2},0 ${shapeArc(u2, u1, u1, u1, 270, 360, false).replace('M', 'L')} L ${w},${y1} L ${xr},${yr} L ${w},${y2} L ${w},${v2} ${shapeArc(u2, v2, u1, u1, 0, 90, false).replace('M', 'L')} L ${x2},${h} L ${xb},${yb} L ${x1},${h} L ${u1},${h} ${shapeArc(u1, v2, u1, u1, 90, 180, false).replace('M', 'L')} L 0,${y2} L ${xl},${yl} L 0,${y1} z`\n }\n break\n case 'accentBorderCallout1':\n case 'accentBorderCallout2':\n case 'accentBorderCallout3':\n case 'borderCallout1':\n case 'borderCallout2':\n case 'borderCallout3':\n case 'accentCallout1':\n case 'accentCallout2':\n case 'accentCallout3':\n case 'callout1':\n case 'callout2':\n case 'callout3':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n const refr = RATIO_EMUs_Points\n let adj1 = 18750 * refr\n let adj2 = -8333 * refr\n let adj3 = 18750 * refr\n let adj4 = -16667 * refr\n let adj5 = 100000 * refr\n let adj6 = -16667 * refr\n let adj7 = 112963 * refr\n let adj8 = -8333 * refr\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n }\n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n }\n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n }\n else if (sAdj_name === 'adj4') {\n adj4 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n }\n else if (sAdj_name === 'adj5') {\n adj5 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n }\n else if (sAdj_name === 'adj6') {\n adj6 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n }\n else if (sAdj_name === 'adj7') {\n adj7 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n }\n else if (sAdj_name === 'adj8') {\n adj8 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n }\n }\n }\n const cnstVal1 = 100000 * refr\n let x1, y1, x2, y2, x3, y3, x4, y4\n const baseRect = `M 0,0 L ${w},0 L ${w},${h} L 0,${h} z`\n switch (shapType) {\n case 'borderCallout1':\n case 'callout1':\n if (!shapAdjst_ary) {\n adj1 = 18750 * refr\n adj2 = -8333 * refr\n adj3 = 112500 * refr\n adj4 = -38333 * refr\n }\n y1 = h * adj1 / cnstVal1\n x1 = w * adj2 / cnstVal1\n y2 = h * adj3 / cnstVal1\n x2 = w * adj4 / cnstVal1\n pathData = `${baseRect} M ${x1},${y1} L ${x2},${y2}`\n break\n case 'borderCallout2':\n case 'callout2':\n if (!shapAdjst_ary) {\n adj1 = 18750 * refr\n adj2 = -8333 * refr\n adj3 = 18750 * refr\n adj4 = -16667 * refr\n adj5 = 112500 * refr\n adj6 = -46667 * refr\n }\n y1 = h * adj1 / cnstVal1\n x1 = w * adj2 / cnstVal1\n y2 = h * adj3 / cnstVal1\n x2 = w * adj4 / cnstVal1\n y3 = h * adj5 / cnstVal1\n x3 = w * adj6 / cnstVal1\n pathData = `${baseRect} M ${x1},${y1} L ${x2},${y2} L ${x3},${y3}`\n break\n case 'borderCallout3':\n case 'callout3':\n if (!shapAdjst_ary) {\n adj1 = 18750 * refr\n adj2 = -8333 * refr\n adj3 = 18750 * refr\n adj4 = -16667 * refr\n adj5 = 100000 * refr\n adj6 = -16667 * refr\n adj7 = 112963 * refr\n adj8 = -8333 * refr\n }\n y1 = h * adj1 / cnstVal1\n x1 = w * adj2 / cnstVal1\n y2 = h * adj3 / cnstVal1\n x2 = w * adj4 / cnstVal1\n y3 = h * adj5 / cnstVal1\n x3 = w * adj6 / cnstVal1\n y4 = h * adj7 / cnstVal1\n x4 = w * adj8 / cnstVal1\n pathData = `${baseRect} M ${x1},${y1} L ${x2},${y2} L ${x3},${y3} L ${x4},${y4}`\n break\n case 'accentBorderCallout1':\n case 'accentCallout1':\n if (!shapAdjst_ary) {\n adj1 = 18750 * refr\n adj2 = -8333 * refr\n adj3 = 112500 * refr\n adj4 = -38333 * refr\n }\n y1 = h * adj1 / cnstVal1\n x1 = w * adj2 / cnstVal1\n y2 = h * adj3 / cnstVal1\n x2 = w * adj4 / cnstVal1\n pathData = `${baseRect} M ${x1},${y1} L ${x2},${y2} M ${x1},0 L ${x1},${h}`\n break\n case 'accentBorderCallout2':\n case 'accentCallout2':\n if (!shapAdjst_ary) {\n adj1 = 18750 * refr\n adj2 = -8333 * refr\n adj3 = 18750 * refr\n adj4 = -16667 * refr\n adj5 = 112500 * refr\n adj6 = -46667 * refr\n }\n y1 = h * adj1 / cnstVal1\n x1 = w * adj2 / cnstVal1\n y2 = h * adj3 / cnstVal1\n x2 = w * adj4 / cnstVal1\n y3 = h * adj5 / cnstVal1\n x3 = w * adj6 / cnstVal1\n pathData = `${baseRect} M ${x1},${y1} L ${x2},${y2} L ${x3},${y3} M ${x1},0 L ${x1},${h}`\n break\n case 'accentBorderCallout3':\n case 'accentCallout3':\n if (!shapAdjst_ary) {\n adj1 = 18750 * refr\n adj2 = -8333 * refr\n adj3 = 18750 * refr\n adj4 = -16667 * refr\n adj5 = 100000 * refr\n adj6 = -16667 * refr\n adj7 = 112963 * refr\n adj8 = -8333 * refr\n }\n y1 = h * adj1 / cnstVal1\n x1 = w * adj2 / cnstVal1\n y2 = h * adj3 / cnstVal1\n x2 = w * adj4 / cnstVal1\n y3 = h * adj5 / cnstVal1\n x3 = w * adj6 / cnstVal1\n y4 = h * adj7 / cnstVal1\n x4 = w * adj8 / cnstVal1\n pathData = `${baseRect} M ${x1},${y1} L ${x2},${y2} L ${x3},${y3} L ${x4},${y4} M ${x1},0 L ${x1},${h}`\n break\n default:\n }\n }\n break\n case 'leftRightRibbon':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n const refr = RATIO_EMUs_Points\n let adj1 = 50000 * refr\n let adj2 = 50000 * refr\n let adj3 = 16667 * refr\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n } \n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n }\n }\n }\n const cnstVal1 = 33333 * refr\n const cnstVal2 = 100000 * refr\n const cnstVal3 = 200000 * refr\n const cnstVal4 = 400000 * refr\n const ss = Math.min(w, h)\n const hc = w / 2,\n vc = h / 2\n const a3 = (adj3 < 0) ? 0 : (adj3 > cnstVal1) ? cnstVal1 : adj3\n const maxAdj1 = cnstVal2 - a3\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const w1 = hc - (w / 32)\n const maxAdj2 = cnstVal2 * w1 / ss\n const a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2\n const x1 = ss * a2 / cnstVal2\n const x4 = w - x1\n const dy1 = h * a1 / cnstVal3\n const dy2 = h * a3 / -cnstVal3\n const ly1 = vc + dy2 - dy1\n const ry4 = vc + dy1 - dy2\n const ly2 = ly1 + dy1\n const ry3 = h - ly2\n const ly4 = ly2 * 2\n const ry2 = h - (ly4 - ly1)\n const hR = a3 * ss / cnstVal4\n const x2 = hc - (w / 32)\n const x3 = hc + (w / 32)\n const y1 = ly1 + hR\n const y2_arc = ry2 - hR\n pathData = `M 0,${ly2} L ${x1},0 L ${x1},${ly1} L ${hc},${ly1} ${shapeArc(hc, y1, w / 32, hR, 270, 450, false).replace('M', 'L')} ${shapeArc(hc, y2_arc, w / 32, hR, 270, 90, false).replace('M', 'L')} L ${x4},${ry2} L ${x4},${h - ly4} L ${w},${ry3} L ${x4},${h} L ${x4},${ry4} L ${hc},${ry4} ${shapeArc(hc, ry4 - hR, w / 32, hR, 90, 180, false).replace('M', 'L')} L ${x2},${ly4 - ly1} L ${x1},${ly4 - ly1} L ${x1},${ly4} z M ${x3},${y1} L ${x3},${ry2} M ${x2},${y2_arc} L ${x2},${ly4 - ly1}`\n }\n break\n case 'ribbon':\n case 'ribbon2':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 16667 * RATIO_EMUs_Points\n let adj2 = 50000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const cnstVal1 = 25000 * RATIO_EMUs_Points\n const cnstVal2 = 33333 * RATIO_EMUs_Points\n const cnstVal3 = 75000 * RATIO_EMUs_Points\n const cnstVal4 = 100000 * RATIO_EMUs_Points\n const cnstVal5 = 200000 * RATIO_EMUs_Points\n const cnstVal6 = 400000 * RATIO_EMUs_Points\n const hc = w / 2,\n t = 0,\n l = 0,\n b = h,\n r = w,\n wd8 = w / 8,\n wd32 = w / 32\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal2) ? cnstVal2 : adj1\n const a2 = (adj2 < cnstVal1) ? cnstVal1 : (adj2 > cnstVal3) ? cnstVal3 : adj2\n const x10 = r - wd8\n const dx2 = w * a2 / cnstVal5\n const x2 = hc - dx2\n const x9 = hc + dx2\n const x3 = x2 + wd32\n const x8 = x9 - wd32\n const x5 = x2 + wd8\n const x6 = x9 - wd8\n const x4 = x5 - wd32\n const x7 = x6 + wd32\n const hR = h * a1 / cnstVal6\n if (shapType === 'ribbon2') {\n const dy1 = h * a1 / cnstVal5\n const y1 = b - dy1\n const dy2 = h * a1 / cnstVal4\n const y2 = b - dy2\n const y4 = t + dy2\n const y3 = (y4 + b) / 2\n const y6 = b - hR\n const y7 = y1 - hR\n pathData = `M ${l},${b} L ${wd8},${y3} L ${l},${y4} L ${x2},${y4} L ${x2},${hR} ${shapeArc(x3, hR, wd32, hR, 180, 270, false).replace('M', 'L')} L ${x8},${t} ${shapeArc(x8, hR, wd32, hR, 270, 360, false).replace('M', 'L')} L ${x9},${y4} L ${r},${y4} L ${x10},${y3} L ${r},${b} L ${x7},${b} ${shapeArc(x7, y6, wd32, hR, 90, 270, false).replace('M', 'L')} L ${x8},${y1} ${shapeArc(x8, y7, wd32, hR, 90, -90, false).replace('M', 'L')} L ${x3},${y2} ${shapeArc(x3, y7, wd32, hR, 270, 90, false).replace('M', 'L')} L ${x4},${y1} ${shapeArc(x4, y6, wd32, hR, 270, 450, false).replace('M', 'L')} z M ${x5},${y2} L ${x5},${y6} M ${x6},${y6} L ${x6},${y2} M ${x2},${y7} L ${x2},${y4} M ${x9},${y4} L ${x9},${y7}`\n } \n else if (shapType === 'ribbon') {\n const y1 = h * a1 / cnstVal5\n const y2 = h * a1 / cnstVal4\n const y4 = b - y2\n const y3 = y4 / 2\n const y5 = b - hR\n const y6 = y2 - hR\n pathData = `M ${l},${t} L ${x4},${t} ${shapeArc(x4, hR, wd32, hR, 270, 450, false).replace('M', 'L')} L ${x3},${y1} ${shapeArc(x3, y6, wd32, hR, 270, 90, false).replace('M', 'L')} L ${x8},${y2} ${shapeArc(x8, y6, wd32, hR, 90, -90, false).replace('M', 'L')} L ${x7},${y1} ${shapeArc(x7, hR, wd32, hR, 90, 270, false).replace('M', 'L')} L ${r},${t} L ${x10},${y3} L ${r},${y4} L ${x9},${y4} L ${x9},${y5} ${shapeArc(x8, y5, wd32, hR, 0, 90, false).replace('M', 'L')} L ${x3},${b} ${shapeArc(x3, y5, wd32, hR, 90, 180, false).replace('M', 'L')} L ${x2},${y4} L ${l},${y4} L ${wd8},${y3} z M ${x5},${hR} L ${x5},${y2} M ${x6},${y2} L ${x6},${hR} M ${x2},${y4} L ${x2},${y6} M ${x9},${y6} L ${x9},${y4}`\n }\n }\n break\n case 'doubleWave':\n case 'wave':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = (shapType === 'doubleWave') ? 6250 * RATIO_EMUs_Points : 12500 * RATIO_EMUs_Points\n let adj2 = 0\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const cnstVal2 = -10000 * RATIO_EMUs_Points\n const cnstVal3 = 50000 * RATIO_EMUs_Points\n const cnstVal4 = 100000 * RATIO_EMUs_Points\n const l = 0,\n b = h,\n r = w\n if (shapType === 'doubleWave') {\n const cnstVal1 = 12500 * RATIO_EMUs_Points\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal1) ? cnstVal1 : adj1\n const a2 = (adj2 < cnstVal2) ? cnstVal2 : (adj2 > cnstVal4) ? cnstVal4 : adj2\n const y1 = h * a1 / cnstVal4\n const dy2 = y1 * 10 / 3\n const y2 = y1 - dy2\n const y3 = y1 + dy2\n const y4 = b - y1\n const y5 = y4 - dy2\n const y6 = y4 + dy2\n const of2 = w * a2 / cnstVal3\n const dx2 = (of2 > 0) ? 0 : of2\n const x2 = l - dx2\n const dx8 = (of2 > 0) ? of2 : 0\n const x8 = r - dx8\n const dx3 = (dx2 + x8) / 6\n const x3 = x2 + dx3\n const dx4 = (dx2 + x8) / 3\n const x4 = x2 + dx4\n const x5 = (x2 + x8) / 2\n const x6 = x5 + dx3\n const x7 = (x6 + x8) / 2\n const x9 = l + dx8\n const x15 = r + dx2\n const x10 = x9 + dx3\n const x11 = x9 + dx4\n const x12 = (x9 + x15) / 2\n const x13 = x12 + dx3\n const x14 = (x13 + x15) / 2\n pathData = `M ${x2},${y1} C ${x3},${y2} ${x4},${y3} ${x5},${y1} C ${x6},${y2} ${x7},${y3} ${x8},${y1} L ${x15},${y4} C ${x14},${y6} ${x13},${y5} ${x12},${y4} C ${x11},${y6} ${x10},${y5} ${x9},${y4} z`\n } \n else if (shapType === 'wave') {\n const cnstVal5 = 20000 * RATIO_EMUs_Points\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal5) ? cnstVal5 : adj1\n const a2 = (adj2 < cnstVal2) ? cnstVal2 : (adj2 > cnstVal4) ? cnstVal4 : adj2\n const y1 = h * a1 / cnstVal4\n const dy2 = y1 * 10 / 3\n const y2 = y1 - dy2\n const y3 = y1 + dy2\n const y4 = b - y1\n const y5 = y4 - dy2\n const y6 = y4 + dy2\n const of2 = w * a2 / cnstVal3\n const dx2 = (of2 > 0) ? 0 : of2\n const x2 = l - dx2\n const dx5 = (of2 > 0) ? of2 : 0\n const x5 = r - dx5\n const dx3 = (dx2 + x5) / 3\n const x3 = x2 + dx3\n const x4 = (x3 + x5) / 2\n const x6 = l + dx5\n const x10 = r + dx2\n const x7 = x6 + dx3\n const x8 = (x7 + x10) / 2\n pathData = `M ${x2},${y1} C ${x3},${y2} ${x4},${y3} ${x5},${y1} L ${x10},${y4} C ${x8},${y6} ${x7},${y5} ${x6},${y4} z`\n }\n }\n break\n case 'ellipseRibbon':\n case 'ellipseRibbon2':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 50000 * RATIO_EMUs_Points\n let adj3 = 12500 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const cnstVal1 = 25000 * RATIO_EMUs_Points\n const cnstVal3 = 75000 * RATIO_EMUs_Points\n const cnstVal4 = 100000 * RATIO_EMUs_Points\n const cnstVal5 = 200000 * RATIO_EMUs_Points\n const hc = w / 2,\n t = 0,\n l = 0,\n b = h,\n r = w,\n wd8 = w / 8\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal4) ? cnstVal4 : adj1\n const a2 = (adj2 < cnstVal1) ? cnstVal1 : (adj2 > cnstVal3) ? cnstVal3 : adj2\n const q10 = cnstVal4 - a1\n const minAdj3 = (a1 - (q10 / 2) > 0) ? a1 - (q10 / 2) : 0\n const a3 = (adj3 < minAdj3) ? minAdj3 : (adj3 > a1) ? a1 : adj3\n const dx2 = w * a2 / cnstVal5\n const x2 = hc - dx2\n const x3 = x2 + wd8\n const x4 = r - x3\n const x5 = r - x2\n const x6 = r - wd8\n const dy1 = h * a3 / cnstVal4\n const f1 = 4 * dy1 / w\n const q2 = x3 - (x3 * x3 / w)\n const cx1 = x3 / 2\n const cx2 = r - cx1\n const q1_h = h * a1 / cnstVal4\n const dy3 = q1_h - dy1\n const q4 = x2 - (x2 * x2 / w)\n const q5 = f1 * q4\n const rh = b - q1_h\n const q8 = dy1 * 14 / 16\n const cx4 = x2 / 2\n const q9 = f1 * cx4\n const cx5 = r - cx4\n if (shapType === 'ellipseRibbon') {\n const y1 = f1 * q2\n const cy1 = f1 * cx1\n const y3 = q5 + dy3\n const q6 = dy1 + dy3 - y3\n const cy3 = (q6 + dy1) + dy3\n const y2 = (q8 + rh) / 2\n const y5 = q5 + rh\n const y6 = y3 + rh\n const cy4 = q9 + rh\n const cy6 = cy3 + rh\n const y7 = y1 + dy3\n pathData = `M ${l},${t} Q ${cx1},${cy1} ${x3},${y1} L ${x2},${y3} Q ${hc},${cy3} ${x5},${y3} L ${x4},${y1} Q ${cx2},${cy1} ${r},${t} L ${x6},${y2} L ${r},${rh} Q ${cx5},${cy4} ${x5},${y5} L ${x5},${y6} Q ${hc},${cy6} ${x2},${y6} L ${x2},${y5} Q ${cx4},${cy4} ${l},${rh} L ${wd8},${y2} z M ${x2},${y5} L ${x2},${y3} M ${x5},${y3} L ${x5},${y5} M ${x3},${y1} L ${x3},${y7} M ${x4},${y7} L ${x4},${y1}`\n } \n else if (shapType === 'ellipseRibbon2') {\n const u1 = f1 * q2\n const y1 = b - u1\n const cu1 = f1 * cx1\n const cy1 = b - cu1\n const u3 = q5 + dy3\n const y3 = b - u3\n const q6 = dy1 + dy3 - u3\n const cu3 = (q6 + dy1) + dy3\n const cy3 = b - cu3\n const u2 = (q8 + rh) / 2\n const y2 = b - u2\n const u5 = q5 + rh\n const y5 = b - u5\n const u6 = u3 + rh\n const y6 = b - u6\n const cu4 = q9 + rh\n const cy4 = b - cu4\n const cu6 = cu3 + rh\n const cy6 = b - cu6\n const u7 = u1 + dy3\n const y7 = b - u7\n pathData = `M ${l},${b} L ${wd8},${y2} L ${l},${q1_h} Q ${cx4},${cy4} ${x2},${y5} L ${x2},${y6} Q ${hc},${cy6} ${x5},${y6} L ${x5},${y5} Q ${cx5},${cy4} ${r},${q1_h} L ${x6},${y2} L ${r},${b} Q ${cx2},${cy1} ${x4},${y1} L ${x5},${y3} Q ${hc},${cy3} ${x2},${y3} L ${x3},${y1} Q ${cx1},${cy1} ${l},${b} z M ${x2},${y3} L ${x2},${y5} M ${x5},${y5} L ${x5},${y3} M ${x3},${y7} L ${x3},${y1} M ${x4},${y1} L ${x4},${y7}`\n }\n }\n break\n case 'line':\n case 'straightConnector1':\n case 'bentConnector4':\n case 'bentConnector5':\n case 'curvedConnector2':\n case 'curvedConnector3':\n case 'curvedConnector4':\n case 'curvedConnector5':\n pathData = `M 0 0 L ${w} ${h}`\n break\n case 'rightArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let sAdj1_val = 0.25\n let sAdj2_val = 0.5\n if (shapAdjst_ary) {\n const max_sAdj2_const = w / h\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n sAdj1_val = 0.5 - (parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 200000)\n } \n else if (sAdj_name === 'adj2') {\n const sAdj2_val2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 100000\n sAdj2_val = 1 - (sAdj2_val2 / max_sAdj2_const)\n }\n }\n }\n pathData = `M ${w} ${h / 2} L ${sAdj2_val * w} 0 L ${sAdj2_val * w} ${sAdj1_val * h} L 0 ${sAdj1_val * h} L 0 ${(1 - sAdj1_val) * h} L ${sAdj2_val * w} ${(1 - sAdj1_val) * h} L ${sAdj2_val * w} ${h} Z`\n }\n break\n case 'leftArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let sAdj1_val = 0.25\n let sAdj2_val = 0.5\n if (shapAdjst_ary) {\n const max_sAdj2_const = w / h\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n sAdj1_val = 0.5 - (parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 200000)\n } \n else if (sAdj_name === 'adj2') {\n const sAdj2_val2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 100000\n sAdj2_val = sAdj2_val2 / max_sAdj2_const\n }\n }\n }\n pathData = `M 0 ${h / 2} L ${sAdj2_val * w} ${h} L ${sAdj2_val * w} ${(1 - sAdj1_val) * h} L ${w} ${(1 - sAdj1_val) * h} L ${w} ${sAdj1_val * h} L ${sAdj2_val * w} ${sAdj1_val * h} L ${sAdj2_val * w} 0 Z`\n }\n break\n case 'downArrow':\n case 'flowChartOffpageConnector':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let sAdj1_val = 0.25\n let sAdj2_val = 0.5\n if (shapAdjst_ary) {\n const max_sAdj2_const = h / w\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n sAdj1_val = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 200000\n } \n else if (sAdj_name === 'adj2') {\n const sAdj2_val2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 100000\n sAdj2_val = sAdj2_val2 / max_sAdj2_const\n }\n }\n }\n if (shapType === 'flowChartOffpageConnector') {\n sAdj1_val = 0.5\n sAdj2_val = 0.212\n }\n pathData = `M ${(0.5 - sAdj1_val) * w} 0 L ${(0.5 - sAdj1_val) * w} ${(1 - sAdj2_val) * h} L 0 ${(1 - sAdj2_val) * h} L ${w / 2} ${h} L ${w} ${(1 - sAdj2_val) * h} L ${(0.5 + sAdj1_val) * w} ${(1 - sAdj2_val) * h} L ${(0.5 + sAdj1_val) * w} 0 Z`\n }\n break\n case 'upArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let sAdj1_val = 0.25\n let sAdj2_val = 0.5\n if (shapAdjst_ary) {\n const max_sAdj2_const = h / w\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n sAdj1_val = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 200000\n } \n else if (sAdj_name === 'adj2') {\n const sAdj2_val2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 100000\n sAdj2_val = sAdj2_val2 / max_sAdj2_const\n }\n }\n }\n pathData = `M ${w / 2} 0 L 0 ${sAdj2_val * h} L ${(0.5 - sAdj1_val) * w} ${sAdj2_val * h} L ${(0.5 - sAdj1_val) * w} ${h} L ${(0.5 + sAdj1_val) * w} ${h} L ${(0.5 + sAdj1_val) * w} ${sAdj2_val * h} L ${w} ${sAdj2_val * h} Z`\n }\n break\n case 'leftRightArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let sAdj1_val = 0.25\n let sAdj2_val = 0.25\n if (shapAdjst_ary) {\n const max_sAdj2_const = w / h\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n sAdj1_val = 0.5 - (parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 200000)\n } \n else if (sAdj_name === 'adj2') {\n const sAdj2_val2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 100000\n sAdj2_val = sAdj2_val2 / max_sAdj2_const\n }\n }\n }\n pathData = `M 0 ${h / 2} L ${sAdj2_val * w} ${h} L ${sAdj2_val * w} ${(1 - sAdj1_val) * h} L ${(1 - sAdj2_val) * w} ${(1 - sAdj1_val) * h} L ${(1 - sAdj2_val) * w} ${h} L ${w} ${h / 2} L ${(1 - sAdj2_val) * w} 0 L ${(1 - sAdj2_val) * w} ${sAdj1_val * h} L ${sAdj2_val * w} ${sAdj1_val * h} L ${sAdj2_val * w} 0 Z`\n }\n break\n case 'upDownArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let sAdj1_val = 0.25\n let sAdj2_val = 0.25\n if (shapAdjst_ary) {\n const max_sAdj2_const = h / w\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n sAdj1_val = 0.5 - (parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 200000)\n } \n else if (sAdj_name === 'adj2') {\n const sAdj2_val2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 100000\n sAdj2_val = sAdj2_val2 / max_sAdj2_const\n }\n }\n }\n pathData = `M ${w / 2} 0 L 0 ${sAdj2_val * h} L ${sAdj1_val * w} ${sAdj2_val * h} L ${sAdj1_val * w} ${(1 - sAdj2_val) * h} L 0 ${(1 - sAdj2_val) * h} L ${w / 2} ${h} L ${w} ${(1 - sAdj2_val) * h} L ${(1 - sAdj1_val) * w} ${(1 - sAdj2_val) * h} L ${(1 - sAdj1_val) * w} ${sAdj2_val * h} L ${w} ${sAdj2_val * h} Z`\n }\n break\n case 'quadArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 22500 * RATIO_EMUs_Points\n let adj2 = 22500 * RATIO_EMUs_Points\n let adj3 = 22500 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const cnstVal3 = 200000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const vc = h / 2,\n hc = w / 2\n const minWH = Math.min(w, h)\n const a2 = (adj2 < 0) ? 0 : (adj2 > cnstVal1) ? cnstVal1 : adj2\n const maxAdj1 = 2 * a2\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const q1 = cnstVal2 - maxAdj1\n const maxAdj3 = q1 / 2\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const x1 = minWH * a3 / cnstVal2\n const dx2 = minWH * a2 / cnstVal2\n const x2 = hc - dx2\n const x5 = hc + dx2\n const dx3 = minWH * a1 / cnstVal3\n const x3 = hc - dx3\n const x4 = hc + dx3\n const x6 = w - x1\n const y2 = vc - dx2\n const y5 = vc + dx2\n const y3 = vc - dx3\n const y4 = vc + dx3\n const y6 = h - x1\n pathData = `M 0,${vc} L ${x1},${y2} L ${x1},${y3} L ${x3},${y3} L ${x3},${x1} L ${x2},${x1} L ${hc},0 L ${x5},${x1} L ${x4},${x1} L ${x4},${y3} L ${x6},${y3} L ${x6},${y2} L ${w},${vc} L ${x6},${y5} L ${x6},${y4} L ${x4},${y4} L ${x4},${y6} L ${x5},${y6} L ${hc},${h} L ${x2},${y6} L ${x3},${y6} L ${x3},${y4} L ${x1},${y4} L ${x1},${y5} z`\n }\n break\n case 'leftRightUpArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 25000 * RATIO_EMUs_Points\n let adj3 = 25000 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const cnstVal3 = 200000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const hc = w / 2\n const minWH = Math.min(w, h)\n const a2 = (adj2 < 0) ? 0 : (adj2 > cnstVal1) ? cnstVal1 : adj2\n const maxAdj1 = 2 * a2\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const q1 = cnstVal2 - maxAdj1\n const maxAdj3 = q1 / 2\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const x1 = minWH * a3 / cnstVal2\n const dx2 = minWH * a2 / cnstVal2\n const x2 = hc - dx2\n const x5 = hc + dx2\n const dx3 = minWH * a1 / cnstVal3\n const x3 = hc - dx3\n const x4 = hc + dx3\n const x6 = w - x1\n const dy2 = minWH * a2 / cnstVal1\n const y2 = h - dy2\n const y4 = h - dx2\n const y3 = y4 - dx3\n const y5 = y4 + dx3\n pathData = `M 0,${y4} L ${x1},${y2} L ${x1},${y3} L ${x3},${y3} L ${x3},${x1} L ${x2},${x1} L ${hc},0 L ${x5},${x1} L ${x4},${x1} L ${x4},${y3} L ${x6},${y3} L ${x6},${y2} L ${w},${y4} L ${x6},${h} L ${x6},${y5} L ${x1},${y5} L ${x1},${h} z`\n }\n break\n case 'leftUpArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 25000 * RATIO_EMUs_Points\n let adj3 = 25000 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const cnstVal3 = 200000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const minWH = Math.min(w, h)\n const a2 = (adj2 < 0) ? 0 : (adj2 > cnstVal1) ? cnstVal1 : adj2\n const maxAdj1 = 2 * a2\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const maxAdj3 = cnstVal2 - maxAdj1\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const x1 = minWH * a3 / cnstVal2\n const dx2 = minWH * a2 / cnstVal1\n const x2 = w - dx2\n const y2 = h - dx2\n const dx4 = minWH * a2 / cnstVal2\n const x4 = w - dx4\n const y4 = h - dx4\n const dx3 = minWH * a1 / cnstVal3\n const x3 = x4 - dx3\n const x5 = x4 + dx3\n const y3 = y4 - dx3\n const y5 = y4 + dx3\n pathData = `M 0,${y4} L ${x1},${y2} L ${x1},${y3} L ${x3},${y3} L ${x3},${x1} L ${x2},${x1} L ${x4},0 L ${w},${x1} L ${x5},${x1} L ${x5},${y5} L ${x1},${y5} L ${x1},${h} z`\n }\n break\n case 'bentUpArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 25000 * RATIO_EMUs_Points\n let adj3 = 25000 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const cnstVal3 = 200000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const minWH = Math.min(w, h)\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal1) ? cnstVal1 : adj1\n const a2 = (adj2 < 0) ? 0 : (adj2 > cnstVal1) ? cnstVal1 : adj2\n const a3 = (adj3 < 0) ? 0 : (adj3 > cnstVal1) ? cnstVal1 : adj3\n const y1 = minWH * a3 / cnstVal2\n const dx1 = minWH * a2 / cnstVal1\n const x1 = w - dx1\n const dx3 = minWH * a2 / cnstVal2\n const x3 = w - dx3\n const dx2 = minWH * a1 / cnstVal3\n const x2 = x3 - dx2\n const x4 = x3 + dx2\n const dy2 = minWH * a1 / cnstVal2\n const y2 = h - dy2\n pathData = `M 0,${y2} L ${x2},${y2} L ${x2},${y1} L ${x1},${y1} L ${x3},0 L ${w},${y1} L ${x4},${y1} L ${x4},${h} L 0,${h} z`\n }\n break\n case 'bentArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 25000 * RATIO_EMUs_Points\n let adj3 = 25000 * RATIO_EMUs_Points\n let adj4 = 43750 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj4') {\n adj4 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const minWH = Math.min(w, h)\n const a2 = (adj2 < 0) ? 0 : (adj2 > cnstVal1) ? cnstVal1 : adj2\n const maxAdj1 = 2 * a2\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const a3 = (adj3 < 0) ? 0 : (adj3 > cnstVal1) ? cnstVal1 : adj3\n const th = minWH * a1 / cnstVal2\n const aw2 = minWH * a2 / cnstVal2\n const th2 = th / 2\n const dh2 = aw2 - th2\n const ah = minWH * a3 / cnstVal2\n const bw = w - ah\n const bh = h - dh2\n const bs = (bw < bh) ? bw : bh\n const maxAdj4 = cnstVal2 * bs / minWH\n const a4 = (adj4 < 0) ? 0 : (adj4 > maxAdj4) ? maxAdj4 : adj4\n const bd = minWH * a4 / cnstVal2\n const bd3 = bd - th\n const bd2 = (bd3 > 0) ? bd3 : 0\n const x3 = th + bd2\n const x4 = w - ah\n const y3 = dh2 + th\n const y4 = y3 + dh2\n const y5 = dh2 + bd\n const y6 = y3 + bd2\n pathData = `M 0,${h} L 0,${y5} ${shapeArc(bd, y5, bd, bd, 180, 270, false).replace('M', 'L')} L ${x4},${dh2} L ${x4},0 L ${w},${aw2} L ${x4},${y4} L ${x4},${y3} L ${x3},${y3} ${shapeArc(x3, y6, bd2, bd2, 270, 180, false).replace('M', 'L')} L ${th},${h} z`\n }\n break\n case 'uturnArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 25000 * RATIO_EMUs_Points\n let adj3 = 25000 * RATIO_EMUs_Points\n let adj4 = 43750 * RATIO_EMUs_Points\n let adj5 = 75000 * RATIO_EMUs_Points\n const cnstVal1 = 25000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj4') {\n adj4 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj5') {\n adj5 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const minWH = Math.min(w, h)\n const a2 = (adj2 < 0) ? 0 : (adj2 > cnstVal1) ? cnstVal1 : adj2\n const maxAdj1 = 2 * a2\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const q2 = a1 * minWH / h\n const q3 = cnstVal2 - q2\n const maxAdj3 = q3 * h / minWH\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const q1 = a3 + a1\n const minAdj5 = q1 * minWH / h\n const a5 = (adj5 < minAdj5) ? minAdj5 : (adj5 > cnstVal2) ? cnstVal2 : adj5\n const th = minWH * a1 / cnstVal2\n const aw2 = minWH * a2 / cnstVal2\n const th2 = th / 2\n const dh2 = aw2 - th2\n const y5 = h * a5 / cnstVal2\n const ah = minWH * a3 / cnstVal2\n const y4 = y5 - ah\n const x9 = w - dh2\n const bw = x9 / 2\n const bs = (bw < y4) ? bw : y4\n const maxAdj4 = cnstVal2 * bs / minWH\n const a4 = (adj4 < 0) ? 0 : (adj4 > maxAdj4) ? maxAdj4 : adj4\n const bd = minWH * a4 / cnstVal2\n const bd3 = bd - th\n const bd2 = (bd3 > 0) ? bd3 : 0\n const x3 = th + bd2\n const x8 = w - aw2\n const x6 = x8 - aw2\n const x7 = x6 + dh2\n const x4 = x9 - bd\n const x5 = x7 - bd2\n pathData = `M 0,${h} L 0,${bd} ${shapeArc(bd, bd, bd, bd, 180, 270, false).replace('M', 'L')} L ${x4},0 ${shapeArc(x4, bd, bd, bd, 270, 360, false).replace('M', 'L')} L ${x9},${y4} L ${w},${y4} L ${x8},${y5} L ${x6},${y4} L ${x7},${y4} L ${x7},${x3} ${shapeArc(x5, x3, bd2, bd2, 0, -90, false).replace('M', 'L')} L ${x3},${th} ${shapeArc(x3, x3, bd2, bd2, 270, 180, false).replace('M', 'L')} L ${th},${h} z`\n }\n break\n case 'stripedRightArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 50000 * RATIO_EMUs_Points\n let adj2 = 50000 * RATIO_EMUs_Points\n const cnstVal1 = 100000 * RATIO_EMUs_Points\n const cnstVal2 = 200000 * RATIO_EMUs_Points\n const cnstVal3 = 84375 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const vc = h / 2\n const minWH = Math.min(w, h)\n const maxAdj2 = cnstVal3 * w / minWH\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal1) ? cnstVal1 : adj1\n const a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2\n const x4 = minWH * 5 / 32\n const dx5 = minWH * a2 / cnstVal1\n const x5 = w - dx5\n const dy1 = h * a1 / cnstVal2\n const y1 = vc - dy1\n const y2 = vc + dy1\n const ssd8 = minWH / 8,\n ssd16 = minWH / 16,\n ssd32 = minWH / 32\n pathData = `M 0,${y1} L ${ssd32},${y1} L ${ssd32},${y2} L 0,${y2} z M ${ssd16},${y1} L ${ssd8},${y1} L ${ssd8},${y2} L ${ssd16},${y2} z M ${x4},${y1} L ${x5},${y1} L ${x5},0 L ${w},${vc} L ${x5},${h} L ${x5},${y2} L ${x4},${y2} z`\n }\n break\n case 'notchedRightArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 50000 * RATIO_EMUs_Points\n let adj2 = 50000 * RATIO_EMUs_Points\n const cnstVal1 = 100000 * RATIO_EMUs_Points\n const cnstVal2 = 200000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const vc = h / 2,\n hd2 = vc\n const minWH = Math.min(w, h)\n const maxAdj2 = cnstVal1 * w / minWH\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal1) ? cnstVal1 : adj1\n const a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2\n const dx2 = minWH * a2 / cnstVal1\n const x2 = w - dx2\n const dy1 = h * a1 / cnstVal2\n const y1 = vc - dy1\n const y2 = vc + dy1\n const x1 = dy1 * dx2 / hd2\n pathData = `M 0,${y1} L ${x2},${y1} L ${x2},0 L ${w},${vc} L ${x2},${h} L ${x2},${y2} L 0,${y2} L ${x1},${vc} z`\n }\n break\n case 'homePlate':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj = 50000 * RATIO_EMUs_Points\n const cnstVal1 = 100000 * RATIO_EMUs_Points\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n const vc = h / 2\n const minWH = Math.min(w, h)\n const maxAdj = cnstVal1 * w / minWH\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n const dx1 = minWH * a / cnstVal1\n const x1 = w - dx1\n pathData = `M 0,0 L ${x1},0 L ${w},${vc} L ${x1},${h} L 0,${h} z`\n }\n break\n case 'chevron':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj = 50000 * RATIO_EMUs_Points\n const cnstVal1 = 100000 * RATIO_EMUs_Points\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n const vc = h / 2\n const minWH = Math.min(w, h)\n const maxAdj = cnstVal1 * w / minWH\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n const x1 = minWH * a / cnstVal1\n const x2 = w - x1\n pathData = `M 0,0 L ${x2},0 L ${w},${vc} L ${x2},${h} L 0,${h} L ${x1},${vc} z`\n }\n break\n case 'rightArrowCallout':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 25000 * RATIO_EMUs_Points\n let adj3 = 25000 * RATIO_EMUs_Points\n let adj4 = 64977 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const cnstVal3 = 200000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj4') {\n adj4 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const vc = h / 2,\n r = w,\n b = h,\n l = 0,\n t = 0\n const ss = Math.min(w, h)\n const maxAdj2 = cnstVal1 * h / ss\n const a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2\n const maxAdj1 = a2 * 2\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const maxAdj3 = cnstVal2 * w / ss\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const q2 = a3 * ss / w\n const maxAdj4 = cnstVal2 - q2\n const a4 = (adj4 < 0) ? 0 : (adj4 > maxAdj4) ? maxAdj4 : adj4\n const dy1 = ss * a2 / cnstVal2\n const dy2 = ss * a1 / cnstVal3\n const y1 = vc - dy1\n const y2 = vc - dy2\n const y3 = vc + dy2\n const y4 = vc + dy1\n const dx3 = ss * a3 / cnstVal2\n const x3 = r - dx3\n const x2 = w * a4 / cnstVal2\n pathData = `M ${l},${t} L ${x2},${t} L ${x2},${y2} L ${x3},${y2} L ${x3},${y1} L ${r},${vc} L ${x3},${y4} L ${x3},${y3} L ${x2},${y3} L ${x2},${b} L ${l},${b} z`\n }\n break\n case 'downArrowCallout':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 25000 * RATIO_EMUs_Points\n let adj3 = 25000 * RATIO_EMUs_Points\n let adj4 = 64977 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const cnstVal3 = 200000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj4') {\n adj4 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const hc = w / 2,\n r = w,\n b = h,\n l = 0,\n t = 0\n const ss = Math.min(w, h)\n const maxAdj2 = cnstVal1 * w / ss\n const a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2\n const maxAdj1 = a2 * 2\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const maxAdj3 = cnstVal2 * h / ss\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const q2 = a3 * ss / h\n const maxAdj4 = cnstVal2 - q2\n const a4 = (adj4 < 0) ? 0 : (adj4 > maxAdj4) ? maxAdj4 : adj4\n const dx1 = ss * a2 / cnstVal2\n const dx2 = ss * a1 / cnstVal3\n const x1 = hc - dx1\n const x2 = hc - dx2\n const x3 = hc + dx2\n const x4 = hc + dx1\n const dy3 = ss * a3 / cnstVal2\n const y3 = b - dy3\n const y2 = h * a4 / cnstVal2\n pathData = `M ${l},${t} L ${r},${t} L ${r},${y2} L ${x3},${y2} L ${x3},${y3} L ${x4},${y3} L ${hc},${b} L ${x1},${y3} L ${x2},${y3} L ${x2},${y2} L ${l},${y2} z`\n }\n break\n case 'leftArrowCallout':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 25000 * RATIO_EMUs_Points\n let adj3 = 25000 * RATIO_EMUs_Points\n let adj4 = 64977 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const cnstVal3 = 200000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj4') {\n adj4 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const vc = h / 2,\n r = w,\n b = h,\n l = 0,\n t = 0\n const ss = Math.min(w, h)\n const maxAdj2 = cnstVal1 * h / ss\n const a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2\n const maxAdj1 = a2 * 2\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const maxAdj3 = cnstVal2 * w / ss\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const q2 = a3 * ss / w\n const maxAdj4 = cnstVal2 - q2\n const a4 = (adj4 < 0) ? 0 : (adj4 > maxAdj4) ? maxAdj4 : adj4\n const dy1 = ss * a2 / cnstVal2\n const dy2 = ss * a1 / cnstVal3\n const y1 = vc - dy1\n const y2 = vc - dy2\n const y3 = vc + dy2\n const y4 = vc + dy1\n const x1 = ss * a3 / cnstVal2\n const dx2 = w * a4 / cnstVal2\n const x2 = r - dx2\n pathData = `M ${l},${vc} L ${x1},${y1} L ${x1},${y2} L ${x2},${y2} L ${x2},${t} L ${r},${t} L ${r},${b} L ${x2},${b} L ${x2},${y3} L ${x1},${y3} L ${x1},${y4} z`\n }\n break\n case 'upArrowCallout':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 25000 * RATIO_EMUs_Points\n let adj3 = 25000 * RATIO_EMUs_Points\n let adj4 = 64977 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const cnstVal3 = 200000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj4') {\n adj4 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const hc = w / 2,\n r = w,\n b = h,\n l = 0,\n t = 0\n const ss = Math.min(w, h)\n const maxAdj2 = cnstVal1 * w / ss\n const a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2\n const maxAdj1 = a2 * 2\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const maxAdj3 = cnstVal2 * h / ss\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const q2 = a3 * ss / h\n const maxAdj4 = cnstVal2 - q2\n const a4 = (adj4 < 0) ? 0 : (adj4 > maxAdj4) ? maxAdj4 : adj4\n const dx1 = ss * a2 / cnstVal2\n const dx2 = ss * a1 / cnstVal3\n const x1 = hc - dx1\n const x2 = hc - dx2\n const x3 = hc + dx2\n const x4 = hc + dx1\n const y1 = ss * a3 / cnstVal2\n const dy2 = h * a4 / cnstVal2\n const y2 = b - dy2\n pathData = `M ${l},${y2} L ${x2},${y2} L ${x2},${y1} L ${x1},${y1} L ${hc},${t} L ${x4},${y1} L ${x3},${y1} L ${x3},${y2} L ${r},${y2} L ${r},${b} L ${l},${b} z`\n }\n break\n case 'leftRightArrowCallout':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 25000 * RATIO_EMUs_Points\n let adj3 = 25000 * RATIO_EMUs_Points\n let adj4 = 48123 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const cnstVal3 = 200000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj4') {\n adj4 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const vc = h / 2,\n hc = w / 2,\n r = w,\n b = h,\n l = 0,\n t = 0\n const ss = Math.min(w, h)\n const maxAdj2 = cnstVal1 * h / ss\n const a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2\n const maxAdj1 = a2 * 2\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const maxAdj3 = cnstVal1 * w / ss\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const q2 = a3 * ss / (w / 2)\n const maxAdj4 = cnstVal2 - q2\n const a4 = (adj4 < 0) ? 0 : (adj4 > maxAdj4) ? maxAdj4 : adj4\n const dy1 = ss * a2 / cnstVal2\n const dy2 = ss * a1 / cnstVal3\n const y1 = vc - dy1\n const y2 = vc - dy2\n const y3 = vc + dy2\n const y4 = vc + dy1\n const x1 = ss * a3 / cnstVal2\n const x4 = r - x1\n const dx2 = w * a4 / cnstVal3\n const x2 = hc - dx2\n const x3 = hc + dx2\n pathData = `M ${l},${vc} L ${x1},${y1} L ${x1},${y2} L ${x2},${y2} L ${x2},${t} L ${x3},${t} L ${x3},${y2} L ${x4},${y2} L ${x4},${y1} L ${r},${vc} L ${x4},${y4} L ${x4},${y3} L ${x3},${y3} L ${x3},${b} L ${x2},${b} L ${x2},${y3} L ${x1},${y3} L ${x1},${y4} z`\n }\n break\n case 'quadArrowCallout':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 18515 * RATIO_EMUs_Points\n let adj2 = 18515 * RATIO_EMUs_Points\n let adj3 = 18515 * RATIO_EMUs_Points\n let adj4 = 48123 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const cnstVal3 = 200000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj4') {\n adj4 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const vc = h / 2,\n hc = w / 2,\n r = w,\n b = h,\n l = 0,\n t = 0\n const ss = Math.min(w, h)\n const a2 = (adj2 < 0) ? 0 : (adj2 > cnstVal1) ? cnstVal1 : adj2\n const maxAdj1 = a2 * 2\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const maxAdj3 = cnstVal1 - a2\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const q2 = a3 * 2\n const maxAdj4 = cnstVal2 - q2\n const a4 = (adj4 < a1) ? a1 : (adj4 > maxAdj4) ? maxAdj4 : adj4\n const dx2 = ss * a2 / cnstVal2\n const dx3 = ss * a1 / cnstVal3\n const ah = ss * a3 / cnstVal2\n const dx1 = w * a4 / cnstVal3\n const dy1 = h * a4 / cnstVal3\n const x8 = r - ah\n const x2 = hc - dx1\n const x7 = hc + dx1\n const x3 = hc - dx2\n const x6 = hc + dx2\n const x4 = hc - dx3\n const x5 = hc + dx3\n const y8 = b - ah\n const y2 = vc - dy1\n const y7 = vc + dy1\n const y3 = vc - dx2\n const y6 = vc + dx2\n const y4 = vc - dx3\n const y5 = vc + dx3\n pathData = `M ${l},${vc} L ${ah},${y3} L ${ah},${y4} L ${x2},${y4} L ${x2},${y2} L ${x4},${y2} L ${x4},${ah} L ${x3},${ah} L ${hc},${t} L ${x6},${ah} L ${x5},${ah} L ${x5},${y2} L ${x7},${y2} L ${x7},${y4} L ${x8},${y4} L ${x8},${y3} L ${r},${vc} L ${x8},${y6} L ${x8},${y5} L ${x7},${y5} L ${x7},${y7} L ${x5},${y7} L ${x5},${y8} L ${x6},${y8} L ${hc},${b} L ${x3},${y8} L ${x4},${y8} L ${x4},${y7} L ${x2},${y7} L ${x2},${y5} L ${ah},${y5} L ${ah},${y6} z`\n }\n break\n case 'curvedDownArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 50000 * RATIO_EMUs_Points\n let adj3 = 25000 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const wd2 = w / 2,\n r = w,\n b = h,\n t = 0,\n c3d4 = 270,\n cd2 = 180,\n cd4 = 90\n const ss = Math.min(w, h)\n const maxAdj2 = cnstVal1 * w / ss\n const a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal2) ? cnstVal2 : adj1\n const th = ss * a1 / cnstVal2\n const aw = ss * a2 / cnstVal2\n const q1 = (th + aw) / 4\n const wR = wd2 - q1\n const q7 = wR * 2\n const q11 = Math.sqrt(q7 * q7 - th * th)\n const idy = q11 * h / q7\n const maxAdj3 = cnstVal2 * idy / ss\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const ah = ss * a3 / cnstVal2\n const x3 = wR + th\n const q5 = Math.sqrt(h * h - ah * ah)\n const dx = q5 * wR / h\n const x5 = wR + dx\n const x7 = x3 + dx\n const dh = (aw - th) / 2\n const x4 = x5 - dh\n const x8 = x7 + dh\n const x6 = r - (aw / 2)\n const y1 = b - ah\n const swAng = Math.atan(dx / ah)\n const swAngDeg = swAng * 180 / Math.PI\n const mswAng = -swAngDeg\n const dang2 = Math.atan((th / 2) / idy)\n const dang2Deg = dang2 * 180 / Math.PI\n const stAng = c3d4 + swAngDeg\n const stAng2 = c3d4 - dang2Deg\n const swAng2 = dang2Deg - cd4\n const swAng3 = cd4 + dang2Deg\n pathData = `M ${x6},${b} L ${x4},${y1} L ${x5},${y1} ${shapeArc(wR, h, wR, h, stAng, (stAng + mswAng), false).replace('M', 'L')} L ${x3},${t} ${shapeArc(x3, h, wR, h, c3d4, (c3d4 + swAngDeg), false).replace('M', 'L')} L ${x5 + th},${y1} L ${x8},${y1} z M ${x3},${t} ${shapeArc(x3, h, wR, h, stAng2, (stAng2 + swAng2), false).replace('M', 'L')} ${shapeArc(wR, h, wR, h, cd2, (cd2 + swAng3), false).replace('M', 'L')}`\n }\n break\n case 'curvedLeftArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 50000 * RATIO_EMUs_Points\n let adj3 = 25000 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const hd2 = h / 2,\n r = w,\n b = h,\n l = 0,\n t = 0,\n c3d4 = 270,\n cd4 = 90\n const ss = Math.min(w, h)\n const maxAdj2 = cnstVal1 * h / ss\n const a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2\n const a1 = (adj1 < 0) ? 0 : (adj1 > a2) ? a2 : adj1\n const th = ss * a1 / cnstVal2\n const aw = ss * a2 / cnstVal2\n const q1 = (th + aw) / 4\n const hR = hd2 - q1\n const q7 = hR * 2\n const q11 = Math.sqrt(q7 * q7 - th * th)\n const iDx = q11 * w / q7\n const maxAdj3 = cnstVal2 * iDx / ss\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const ah = ss * a3 / cnstVal2\n const y3 = hR + th\n const q5 = Math.sqrt(w * w - ah * ah)\n const dy = q5 * hR / w\n const y5 = hR + dy\n const y7 = y3 + dy\n const dh = (aw - th) / 2\n const y4 = y5 - dh\n const y8 = y7 + dh\n const y6 = b - (aw / 2)\n const x1 = l + ah\n const swAng = Math.atan(dy / ah)\n const dang2 = Math.atan((th / 2) / iDx)\n const swAng2 = dang2 - swAng\n const swAngDg = swAng * 180 / Math.PI\n const swAng2Dg = swAng2 * 180 / Math.PI\n pathData = `M ${r},${y3} ${shapeArc(l, hR, w, hR, 0, -cd4, false).replace('M', 'L')} L ${l},${t} ${shapeArc(l, y3, w, hR, c3d4, (c3d4 + cd4), false).replace('M', 'L')} L ${r},${y3} ${shapeArc(l, y3, w, hR, 0, swAngDg, false).replace('M', 'L')} L ${x1},${y7} L ${x1},${y8} L ${l},${y6} L ${x1},${y4} L ${x1},${y5} ${shapeArc(l, hR, w, hR, swAngDg, (swAngDg + swAng2Dg), false).replace('M', 'L')} ${shapeArc(l, hR, w, hR, 0, -cd4, false).replace('M', 'L')} ${shapeArc(l, y3, w, hR, c3d4, (c3d4 + cd4), false).replace('M', 'L')}`\n }\n break\n case 'curvedRightArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 50000 * RATIO_EMUs_Points\n let adj3 = 25000 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const hd2 = h / 2,\n r = w,\n b = h,\n l = 0,\n cd2 = 180,\n cd4 = 90,\n c3d4 = 270\n const ss = Math.min(w, h)\n const maxAdj2 = cnstVal1 * h / ss\n const a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2\n const a1 = (adj1 < 0) ? 0 : (adj1 > a2) ? a2 : adj1\n const th = ss * a1 / cnstVal2\n const aw = ss * a2 / cnstVal2\n const q1 = (th + aw) / 4\n const hR = hd2 - q1\n const q7 = hR * 2\n const q11 = Math.sqrt(q7 * q7 - th * th)\n const iDx = q11 * w / q7\n const maxAdj3 = cnstVal2 * iDx / ss\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const ah = ss * a3 / cnstVal2\n const y3 = hR + th\n const q5 = Math.sqrt(w * w - ah * ah)\n const dy = q5 * hR / w\n const y5 = hR + dy\n const y7 = y3 + dy\n const dh = (aw - th) / 2\n const y4 = y5 - dh\n const y8 = y7 + dh\n const y6 = b - (aw / 2)\n const x1 = r - ah\n const swAng = Math.atan(dy / ah)\n const stAng = Math.PI - swAng\n const mswAng = -swAng\n const dang2 = Math.atan((th / 2) / iDx)\n const swAng2 = dang2 - Math.PI / 2\n const stAngDg = stAng * 180 / Math.PI\n const mswAngDg = mswAng * 180 / Math.PI\n const swAngDg = swAng * 180 / Math.PI\n const swAng2dg = swAng2 * 180 / Math.PI\n pathData = `M ${l},${hR} ${shapeArc(w, hR, w, hR, cd2, cd2 + mswAngDg, false).replace('M', 'L')} L ${x1},${y5} L ${x1},${y4} L ${r},${y6} L ${x1},${y8} L ${x1},${y7} ${shapeArc(w, y3, w, hR, stAngDg, stAngDg + swAngDg, false).replace('M', 'L')} L ${l},${hR} ${shapeArc(w, hR, w, hR, cd2, cd2 + cd4, false).replace('M', 'L')} L ${r},${th} ${shapeArc(w, y3, w, hR, c3d4, c3d4 + swAng2dg, false).replace('M', 'L')}`\n }\n break\n case 'curvedUpArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 25000 * RATIO_EMUs_Points\n let adj2 = 50000 * RATIO_EMUs_Points\n let adj3 = 25000 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const wd2 = w / 2,\n r = w,\n b = h,\n t = 0,\n cd2 = 180,\n cd4 = 90\n const ss = Math.min(w, h)\n const maxAdj2 = cnstVal1 * w / ss\n const a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal2) ? cnstVal2 : adj1\n const th = ss * a1 / cnstVal2\n const aw = ss * a2 / cnstVal2\n const q1 = (th + aw) / 4\n const wR = wd2 - q1\n const q7 = wR * 2\n const q11 = Math.sqrt(q7 * q7 - th * th)\n const idy = q11 * h / q7\n const maxAdj3 = cnstVal2 * idy / ss\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const ah = ss * a3 / cnstVal2\n const x3 = wR + th\n const q5 = Math.sqrt(h * h - ah * ah)\n const dx = q5 * wR / h\n const x5 = wR + dx\n const x7 = x3 + dx\n const dh = (aw - th) / 2\n const x4 = x5 - dh\n const x8 = x7 + dh\n const x6 = r - (aw / 2)\n const y1 = t + ah\n const swAng = Math.atan(dx / ah)\n const dang2 = Math.atan((th / 2) / idy)\n const swAng2 = dang2 - swAng\n const stAng3 = Math.PI / 2 - swAng\n const stAng2 = Math.PI / 2 - dang2\n const stAng2dg = stAng2 * 180 / Math.PI\n const swAng2dg = swAng2 * 180 / Math.PI\n const stAng3dg = stAng3 * 180 / Math.PI\n const swAngDg = swAng * 180 / Math.PI\n pathData = `${shapeArc(wR, 0, wR, h, stAng2dg, stAng2dg + swAng2dg, false)} L ${x5},${y1} L ${x4},${y1} L ${x6},${t} L ${x8},${y1} L ${x7},${y1} ${shapeArc(x3, 0, wR, h, stAng3dg, stAng3dg + swAngDg, false).replace('M', 'L')} L ${wR},${b} ${shapeArc(wR, 0, wR, h, cd4, cd2, false).replace('M', 'L')} L ${th},${t} ${shapeArc(x3, 0, wR, h, cd2, cd4, false).replace('M', 'L')}`\n }\n break\n case 'mathDivide':\n case 'mathEqual':\n case 'mathMinus':\n case 'mathMultiply':\n case 'mathNotEqual':\n case 'mathPlus':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1, adj2, adj3\n if (shapAdjst_ary) {\n if (Array.isArray(shapAdjst_ary)) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4))\n }\n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4))\n }\n else if (sAdj_name === 'adj3') {\n adj3 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4))\n }\n }\n } \n else {\n adj1 = parseInt(getTextByPathList(shapAdjst_ary, ['attrs', 'fmla']).substring(4))\n }\n }\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const cnstVal3 = 200000 * RATIO_EMUs_Points\n const hc = w / 2,\n vc = h / 2,\n hd2 = h / 2\n if (shapType === 'mathNotEqual') {\n if (adj1 === undefined) adj1 = 23520\n if (adj2 === undefined) adj2 = 110 * 60000\n if (adj3 === undefined) adj3 = 11760\n adj1 *= RATIO_EMUs_Points\n adj2 = (adj2 / 60000) * Math.PI / 180\n adj3 *= RATIO_EMUs_Points\n const angVal1 = 70 * Math.PI / 180,\n angVal2 = 110 * Math.PI / 180\n const cnstVal4 = 73490 * RATIO_EMUs_Points\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal1) ? cnstVal1 : adj1\n const crAng = (adj2 < angVal1) ? angVal1 : (adj2 > angVal2) ? angVal2 : adj2\n const maxAdj3 = cnstVal2 - (a1 * 2)\n const a3 = (adj3 < 0) ? 0 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const dy1 = h * a1 / cnstVal2\n const dy2 = h * a3 / cnstVal3\n const dx1 = w * cnstVal4 / cnstVal3\n const x1 = hc - dx1\n const x8 = hc + dx1\n const y2 = vc - dy2\n const y3 = vc + dy2\n const y1 = y2 - dy1\n const y4 = y3 + dy1\n const cadj2 = crAng - Math.PI / 2\n const xadj2 = hd2 * Math.tan(cadj2)\n const len = Math.sqrt(xadj2 * xadj2 + hd2 * hd2)\n const bhw = len * dy1 / hd2\n const bhw2 = bhw / 2\n const x7 = hc + xadj2 - bhw2\n const dx67 = xadj2 * y1 / hd2\n const x6 = x7 - dx67\n const dx57 = xadj2 * y2 / hd2\n const x5 = x7 - dx57\n const dx47 = xadj2 * y3 / hd2\n const x4 = x7 - dx47\n const dx37 = xadj2 * y4 / hd2\n const x3 = x7 - dx37\n const rx6 = x6 + bhw\n const rx5 = x5 + bhw\n const rx4 = x4 + bhw\n const rx3 = x3 + bhw\n const dx7 = dy1 * hd2 / len\n const rxt = x7 + dx7\n const lxt = (x7 + bhw) - dx7\n const rx = (cadj2 > 0) ? rxt : (x7 + bhw)\n const lx = (cadj2 > 0) ? x7 : lxt\n const dy3 = dy1 * xadj2 / len\n const ry = (cadj2 > 0) ? dy3 : 0\n const ly = (cadj2 > 0) ? 0 : -dy3\n const dlx = w - rx\n const drx = w - lx\n const dly = h - ry\n const dry = h - ly\n pathData = `M ${x1},${y1} L ${x6},${y1} L ${lx},${ly} L ${rx},${ry} L ${rx6},${y1} L ${x8},${y1} L ${x8},${y2} L ${rx5},${y2} L ${rx4},${y3} L ${x8},${y3} L ${x8},${y4} L ${rx3},${y4} L ${drx},${dry} L ${dlx},${dly} L ${x3},${y4} L ${x1},${y4} L ${x1},${y3} L ${x4},${y3} L ${x5},${y2} L ${x1},${y2} z`\n } \n else if (shapType === 'mathDivide') {\n if (adj1 === undefined) adj1 = 23520\n if (adj2 === undefined) adj2 = 5880\n if (adj3 === undefined) adj3 = 11760\n adj1 *= RATIO_EMUs_Points\n adj2 *= RATIO_EMUs_Points\n adj3 *= RATIO_EMUs_Points\n const cnstVal4 = 1000 * RATIO_EMUs_Points\n const cnstVal5 = 36745 * RATIO_EMUs_Points\n const cnstVal6 = 73490 * RATIO_EMUs_Points\n const a1 = (adj1 < cnstVal4) ? cnstVal4 : (adj1 > cnstVal5) ? cnstVal5 : adj1\n const ma3h = (cnstVal6 - a1) / 4\n const ma3w = cnstVal5 * w / h\n const maxAdj3 = (ma3h < ma3w) ? ma3h : ma3w\n const a3 = (adj3 < cnstVal4) ? cnstVal4 : (adj3 > maxAdj3) ? maxAdj3 : adj3\n const maxAdj2 = cnstVal6 - (4 * a3) - a1\n const a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2\n const dy1 = h * a1 / cnstVal3\n const yg = h * a2 / cnstVal2\n const rad = h * a3 / cnstVal2\n const dx1 = w * cnstVal6 / cnstVal3\n const y3 = vc - dy1\n const y4 = vc + dy1\n const y2 = y3 - (yg + rad)\n const y1 = y2 - rad\n const y5 = h - y1\n const x1 = hc - dx1\n const x3 = hc + dx1\n pathData = `M ${hc},${y1} A ${rad},${rad} 0 1,0 ${hc},${y1 + 2 * rad} A ${rad},${rad} 0 1,0 ${hc},${y1} z M ${hc},${y5} A ${rad},${rad} 0 1,1 ${hc},${y5 - 2 * rad} A ${rad},${rad} 0 1,1 ${hc},${y5} z M ${x1},${y3} L ${x3},${y3} L ${x3},${y4} L ${x1},${y4} z`\n } \n else if (shapType === 'mathEqual') {\n if (adj1 === undefined) adj1 = 23520\n if (adj2 === undefined) adj2 = 11760\n adj1 *= RATIO_EMUs_Points\n adj2 *= RATIO_EMUs_Points\n const cnstVal5 = 36745 * RATIO_EMUs_Points\n const cnstVal6 = 73490 * RATIO_EMUs_Points\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal5) ? cnstVal5 : adj1\n const mAdj2 = cnstVal2 - (a1 * 2)\n const a2 = (adj2 < 0) ? 0 : (adj2 > mAdj2) ? mAdj2 : adj2\n const dy1 = h * a1 / cnstVal2\n const dy2 = h * a2 / cnstVal3\n const dx1 = w * cnstVal6 / cnstVal3\n const y2 = vc - dy2\n const y3 = vc + dy2\n const y1 = y2 - dy1\n const y4 = y3 + dy1\n const x1 = hc - dx1\n const x2 = hc + dx1\n pathData = `M ${x1},${y1} L ${x2},${y1} L ${x2},${y2} L ${x1},${y2} z M ${x1},${y3} L ${x2},${y3} L ${x2},${y4} L ${x1},${y4} z`\n } \n else if (shapType === 'mathMinus') {\n if (adj1 === undefined) adj1 = 23520\n adj1 *= RATIO_EMUs_Points\n const cnstVal6 = 73490 * RATIO_EMUs_Points\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal2) ? cnstVal2 : adj1\n const dy1 = h * a1 / cnstVal3\n const dx1 = w * cnstVal6 / cnstVal3\n const y1 = vc - dy1\n const y2 = vc + dy1\n const x1 = hc - dx1\n const x2 = hc + dx1\n pathData = `M ${x1},${y1} L ${x2},${y1} L ${x2},${y2} L ${x1},${y2} z`\n } \n else if (shapType === 'mathMultiply') {\n if (adj1 === undefined) adj1 = 23520\n adj1 *= RATIO_EMUs_Points\n const cnstVal6 = 51965 * RATIO_EMUs_Points\n const ss = Math.min(w, h)\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal6) ? cnstVal6 : adj1\n const th = ss * a1 / cnstVal2\n const a = Math.atan(h / w)\n const sa = Math.sin(a)\n const ca = Math.cos(a)\n const ta = Math.tan(a)\n const dl = Math.sqrt(w * w + h * h)\n const lM = dl - (dl * cnstVal6 / cnstVal2)\n const xM = ca * lM / 2\n const yM = sa * lM / 2\n const dxAM = sa * th / 2\n const dyAM = ca * th / 2\n const xA = xM - dxAM\n const yA = yM + dyAM\n const xB = xM + dxAM\n const yB = yM - dyAM\n const yC = (hc - xB) * ta + yB\n const xD = w - xB\n const xE = w - xA\n const xF = xE - ((vc - yA) / ta)\n const xL = xA + ((vc - yA) / ta)\n const yG = h - yA\n const yH = h - yB\n const yI = h - yC\n pathData = `M ${xA},${yA} L ${xB},${yB} L ${hc},${yC} L ${xD},${yB} L ${xE},${yA} L ${xF},${vc} L ${xE},${yG} L ${xD},${yH} L ${hc},${yI} L ${xB},${yH} L ${xA},${yG} L ${xL},${vc} z`\n } \n else if (shapType === 'mathPlus') {\n if (adj1 === undefined) adj1 = 23520\n adj1 *= RATIO_EMUs_Points\n const cnstVal6 = 73490 * RATIO_EMUs_Points\n const ss = Math.min(w, h)\n const a1 = (adj1 < 0) ? 0 : (adj1 > cnstVal6) ? cnstVal6 : adj1\n const dx1 = w * cnstVal6 / cnstVal3\n const dy1 = h * cnstVal6 / cnstVal3\n const dx2 = ss * a1 / cnstVal3\n const x1 = hc - dx1\n const x2 = hc - dx2\n const x3 = hc + dx2\n const x4 = hc + dx1\n const y1 = vc - dy1\n const y2 = vc - dx2\n const y3 = vc + dx2\n const y4 = vc + dy1\n pathData = `M ${x1},${y2} L ${x2},${y2} L ${x2},${y1} L ${x3},${y1} L ${x3},${y2} L ${x4},${y2} L ${x4},${y3} L ${x3},${y3} L ${x3},${y4} L ${x2},${y4} L ${x2},${y3} L ${x1},${y3} z`\n }\n }\n break\n case 'can':\n case 'flowChartMagneticDisk':\n case 'flowChartMagneticDrum':\n {\n const shapAdjst = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd', 'attrs', 'fmla'])\n let adj = 25000 * RATIO_EMUs_Points\n const cnstVal1 = 50000 * RATIO_EMUs_Points\n const cnstVal2 = 200000 * RATIO_EMUs_Points\n if (shapAdjst) {\n adj = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n }\n if (shapType === 'flowChartMagneticDisk' || shapType === 'flowChartMagneticDrum') {\n adj = 50000 * RATIO_EMUs_Points\n }\n const ss = Math.min(w, h)\n const maxAdj = cnstVal1 * h / ss\n const a = (adj < 0) ? 0 : (adj > maxAdj) ? maxAdj : adj\n const y1 = ss * a / cnstVal2\n const y3 = h - y1\n const cd2 = 180,\n wd2 = w / 2\n let dVal = `${shapeArc(wd2, y1, wd2, y1, 0, cd2, false)} ${shapeArc(wd2, y1, wd2, y1, cd2, cd2 + cd2, false).replace('M', 'L')} L ${w},${y3} ${shapeArc(wd2, y3, wd2, y1, 0, cd2, false).replace('M', 'L')} L 0,${y1}`\n\n if (shapType === 'flowChartMagneticDrum') {\n dVal = dVal.replace(/([MLQC])\\s*([-\\d.e]+)\\s*([-\\d.e]+)/gi, (match, command, x, y) => {\n const newX = w / 2 - (parseFloat(y) - h / 2)\n const newY = h / 2 + (parseFloat(x) - w / 2)\n return `${command}${newX} ${newY}`\n }).replace(/([MLQC])\\s*([-\\d.e]+)\\s*([-\\d.e]+)\\s*([-\\d.e]+)\\s*([-\\d.e]+)/gi, (match, command, c1x, c1y, x, y) => {\n const newC1X = w / 2 - (parseFloat(c1y) - h / 2)\n const newC1Y = h / 2 + (parseFloat(c1x) - w / 2)\n const newX = w / 2 - (parseFloat(y) - h / 2)\n const newY = h / 2 + (parseFloat(x) - w / 2)\n return `${command}${newC1X} ${newC1Y} ${newX} ${newY}`\n })\n }\n pathData = dVal\n }\n break\n case 'swooshArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n const refr = RATIO_EMUs_Points\n let adj1 = 25000 * refr\n let adj2 = 16667 * refr\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n } \n else if (sAdj_name === 'adj2') {\n adj2 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * refr\n }\n }\n }\n const cnstVal1 = 1 * refr\n const cnstVal2 = 70000 * refr\n const cnstVal3 = 75000 * refr\n const cnstVal4 = 100000 * refr\n const ss = Math.min(w, h)\n const ssd8 = ss / 8\n const hd6 = h / 6\n const a1 = (adj1 < cnstVal1) ? cnstVal1 : (adj1 > cnstVal3) ? cnstVal3 : adj1\n const maxAdj2 = cnstVal2 * w / ss\n const a2 = (adj2 < 0) ? 0 : (adj2 > maxAdj2) ? maxAdj2 : adj2\n const ad1 = h * a1 / cnstVal4\n const ad2 = ss * a2 / cnstVal4\n const xB = w - ad2\n const yB = ssd8\n const alfa = (Math.PI / 2) / 14\n const dx0 = ssd8 * Math.tan(alfa)\n const xC = xB - dx0\n const dx1 = ad1 * Math.tan(alfa)\n const yF = yB + ad1\n const xF = xB + dx1\n const xE = xF + dx0\n const yE = yF + ssd8\n const dy22 = yE / 2\n const dy3 = h / 20\n const yD = dy22 - dy3\n const yP1 = hd6 + (hd6)\n const xP1 = w / 6\n const yP2 = yF + (hd6 / 2)\n const xP2 = w / 4\n pathData = `M 0,${h} Q ${xP1},${yP1} ${xB},${yB} L ${xC},0 L ${w},${yD} L ${xE},${yE} L ${xF},${yF} Q ${xP2},${yP2} 0,${h} z`\n }\n break\n case 'circularArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 12500 * RATIO_EMUs_Points\n let adj2 = (1142319 / 60000) * Math.PI / 180\n let adj3 = (20457681 / 60000) * Math.PI / 180\n let adj4 = (10800000 / 60000) * Math.PI / 180\n let adj5 = 12500 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj2') {\n adj2 = (parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 60000) * Math.PI / 180\n }\n else if (sAdj_name === 'adj3') {\n adj3 = (parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 60000) * Math.PI / 180\n }\n else if (sAdj_name === 'adj4') {\n adj4 = (parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 60000) * Math.PI / 180\n }\n else if (sAdj_name === 'adj5') {\n adj5 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const hc = w / 2,\n vc = h / 2,\n wd2 = w / 2,\n hd2 = h / 2\n const ss = Math.min(w, h)\n const cnstVal1 = 25000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const rdAngVal1 = (1 / 60000) * Math.PI / 180\n const rdAngVal2 = (21599999 / 60000) * Math.PI / 180\n const rdAngVal3 = 2 * Math.PI\n const a5 = (adj5 < 0) ? 0 : (adj5 > cnstVal1) ? cnstVal1 : adj5\n const maxAdj1 = a5 * 2\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const enAng = (adj3 < rdAngVal1) ? rdAngVal1 : (adj3 > rdAngVal2) ? rdAngVal2 : adj3\n const stAng = (adj4 < 0) ? 0 : (adj4 > rdAngVal2) ? rdAngVal2 : adj4\n const th = ss * a1 / cnstVal2\n const thh = ss * a5 / cnstVal2\n const th2 = th / 2\n const rw1 = wd2 + th2 - thh\n const rh1 = hd2 + th2 - thh\n const rw2 = rw1 - th\n const rh2 = rh1 - th\n const rw3 = rw2 + th2\n const rh3 = rh2 + th2\n const wtH = rw3 * Math.sin(enAng)\n const htH = rh3 * Math.cos(enAng)\n const dxH = rw3 * Math.cos(Math.atan2(wtH, htH))\n const dyH = rh3 * Math.sin(Math.atan2(wtH, htH))\n const xH = hc + dxH\n const yH = vc + dyH\n const rI = Math.min(rw2, rh2)\n const u8 = 1 - (((dxH * dxH - rI * rI) * (dyH * dyH - rI * rI)) / (dxH * dxH * dyH * dyH))\n const u9 = Math.sqrt(u8)\n const u12 = (1 + u9) / (((dxH * dxH - rI * rI) / dxH) / dyH)\n const u15 = Math.atan2(u12, 1) > 0 ? Math.atan2(u12, 1) : Math.atan2(u12, 1) + rdAngVal3\n const u18 = (u15 - enAng > 0) ? u15 - enAng : u15 - enAng + rdAngVal3\n const u21 = (u18 - Math.PI > 0) ? u18 - rdAngVal3 : u18\n const maxAng = Math.abs(u21)\n const aAng = (adj2 < 0) ? 0 : (adj2 > maxAng) ? maxAng : adj2\n const ptAng = enAng + aAng\n const wtA = rw3 * Math.sin(ptAng)\n const htA = rh3 * Math.cos(ptAng)\n const dxA = rw3 * Math.cos(Math.atan2(wtA, htA))\n const dyA = rh3 * Math.sin(Math.atan2(wtA, htA))\n const xA = hc + dxA\n const yA = vc + dyA\n const dxG = thh * Math.cos(ptAng)\n const dyG = thh * Math.sin(ptAng)\n const xG = xH + dxG\n const yG = yH + dyG\n const dxB = thh * Math.cos(ptAng)\n const dyB = thh * Math.sin(ptAng)\n const xB = xH - dxB\n const yB = yH - dyB\n const sx1 = xB - hc\n const sy1 = yB - vc\n const sx2 = xG - hc\n const sy2 = yG - vc\n const rO = Math.min(rw1, rh1)\n const x1O = sx1 * rO / rw1\n const y1O = sy1 * rO / rh1\n const x2O = sx2 * rO / rw1\n const y2O = sy2 * rO / rh1\n const dxO = x2O - x1O\n const dyO = y2O - y1O\n const dO = Math.sqrt(dxO * dxO + dyO * dyO)\n const DO = x1O * y2O - x2O * y1O\n const sdelO = Math.sqrt(Math.max(0, rO * rO * dO * dO - DO * DO))\n const sdyO = (dyO * -1 > 0) ? -1 : 1\n const dxF1 = (DO * dyO + sdyO * dxO * sdelO) / (dO * dO)\n const dxF2 = (DO * dyO - sdyO * dxO * sdelO) / (dO * dO)\n const dyF1 = (-DO * dxO + Math.abs(dyO) * sdelO) / (dO * dO)\n const dyF2 = (-DO * dxO - Math.abs(dyO) * sdelO) / (dO * dO)\n const q22 = Math.sqrt((x2O - dxF2) ** 2 + (y2O - dyF2) ** 2) - Math.sqrt((x2O - dxF1) ** 2 + (y2O - dyF1) ** 2)\n const dxF = (q22 > 0) ? dxF1 : dxF2\n const dyF = (q22 > 0) ? dyF1 : dyF2\n const xF = hc + (dxF * rw1 / rO)\n const yF = vc + (dyF * rh1 / rO)\n const x1I = sx1 * rI / rw2\n const y1I = sy1 * rI / rh2\n const x2I = sx2 * rI / rw2\n const y2I = sy2 * rI / rh2\n const dxI = x2I - x1I\n const dyI = y2I - y1I\n const dI = Math.sqrt(dxI * dxI + dyI * dyI)\n const DI = x1I * y2I - x2I * y1I\n const sdelI = Math.sqrt(Math.max(0, rI * rI * dI * dI - DI * DI))\n const dxC1 = (DI * dyI + sdyO * dxI * sdelI) / (dI * dI)\n const dxC2 = (DI * dyI - sdyO * dxI * sdelI) / (dI * dI)\n const dyC1 = (-DI * dxI + Math.abs(dyI) * sdelI) / (dI * dI)\n const dyC2 = (-DI * dxI - Math.abs(dyI) * sdelI) / (dI * dI)\n const v22 = Math.sqrt((x1I - dxC2) ** 2 + (y1I - dyC2) ** 2) - Math.sqrt((x1I - dxC1) ** 2 + (y1I - dyC1) ** 2)\n const dxC = (v22 > 0) ? dxC1 : dxC2\n const dyC = (v22 > 0) ? dyC1 : dyC2\n const xC = hc + (dxC * rw2 / rI)\n const yC = vc + (dyC * rh2 / rI)\n const ist0 = Math.atan2(dyC * rh2 / rI, dxC * rw2 / rI)\n const istAng = (ist0 > 0) ? ist0 : ist0 + rdAngVal3\n const isw1 = stAng - istAng\n const iswAng = (isw1 > 0) ? isw1 - rdAngVal3 : isw1\n const p5 = Math.sqrt((xF - xC) ** 2 + (yF - yC) ** 2) / 2 - thh\n const xGp = (p5 > 0) ? xF : xG\n const yGp = (p5 > 0) ? yF : yG\n const xBp = (p5 > 0) ? xC : xB\n const yBp = (p5 > 0) ? yC : yB\n const en0 = Math.atan2((yF - vc), (xF - hc))\n const en2 = (en0 > 0) ? en0 : en0 + rdAngVal3\n const sw0 = en2 - stAng\n const swAng = (sw0 > 0) ? sw0 : sw0 + rdAngVal3\n const strtAng = stAng * 180 / Math.PI\n const endAngVal = strtAng + (swAng * 180 / Math.PI)\n const stiAng = istAng * 180 / Math.PI\n const ediAng = stiAng + (iswAng * 180 / Math.PI)\n pathData = `${shapeArc(w / 2, h / 2, rw1, rh1, strtAng, endAngVal, false)} L ${xGp},${yGp} L ${xA},${yA} L ${xBp},${yBp} L ${xC},${yC} ${shapeArc(w / 2, h / 2, rw2, rh2, stiAng, ediAng, false).replace('M', 'L')} z`\n }\n break\n case 'leftCircularArrow':\n {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n let adj1 = 12500 * RATIO_EMUs_Points\n let adj2 = (-1142319 / 60000) * Math.PI / 180\n let adj3 = (1142319 / 60000) * Math.PI / 180\n let adj4 = (10800000 / 60000) * Math.PI / 180\n let adj5 = 12500 * RATIO_EMUs_Points\n if (shapAdjst_ary) {\n for (const adj of shapAdjst_ary) {\n const sAdj_name = getTextByPathList(adj, ['attrs', 'name'])\n if (sAdj_name === 'adj1') {\n adj1 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n else if (sAdj_name === 'adj2') {\n adj2 = (parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 60000) * Math.PI / 180\n }\n else if (sAdj_name === 'adj3') {\n adj3 = (parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 60000) * Math.PI / 180\n }\n else if (sAdj_name === 'adj4') {\n adj4 = (parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) / 60000) * Math.PI / 180\n }\n else if (sAdj_name === 'adj5') {\n adj5 = parseInt(getTextByPathList(adj, ['attrs', 'fmla']).substring(4)) * RATIO_EMUs_Points\n }\n }\n }\n const hc = w / 2,\n vc = h / 2,\n wd2 = w / 2,\n hd2 = h / 2\n const ss = Math.min(w, h)\n const cnstVal1 = 25000 * RATIO_EMUs_Points\n const cnstVal2 = 100000 * RATIO_EMUs_Points\n const rdAngVal1 = (1 / 60000) * Math.PI / 180\n const rdAngVal2 = (21599999 / 60000) * Math.PI / 180\n const rdAngVal3 = 2 * Math.PI\n const a5 = (adj5 < 0) ? 0 : (adj5 > cnstVal1) ? cnstVal1 : adj5\n const maxAdj1 = a5 * 2\n const a1 = (adj1 < 0) ? 0 : (adj1 > maxAdj1) ? maxAdj1 : adj1\n const enAng = (adj3 < rdAngVal1) ? rdAngVal1 : (adj3 > rdAngVal2) ? rdAngVal2 : adj3\n const stAng = (adj4 < 0) ? 0 : (adj4 > rdAngVal2) ? rdAngVal2 : adj4\n const th = ss * a1 / cnstVal2\n const thh = ss * a5 / cnstVal2\n const th2 = th / 2\n const rw1 = wd2 + th2 - thh\n const rh1 = hd2 + th2 - thh\n const rw2 = rw1 - th\n const rh2 = rh1 - th\n const rw3 = rw2 + th2\n const rh3 = rh2 + th2\n const dxH = rw3 * Math.cos(enAng)\n const dyH = rh3 * Math.sin(enAng)\n const xH = hc + dxH\n const yH = vc + dyH\n const rI = Math.min(rw2, rh2)\n const u8 = 1 - (((dxH * dxH - rI * rI) * (dyH * dyH - rI * rI)) / (dxH * dxH * dyH * dyH))\n const u9 = Math.sqrt(u8)\n const u12 = (1 + u9) / (((dxH * dxH - rI * rI) / dxH) / dyH)\n const u15 = Math.atan2(u12, 1) > 0 ? Math.atan2(u12, 1) : Math.atan2(u12, 1) + rdAngVal3\n const u18 = (u15 - enAng > 0) ? u15 - enAng : u15 - enAng + rdAngVal3\n const u21 = (u18 - Math.PI > 0) ? u18 - rdAngVal3 : u18\n const minAng = -Math.abs(u21)\n const aAng = (adj2 < minAng) ? minAng : (adj2 > 0) ? 0 : adj2\n const ptAng = enAng + aAng\n const dxA = rw3 * Math.cos(ptAng)\n const dyA = rh3 * Math.sin(ptAng)\n const xA = hc + dxA\n const yA = vc + dyA\n const dxE = rw1 * Math.cos(stAng)\n const dyE = rh1 * Math.sin(stAng)\n const xE = hc + dxE\n const yE = vc + dyE\n const dxD = rw2 * Math.cos(stAng)\n const dyD = rh2 * Math.sin(stAng)\n const xD = hc + dxD\n const yD = vc + dyD\n const dxG = thh * Math.cos(ptAng)\n const dyG = thh * Math.sin(ptAng)\n const xG = xH + dxG\n const yG = yH + dyG\n const dxB = thh * Math.cos(ptAng)\n const dyB = thh * Math.sin(ptAng)\n const xB = xH - dxB\n const yB = yH - dyB\n const sx1 = xB - hc\n const sy1 = yB - vc\n const sx2 = xG - hc\n const sy2 = yG - vc\n const rO = Math.min(rw1, rh1)\n const x1O = sx1 * rO / rw1\n const y1O = sy1 * rO / rh1\n const x2O = sx2 * rO / rw1\n const y2O = sy2 * rO / rh1\n const dxO = x2O - x1O\n const dyO = y2O - y1O\n const dO = Math.sqrt(dxO * dxO + dyO * dyO)\n const DO = x1O * y2O - x2O * y1O\n const sdelO = Math.sqrt(Math.max(0, rO * rO * dO * dO - DO * DO))\n const sdyO = (dyO * -1 > 0) ? -1 : 1\n const dxF1 = (DO * dyO + sdyO * dxO * sdelO) / (dO * dO)\n const dxF2 = (DO * dyO - sdyO * dxO * sdelO) / (dO * dO)\n const dyF1 = (-DO * dxO + Math.abs(dyO) * sdelO) / (dO * dO)\n const dyF2 = (-DO * dxO - Math.abs(dyO) * sdelO) / (dO * dO)\n const q22 = Math.sqrt((x2O - dxF2) ** 2 + (y2O - dyF2) ** 2) - Math.sqrt((x2O - dxF1) ** 2 + (y2O - dyF1) ** 2)\n const dxF = (q22 > 0) ? dxF1 : dxF2\n const dyF = (q22 > 0) ? dyF1 : dyF2\n const xF = hc + (dxF * rw1 / rO)\n const yF = vc + (dyF * rh1 / rO)\n const x1I = sx1 * rI / rw2\n const y1I = sy1 * rI / rh2\n const x2I = sx2 * rI / rw2\n const y2I = sy2 * rI / rh2\n const dxI = x2I - x1I\n const dyI = y2I - y1I\n const dI = Math.sqrt(dxI * dxI + dyI * dyI)\n const DI = x1I * y2I - x2I * y1I\n const sdelI = Math.sqrt(Math.max(0, rI * rI * dI * dI - DI * DI))\n const dxC1 = (DI * dyI + sdyO * dxI * sdelI) / (dI * dI)\n const dxC2 = (DI * dyI - sdyO * dxI * sdelI) / (dI * dI)\n const dyC1 = (-DI * dxI + Math.abs(dyI) * sdelI) / (dI * dI)\n const dyC2 = (-DI * dxI - Math.abs(dyI) * sdelI) / (dI * dI)\n const v22 = Math.sqrt((x1I - dxC2) ** 2 + (y1I - dyC2) ** 2) - Math.sqrt((x1I - dxC1) ** 2 + (y1I - dyC1) ** 2)\n const dxC = (v22 > 0) ? dxC1 : dxC2\n const dyC = (v22 > 0) ? dyC1 : dyC2\n const xC = hc + (dxC * rw2 / rI)\n const yC = vc + (dyC * rh2 / rI)\n const ist0 = Math.atan2(dyC * rh2 / rI, dxC * rw2 / rI)\n const istAng0 = (ist0 > 0) ? ist0 : ist0 + rdAngVal3\n const isw1 = stAng - istAng0\n const iswAng0 = (isw1 > 0) ? isw1 : isw1 + rdAngVal3\n const istAng = istAng0 + iswAng0\n const iswAng = -iswAng0\n const p5 = Math.sqrt((xF - xC) ** 2 + (yF - yC) ** 2) / 2 - thh\n const xGp = (p5 > 0) ? xF : xG\n const yGp = (p5 > 0) ? yF : yG\n const xBp = (p5 > 0) ? xC : xB\n const yBp = (p5 > 0) ? yC : yB\n const en0 = Math.atan2((yF - vc), (xF - hc))\n const en2 = (en0 > 0) ? en0 : en0 + rdAngVal3\n const sw0 = en2 - stAng\n const swAng = (sw0 > 0) ? sw0 - rdAngVal3 : sw0\n const stAng0 = stAng + swAng\n const strtAng = stAng0 * 180 / Math.PI\n const endAngVal = stAng * 180 / Math.PI\n const stiAng = istAng * 180 / Math.PI\n const ediAng = stiAng + (iswAng * 180 / Math.PI)\n pathData = `M ${xE},${yE} L ${xD},${yD} ${shapeArc(w / 2, h / 2, rw2, rh2, stiAng, ediAng, false).replace('M', 'L')} L ${xBp},${yBp} L ${xA},${yA} L ${xGp},${yGp} L ${xF},${yF} ${shapeArc(w / 2, h / 2, rw1, rh1, strtAng, endAngVal, false).replace('M', 'L')} z`\n }\n break\n case 'leftRightCircularArrow':\n case 'chartPlus':\n case 'chartStar':\n case 'chartX':\n case 'cornerTabs':\n case 'flowChartOfflineStorage':\n case 'folderCorner':\n case 'funnel':\n case 'lineInv':\n case 'nonIsoscelesTrapezoid':\n case 'plaqueTabs':\n case 'squareTabs':\n case 'upDownArrowCallout':\n pathData = `M 0 0 L ${w} 0 L ${w} ${h} L 0 ${h} Z`\n break\n default:\n pathData = `M 0 0 L ${w} 0 L ${w} ${h} L 0 ${h} Z`\n }\n\n return pathData\n}\n","import { getTextByPathList } from './utils'\n\nexport function findTransitionNode(content, rootElement) {\n if (!content || !rootElement) return null\n\n const path1 = [rootElement, 'p:transition']\n let transitionNode = getTextByPathList(content, path1)\n if (transitionNode) return transitionNode\n\n const path2 = [rootElement, 'mc:AlternateContent', 'mc:Choice', 'p:transition']\n transitionNode = getTextByPathList(content, path2)\n if (transitionNode) return transitionNode\n\n const path3 = [rootElement, 'mc:AlternateContent', 'mc:Fallback', 'p:transition']\n transitionNode = getTextByPathList(content, path3)\n \n return transitionNode\n}\n\nexport function parseTransition(transitionNode) {\n if (!transitionNode) return null\n\n const transition = {\n type: 'none',\n duration: 1000,\n direction: null,\n }\n\n const attrs = transitionNode.attrs || {}\n\n let durationFound = false\n const durRegex = /^p\\d{2}:dur$/ \n for (const key in attrs) {\n if (durRegex.test(key) && !isNaN(parseInt(attrs[key], 10))) {\n transition.duration = parseInt(attrs[key], 10)\n durationFound = true\n break\n }\n }\n\n if (!durationFound && attrs.spd) {\n switch (attrs.spd) {\n case 'slow':\n transition.duration = 1000\n break\n case 'med':\n transition.duration = 800\n break\n case 'fast':\n transition.duration = 500\n break\n default:\n transition.duration = 1000\n break\n }\n }\n\n if (attrs.advClick === '0' && attrs.advTm) {\n transition.autoNextAfter = parseInt(attrs.advTm, 10)\n }\n\n const effectRegex = /^(p|p\\d{2}):/ \n for (const key in transitionNode) {\n if (key !== 'attrs' && effectRegex.test(key)) {\n const effectNode = transitionNode[key]\n transition.type = key.substring(key.indexOf(':') + 1)\n\n if (effectNode && effectNode.attrs) {\n const effectAttrs = effectNode.attrs\n \n if (effectAttrs.dur && !isNaN(parseInt(effectAttrs.dur, 10))) {\n if (!durationFound) transition.duration = parseInt(effectAttrs.dur, 10)\n }\n if (effectAttrs.dir) transition.direction = effectAttrs.dir\n }\n break\n }\n }\n\n return transition\n}\n\nconst PRESET_CLASSES = new Set(['entr', 'exit', 'emph', 'path', 'verb', 'mediacall'])\n\nconst NODE_TYPE_TO_TRIGGER = {\n clickEffect: 'onClick',\n withEffect: 'withPrevious',\n afterEffect: 'afterPrevious',\n clickPar: 'onClick',\n withGroup: 'withPrevious',\n afterGroup: 'afterPrevious',\n interactiveSeq: 'onClick',\n}\n\nfunction asArray(value) {\n if (value == null) return []\n return Array.isArray(value) ? value : [value]\n}\n\nfunction parseMs(value) {\n if (value == null || value === '' || value === 'indefinite') return null\n const ms = parseInt(value, 10)\n return Number.isFinite(ms) ? ms : null\n}\n\nfunction findTimingNode(content) {\n if (!content) return null\n return getTextByPathList(content, ['p:sld', 'p:timing'])\n || getTextByPathList(content, ['p:sld', 'mc:AlternateContent', 'mc:Choice', 'p:timing'])\n || getTextByPathList(content, ['p:sld', 'mc:AlternateContent', 'mc:Fallback', 'p:timing'])\n}\n\nfunction collectSpids(node, out = []) {\n if (!node || typeof node !== 'object') return out\n const spid = node.attrs?.spid\n if (spid != null && spid !== '') out.push(String(spid))\n for (const key of Object.keys(node)) {\n if (key === 'attrs' || key === 'value') continue\n for (const child of asArray(node[key])) collectSpids(child, out)\n }\n return out\n}\n\nfunction collectDuration(node) {\n let found = null\n const walk = n => {\n if (!n || typeof n !== 'object') return\n const ms = parseMs(n.attrs?.dur)\n if (ms != null && ms >= 0) found = ms\n for (const key of Object.keys(n)) {\n if (key === 'attrs' || key === 'value') continue\n for (const child of asArray(n[key])) walk(child)\n }\n }\n walk(node)\n return found\n}\n\nfunction collectFilter(node) {\n let filter = ''\n const walk = n => {\n if (!n || typeof n !== 'object') return\n if (n.attrs?.filter) filter = n.attrs.filter\n for (const key of Object.keys(n)) {\n if (key === 'attrs' || key === 'value') continue\n for (const child of asArray(n[key])) walk(child)\n }\n }\n walk(node)\n return filter\n}\n\nfunction collectDelay(node, inherited = 0) {\n const fromAttr = parseMs(node?.attrs?.delay)\n if (fromAttr != null && fromAttr >= 0) return fromAttr\n\n const condRoot = node?.['p:stCondLst']\n for (const cond of asArray(condRoot?.['p:cond'] || condRoot)) {\n const fromCond = parseMs(cond?.attrs?.delay)\n if (fromCond != null && fromCond >= 0) return fromCond\n }\n return inherited\n}\n\nfunction collectEffects(node, inheritedTrigger = 'onClick', inheritedDelay = 0, results = []) {\n if (!node || typeof node !== 'object') return results\n\n const attrs = node.attrs || {}\n const trigger = NODE_TYPE_TO_TRIGGER[attrs.nodeType] || inheritedTrigger\n const delay = collectDelay(node, inheritedDelay)\n\n if (attrs.presetClass && PRESET_CLASSES.has(attrs.presetClass)) {\n const spids = [...new Set(collectSpids(node))]\n const duration = collectDuration(node)\n const filter = collectFilter(node)\n const effectTrigger = NODE_TYPE_TO_TRIGGER[attrs.nodeType] || trigger\n for (const spid of spids) {\n const animation = {\n spid,\n trigger: effectTrigger,\n class: attrs.presetClass,\n presetId: parseInt(attrs.presetID || '0', 10) || 0,\n presetSubtype: parseInt(attrs.presetSubtype || '0', 10) || 0,\n duration: duration != null ? duration : 1000,\n delay,\n }\n if (filter) animation.filter = filter\n results.push(animation)\n }\n return results\n }\n\n for (const key of Object.keys(node)) {\n if (key === 'attrs' || key === 'value') continue\n for (const child of asArray(node[key])) {\n collectEffects(child, trigger, delay, results)\n }\n }\n return results\n}\n\nfunction parseBuildList(timing) {\n const bldLst = timing?.['p:bldLst']\n if (!bldLst) return []\n\n const kinds = [\n ['p:bldP', 'paragraph'],\n ['p:bldDgm', 'diagram'],\n ['p:bldGraphic', 'graphic'],\n ['p:bldOleChart', 'oleChart'],\n ]\n const builds = []\n for (const [tag, type] of kinds) {\n for (const node of asArray(bldLst[tag])) {\n const spid = node?.attrs?.spid\n if (spid == null || spid === '') continue\n const item = { spid: String(spid), type }\n if (node.attrs?.animBg === '1' || node.attrs?.animBg === 'true') item.animBg = true\n builds.push(item)\n }\n }\n return builds\n}\n\n/**\n * Parse `p:timing` click/build animations and `p:bldLst` from a slide part.\n * Effect nodes are `p:cTn` with `presetClass`; `nodeType` may live on an ancestor.\n * Document order is the presenter sequence.\n */\nexport function parseTiming(slideContent) {\n const timing = findTimingNode(slideContent)\n if (!timing) return { animations: [], builds: [] }\n return {\n animations: collectEffects(timing),\n builds: parseBuildList(timing),\n }\n}","import { readXmlFile } from './readXmlFile'\nimport { getTextNodeValue } from './text'\nimport { getTextByPathList } from './utils'\n\nexport async function loadDiagramFile(warpObj, filename, transformDrawing = false) {\n if (!filename) return null\n\n const cacheKey = `${transformDrawing ? 'drawing:' : 'xml:'}${filename}`\n if (warpObj.diagramFileCache[cacheKey]) return warpObj.diagramFileCache[cacheKey]\n\n let content = await readXmlFile(warpObj['zip'], filename)\n if (content && transformDrawing) {\n const contentStr = JSON.stringify(content).replace(/dsp:/g, 'p:')\n content = JSON.parse(contentStr)\n }\n\n warpObj.diagramFileCache[cacheKey] = content\n return content\n}\n\nexport function getDiagramDrawingRelId(dataContent) {\n let extNodes = getTextByPathList(dataContent, ['dgm:dataModel', 'dgm:extLst', 'a:ext'])\n if (!extNodes) return ''\n\n if (!Array.isArray(extNodes)) extNodes = [extNodes]\n for (const extNode of extNodes) {\n const relId = getTextByPathList(extNode, ['dsp:dataModelExt', 'attrs', 'relId'])\n if (relId) return relId\n }\n\n return ''\n}\n\nexport async function getDiagramNodeContext(node, warpObj) {\n const relIds = getTextByPathList(node, ['a:graphic', 'a:graphicData', 'dgm:relIds', 'attrs']) || {}\n const diagramContent = {\n data: null,\n layout: null,\n quickStyle: null,\n colors: null,\n drawing: null,\n }\n let digramFileContent = {}\n const diagramResObj = {}\n\n const diagramDataTarget = getTextByPathList(warpObj['slideResObj'], [relIds['r:dm'], 'target'])\n const diagramLayoutTarget = getTextByPathList(warpObj['slideResObj'], [relIds['r:lo'], 'target'])\n const diagramQuickStyleTarget = getTextByPathList(warpObj['slideResObj'], [relIds['r:qs'], 'target'])\n const diagramColorsTarget = getTextByPathList(warpObj['slideResObj'], [relIds['r:cs'], 'target'])\n\n if (diagramDataTarget) diagramContent.data = await loadDiagramFile(warpObj, diagramDataTarget)\n if (diagramLayoutTarget) diagramContent.layout = await loadDiagramFile(warpObj, diagramLayoutTarget)\n if (diagramQuickStyleTarget) diagramContent.quickStyle = await loadDiagramFile(warpObj, diagramQuickStyleTarget)\n if (diagramColorsTarget) diagramContent.colors = await loadDiagramFile(warpObj, diagramColorsTarget)\n\n const drawingRelId = diagramContent.data ? getDiagramDrawingRelId(diagramContent.data) : ''\n const drawingTarget = getTextByPathList(warpObj['slideResObj'], [drawingRelId, 'target'])\n\n if (drawingTarget) {\n digramFileContent = await loadDiagramFile(warpObj, drawingTarget, true) || {}\n diagramContent.drawing = digramFileContent\n\n const drawingName = drawingTarget.split('/').pop()\n const diagramResFileName = drawingTarget.replace(drawingName, '_rels/' + drawingName) + '.rels'\n const digramResContent = await readXmlFile(warpObj['zip'], diagramResFileName)\n if (digramResContent) {\n let relationshipArray = digramResContent['Relationships']['Relationship']\n if (relationshipArray && relationshipArray.constructor !== Array) relationshipArray = [relationshipArray]\n if (relationshipArray) {\n for (const relationshipArrayItem of relationshipArray) {\n let relTarget = relationshipArrayItem['attrs']['Target']\n relTarget = relTarget.replace(/\\\\/g, '/')\n if (relTarget.indexOf('/ppt/') === 0) relTarget = relTarget.substr(1)\n else if (relTarget.indexOf('../') !== -1) relTarget = relTarget.replace('../', 'ppt/')\n else relTarget = drawingTarget.replace(drawingName, '') + relTarget\n\n diagramResObj[relationshipArrayItem['attrs']['Id']] = {\n type: relationshipArrayItem['attrs']['Type'].replace('http://schemas.openxmlformats.org/officeDocument/2006/relationships/', ''),\n target: relTarget,\n }\n }\n }\n }\n }\n\n return {\n ...warpObj,\n digramFileContent,\n diagramResObj,\n diagramContent,\n }\n}\n\nexport function getSmartArtTextData(dataContent) {\n const result = []\n\n let ptLst = getTextByPathList(dataContent, ['dgm:dataModel', 'dgm:ptLst', 'dgm:pt'])\n\n if (!ptLst) return result\n if (!Array.isArray(ptLst)) ptLst = [ptLst]\n\n for (const pt of ptLst) {\n const textBody = getTextByPathList(pt, ['dgm:t'])\n\n if (textBody) {\n let nodeText = ''\n\n let paragraphs = getTextByPathList(textBody, ['a:p'])\n if (paragraphs) {\n if (!Array.isArray(paragraphs)) paragraphs = [paragraphs]\n\n paragraphs.forEach(p => {\n let runs = getTextByPathList(p, ['a:r'])\n if (runs) {\n if (!Array.isArray(runs)) runs = [runs]\n\n runs.forEach(r => {\n const t = getTextNodeValue(getTextByPathList(r, ['a:t']))\n if (t && typeof t === 'string') nodeText += t\n })\n }\n if (nodeText.length > 0) nodeText += '\\n'\n })\n }\n\n const cleanText = nodeText.trim()\n if (cleanText) {\n result.push(cleanText)\n }\n }\n }\n\n return result\n}\n","import JSZip from 'jszip'\nimport { readXmlFile } from './readXmlFile'\nimport { getBorder } from './border'\nimport { getSlideBackgroundFill, getShapeFill, getSolidFill, getPicFill, getPicFilters, getPicFillOpacity, getImageData, getVideoData, getAudioData } from './fill'\nimport { getChartInfo } from './chart'\nimport { getVerticalAlign, getTextDirection, getTextAutoFit } from './paragraph'\nimport { getTextInsets } from './textInsets'\nimport { getPosition, getSize } from './position'\nimport { genTextBody, getTextNodeValue } from './text'\nimport { getCustomShapePath, identifyShape, isStrokeOnlyCustomGeometry } from './shape'\nimport { extractFileExtension, getTextByPathList, angleToDegrees, isVideoLink, escapeHtml, hasValidText, numberToFixed, isOoxmlTrue } from './utils'\nimport { getFontData, getFontFallback } from './font'\nimport { getShadow } from './shadow'\nimport { getTableBorders, getTableCellParams, getTableRowParams } from './table'\nimport { RATIO_EMUs_Points } from './constants'\nimport { findOMath, oMathToLatex } from './math'\nimport { getShapePath } from './shapePath'\nimport { parseTransition, findTransitionNode, parseTiming } from './animation'\nimport { getDiagramNodeContext, getSmartArtTextData } from './diagram'\n\n// Producers emit relationship types in either the ECMA-376 namespace or the\n// Microsoft 2007 extension namespace (e.g. p14 media, diagram drawings).\nconst REL_TYPE_NAMESPACES = [\n 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/',\n 'http://schemas.microsoft.com/office/2007/relationships/',\n]\n\nfunction getRelTypeName(type) {\n if (!type) return ''\n for (const namespace of REL_TYPE_NAMESPACES) {\n if (type.indexOf(namespace) === 0) return type.replace(namespace, '')\n }\n return type\n}\n\nexport async function parse(file, options = {}) {\n const slides = []\n const loadedImages = {}\n const loadedVideos = {}\n const loadedAudios = {}\n const xmlCache = {}\n const parseOptions = {\n ...options,\n imageMode: options.imageMode || 'base64',\n videoMode: options.videoMode || 'none',\n audioMode: options.audioMode || 'none',\n }\n\n // 检测是否为加密文件(OLE2/CFB 格式,魔数为 D0 CF 11 E0)\n let fileBytes\n if (file instanceof ArrayBuffer) {\n fileBytes = new Uint8Array(file)\n }\n else if (typeof File !== 'undefined' && file instanceof File) {\n const buf = await file.arrayBuffer()\n fileBytes = new Uint8Array(buf)\n }\n else if (typeof Buffer !== 'undefined' && Buffer.isBuffer(file)) {\n fileBytes = new Uint8Array(file)\n }\n if (fileBytes && fileBytes[0] === 0xD0 && fileBytes[1] === 0xCF && fileBytes[2] === 0x11 && fileBytes[3] === 0xE0) {\n throw new Error('ENCRYPTED_FILE')\n }\n\n const zip = await JSZip.loadAsync(file)\n\n const filesInfo = await getContentTypes(zip)\n const { width, height, defaultTextStyle } = await getSlideInfo(zip)\n const { themeContent, themeColors } = await getTheme(zip)\n const usedFonts = await getUsedFonts(zip)\n\n for (const filename of filesInfo.slides) {\n const singleSlide = await processSingleSlide(zip, filename, themeContent, defaultTextStyle, loadedImages, loadedVideos, loadedAudios, parseOptions, xmlCache)\n if (singleSlide) slides.push(singleSlide)\n }\n\n return {\n slides,\n usedFonts,\n themeColors,\n size: {\n width,\n height,\n },\n }\n}\n\nfunction asNodeArray(node) {\n if (!node) return []\n return node.constructor === Array ? node : [node]\n}\n\nfunction sortSlideXml(p1, p2) {\n const n1 = +(/(\\d+)\\.xml/.exec(p1)?.[1] || 0)\n const n2 = +(/(\\d+)\\.xml/.exec(p2)?.[1] || 0)\n return n1 - n2\n}\n\nfunction normalizePartName(name) {\n return String(name || '').replace(/\\\\/g, '/').replace(/^\\//, '')\n}\n\nfunction relationshipsPartFor(partName) {\n const name = normalizePartName(partName)\n const slash = name.lastIndexOf('/')\n const dir = slash === -1 ? '' : name.slice(0, slash + 1)\n const file = slash === -1 ? name : name.slice(slash + 1)\n return `${dir}_rels/${file}.rels`\n}\n\nfunction resolvePartTarget(sourcePart, target) {\n const raw = String(target || '').replace(/\\\\/g, '/')\n if (!raw) return ''\n if (raw.startsWith('/')) return normalizePartName(raw)\n const source = normalizePartName(sourcePart)\n const slash = source.lastIndexOf('/')\n const dir = slash === -1 ? '' : source.slice(0, slash + 1)\n const out = []\n for (const seg of `${dir}${raw}`.split('/')) {\n if (!seg || seg === '.') continue\n if (seg === '..') out.pop()\n else out.push(seg)\n }\n return out.join('/')\n}\n\nfunction relationshipRid(attrs) {\n if (!attrs) return ''\n // ECMA-376 §4.3.1.29: location is r:id (ST_RelationshipId), not the numeric ST_SlideId @id.\n return attrs['r:id'] || attrs.rId || ''\n}\n\nasync function getPresentationPart(zip) {\n // ECMA-376 §13.2: the Presentation part is the target of the package officeDocument relationship.\n const rels = asNodeArray(getTextByPathList(await readXmlFile(zip, '_rels/.rels'), ['Relationships', 'Relationship']))\n for (const rel of rels) {\n const type = getTextByPathList(rel, ['attrs', 'Type'])\n const target = getTextByPathList(rel, ['attrs', 'Target'])\n const targetMode = getTextByPathList(rel, ['attrs', 'TargetMode'])\n if (targetMode && String(targetMode).toLowerCase() === 'external') continue\n if (getRelTypeName(type) === 'officeDocument' && target) {\n const loc = resolvePartTarget('', target)\n if (loc) return loc\n }\n }\n return 'ppt/presentation.xml'\n}\n\nasync function getSlidesFromPresentation(zip) {\n // ECMA-376 §13.3.8: each Slide part is an Internal relationship from the Presentation part.\n // ECMA-376 §4.3.1.29–30: p:sldIdLst document order is the slide list; r:id resolves the part.\n // Content_Types Overrides are MIME mappings (Part 2 §9.1.2.2); their order is not significant.\n const presentationPart = await getPresentationPart(zip)\n const relItems = asNodeArray(getTextByPathList(\n await readXmlFile(zip, relationshipsPartFor(presentationPart)),\n ['Relationships', 'Relationship'],\n ))\n const relsMap = {}\n const slideTargets = []\n\n for (const rel of relItems) {\n const id = getTextByPathList(rel, ['attrs', 'Id'])\n const type = getTextByPathList(rel, ['attrs', 'Type'])\n const target = getTextByPathList(rel, ['attrs', 'Target'])\n const targetMode = getTextByPathList(rel, ['attrs', 'TargetMode'])\n if (!id || !target) continue\n if (targetMode && String(targetMode).toLowerCase() === 'external') continue\n const loc = resolvePartTarget(presentationPart, target)\n if (!loc) continue\n relsMap[id] = loc\n if (getRelTypeName(type) === 'slide') slideTargets.push(loc)\n }\n\n const presentation = await readXmlFile(zip, presentationPart)\n const sldIds = asNodeArray(getTextByPathList(presentation, ['p:presentation', 'p:sldIdLst', 'p:sldId']))\n const ordered = []\n for (const sldId of sldIds) {\n const rid = relationshipRid(sldId?.attrs)\n if (rid && relsMap[rid]) ordered.push(relsMap[rid])\n }\n if (ordered.length) return ordered\n return slideTargets\n}\n\nasync function getContentTypes(zip) {\n const ContentTypesJson = await readXmlFile(zip, '[Content_Types].xml')\n const overrides = asNodeArray(getTextByPathList(ContentTypesJson, ['Types', 'Override']))\n const overrideSlides = []\n let slideLayoutsLocArray = []\n\n for (const item of overrides) {\n const contentType = item?.attrs?.ContentType\n const partName = item?.attrs?.PartName\n if (!contentType || !partName) continue\n const loc = String(partName).replace(/^\\//, '')\n switch (contentType) {\n case 'application/vnd.openxmlformats-officedocument.presentationml.slide+xml':\n overrideSlides.push(loc)\n break\n case 'application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml':\n slideLayoutsLocArray.push(loc)\n break\n default:\n }\n }\n\n slideLayoutsLocArray = slideLayoutsLocArray.sort(sortSlideXml)\n\n let slidesLocArray = await getSlidesFromPresentation(zip)\n if (!slidesLocArray.length) {\n slidesLocArray = overrideSlides.sort(sortSlideXml)\n }\n\n return {\n slides: slidesLocArray,\n slideLayouts: slideLayoutsLocArray,\n }\n}\n\nasync function getUsedFonts(zip) {\n const content = await readXmlFile(zip, 'ppt/presentation.xml')\n const embeddedFontList = getTextByPathList(content, ['p:presentation', 'p:embeddedFontLst', 'p:embeddedFont'])\n const usedFonts = []\n\n if (!embeddedFontList) return usedFonts\n\n const embeddedFonts = embeddedFontList.constructor === Array ? embeddedFontList : [embeddedFontList]\n\n // 读取 presentation.xml.rels,获取字体文件路径\n const relsContent = await readXmlFile(zip, 'ppt/_rels/presentation.xml.rels')\n const relsMap = {}\n if (relsContent) {\n let relItems = getTextByPathList(relsContent, ['Relationships', 'Relationship'])\n if (relItems) {\n if (relItems.constructor !== Array) relItems = [relItems]\n for (const rel of relItems) {\n const id = getTextByPathList(rel, ['attrs', 'Id'])\n const target = getTextByPathList(rel, ['attrs', 'Target'])\n if (id && target) relsMap[id] = target\n }\n }\n }\n\n const FONT_VARIANTS = ['p:regular', 'p:bold', 'p:italic', 'p:boldItalic']\n\n for (const embeddedFont of embeddedFonts) {\n const typeface = getTextByPathList(embeddedFont, ['p:font', 'attrs', 'typeface'])\n if (!typeface) continue\n\n let fontBlob = ''\n for (const variant of FONT_VARIANTS) {\n const variantNode = embeddedFont[variant]\n if (!variantNode) continue\n const rid = getTextByPathList(variantNode, ['attrs', 'r:id'])\n if (!rid) continue\n const relTarget = relsMap[rid]\n if (!relTarget) continue\n\n let fontPath = relTarget\n if (fontPath.startsWith('../')) {\n fontPath = fontPath.substring(3)\n }\n else {\n fontPath = 'ppt/' + fontPath\n }\n\n fontBlob = await getFontData(zip, fontPath)\n if (fontBlob) break\n }\n\n usedFonts.push({\n name: typeface,\n fontFamily: getFontFallback(typeface),\n blob: fontBlob,\n })\n }\n\n return usedFonts\n}\n\nasync function getSlideInfo(zip) {\n const content = await readXmlFile(zip, 'ppt/presentation.xml')\n const sldSzAttrs = content['p:presentation']['p:sldSz']['attrs']\n const defaultTextStyle = content['p:presentation']['p:defaultTextStyle']\n return {\n width: parseInt(sldSzAttrs['cx']) * RATIO_EMUs_Points,\n height: parseInt(sldSzAttrs['cy']) * RATIO_EMUs_Points,\n defaultTextStyle,\n }\n}\n\nasync function getTheme(zip) {\n let themeContent = null\n let themeURI\n\n const preResContent = await readXmlFile(zip, 'ppt/_rels/presentation.xml.rels')\n const relationshipArray = preResContent['Relationships']['Relationship']\n\n if (relationshipArray.constructor === Array) {\n for (const relationshipItem of relationshipArray) {\n if (relationshipItem['attrs']['Type'] === 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme') {\n themeURI = relationshipItem['attrs']['Target']\n break\n }\n }\n }\n else if (relationshipArray['attrs']['Type'] === 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme') {\n themeURI = relationshipArray['attrs']['Target']\n }\n\n if (!themeURI) {\n const masterResContent = await readXmlFile(zip, 'ppt/slideMasters/_rels/slideMaster1.xml.rels')\n if (masterResContent) {\n const masterRelationshipArray = masterResContent['Relationships']['Relationship']\n if (masterRelationshipArray.constructor === Array) {\n for (const relationshipItem of masterRelationshipArray) {\n if (relationshipItem['attrs']['Type'] === 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme') {\n themeURI = relationshipItem['attrs']['Target']\n break\n }\n }\n }\n else if (masterRelationshipArray['attrs']['Type'] === 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme') {\n themeURI = masterRelationshipArray['attrs']['Target']\n }\n }\n }\n\n if (themeURI) {\n themeURI = themeURI.replace(/\\\\/g, '/')\n if (themeURI.startsWith('../')) themeURI = themeURI.substring(3)\n const themeFilename = themeURI.indexOf('/ppt/') === 0 ? themeURI.substr(1) : 'ppt/' + themeURI\n themeContent = await readXmlFile(zip, themeFilename)\n }\n\n const themeColors = []\n if (themeContent) {\n const clrScheme = getTextByPathList(themeContent, ['a:theme', 'a:themeElements', 'a:clrScheme'])\n if (clrScheme) {\n for (let i = 1; i <= 6; i++) {\n if (clrScheme[`a:accent${i}`] === undefined) break\n const color = getTextByPathList(clrScheme, [`a:accent${i}`, 'a:srgbClr', 'attrs', 'val'])\n if (color) themeColors.push('#' + color)\n }\n }\n }\n\n return { themeContent, themeColors }\n}\n\nasync function readXmlFileCached(zip, filename, xmlCache) {\n if (!filename) return null\n if (Object.prototype.hasOwnProperty.call(xmlCache, filename)) return xmlCache[filename]\n\n const content = await readXmlFile(zip, filename)\n xmlCache[filename] = content\n return content\n}\n\nasync function processSingleSlide(zip, sldFileName, themeContent, defaultTextStyle, loadedImages, loadedVideos, loadedAudios, options, xmlCache) {\n const resName = sldFileName.replace('slides/slide', 'slides/_rels/slide') + '.rels'\n const resContent = await readXmlFile(zip, resName)\n if (!resContent) return null\n let relationshipArray = resContent['Relationships']['Relationship']\n if (relationshipArray.constructor !== Array) relationshipArray = [relationshipArray]\n \n let noteFilename = ''\n let layoutFilename = ''\n let masterFilename = ''\n let themeFilename = ''\n const slideResObj = {}\n const layoutResObj = {}\n const masterResObj = {}\n const themeResObj = {}\n\n for (const relationshipArrayItem of relationshipArray) {\n const relType = getRelTypeName(relationshipArrayItem['attrs']['Type'])\n let relTarget = relationshipArrayItem['attrs']['Target']\n const isExternal = relationshipArrayItem['attrs']['TargetMode'] === 'External'\n if (!isExternal) {\n relTarget = relTarget.replace(/\\\\/g, '/')\n if (relTarget.indexOf('/ppt/') === 0) relTarget = relTarget.substr(1)\n else if (relTarget.indexOf('../') !== -1) relTarget = relTarget.replace('../', 'ppt/')\n else relTarget = 'ppt/slides/' + relTarget\n }\n\n if (relType === 'slideLayout') layoutFilename = relTarget\n else if (relType === 'notesSlide') noteFilename = relTarget\n\n slideResObj[relationshipArrayItem['attrs']['Id']] = {\n type: relType,\n target: relTarget,\n }\n }\n \n const slideNotesContent = await readXmlFile(zip, noteFilename)\n const note = getNote(slideNotesContent)\n\n const slideLayoutContent = await readXmlFileCached(zip, layoutFilename, xmlCache)\n const slideLayoutTables = indexNodes(slideLayoutContent)\n const slideLayoutResFilename = layoutFilename.replace('slideLayouts/slideLayout', 'slideLayouts/_rels/slideLayout') + '.rels'\n const slideLayoutResContent = await readXmlFileCached(zip, slideLayoutResFilename, xmlCache)\n if (slideLayoutResContent) {\n relationshipArray = slideLayoutResContent['Relationships']['Relationship']\n if (relationshipArray) {\n if (relationshipArray.constructor !== Array) relationshipArray = [relationshipArray]\n for (const relationshipArrayItem of relationshipArray) {\n const relType = getRelTypeName(relationshipArrayItem['attrs']['Type'])\n let relTarget = relationshipArrayItem['attrs']['Target']\n relTarget = relTarget.replace(/\\\\/g, '/')\n if (relTarget.indexOf('/ppt/') === 0) relTarget = relTarget.substr(1)\n else if (relTarget.indexOf('../') !== -1) relTarget = relTarget.replace('../', 'ppt/')\n else relTarget = 'ppt/slideLayouts/' + relTarget\n\n if (relType === 'slideMaster') masterFilename = relTarget\n else {\n layoutResObj[relationshipArrayItem['attrs']['Id']] = {\n type: relType,\n target: relTarget,\n }\n }\n }\n }\n }\n\n const slideMasterContent = await readXmlFileCached(zip, masterFilename, xmlCache)\n const slideMasterTextStyles = getTextByPathList(slideMasterContent, ['p:sldMaster', 'p:txStyles'])\n const slideMasterTables = indexNodes(slideMasterContent)\n const slideMasterResFilename = masterFilename.replace('slideMasters/slideMaster', 'slideMasters/_rels/slideMaster') + '.rels'\n const slideMasterResContent = await readXmlFileCached(zip, slideMasterResFilename, xmlCache)\n if (slideMasterResContent) {\n relationshipArray = slideMasterResContent['Relationships']['Relationship']\n if (relationshipArray) {\n if (relationshipArray.constructor !== Array) relationshipArray = [relationshipArray]\n for (const relationshipArrayItem of relationshipArray) {\n const relType = getRelTypeName(relationshipArrayItem['attrs']['Type'])\n let relTarget = relationshipArrayItem['attrs']['Target']\n relTarget = relTarget.replace(/\\\\/g, '/')\n if (relTarget.indexOf('/ppt/') === 0) relTarget = relTarget.substr(1)\n else if (relTarget.indexOf('../') !== -1) relTarget = relTarget.replace('../', 'ppt/')\n else relTarget = 'ppt/slideMasters/' + relTarget\n\n if (relType === 'theme') themeFilename = relTarget\n else {\n masterResObj[relationshipArrayItem['attrs']['Id']] = {\n type: relType,\n target: relTarget,\n }\n }\n }\n }\n }\n\n let currentThemeContent = themeContent\n if (themeFilename) {\n currentThemeContent = await readXmlFileCached(zip, themeFilename, xmlCache) || currentThemeContent\n const themeName = themeFilename.split('/').pop()\n const themeResFileName = themeFilename.replace(themeName, '_rels/' + themeName) + '.rels'\n const themeResContent = await readXmlFile(zip, themeResFileName)\n if (themeResContent) {\n relationshipArray = themeResContent['Relationships']['Relationship']\n if (relationshipArray) {\n if (relationshipArray.constructor !== Array) relationshipArray = [relationshipArray]\n for (const relationshipArrayItem of relationshipArray) {\n let relTarget = relationshipArrayItem['attrs']['Target']\n relTarget = relTarget.replace(/\\\\/g, '/')\n if (relTarget.indexOf('/ppt/') === 0) relTarget = relTarget.substr(1)\n else relTarget = relTarget.replace('../', 'ppt/')\n\n themeResObj[relationshipArrayItem['attrs']['Id']] = {\n 'type': getRelTypeName(relationshipArrayItem['attrs']['Type']),\n 'target': relTarget\n }\n }\n }\n }\n }\n\n const tableStyles = await readXmlFileCached(zip, 'ppt/tableStyles.xml', xmlCache)\n\n const slideContent = await readXmlFile(zip, sldFileName)\n if (!slideContent) return null\n const nodes = slideContent['p:sld']['p:cSld']['p:spTree']\n const warpObj = {\n zip,\n loadedImages,\n loadedVideos,\n loadedAudios,\n options,\n slideLayoutContent,\n slideLayoutTables,\n slideMasterContent,\n slideMasterTables,\n slideContent,\n tableStyles,\n slideResObj,\n slideMasterTextStyles,\n layoutResObj,\n masterResObj,\n themeContent: currentThemeContent,\n themeResObj,\n diagramFileCache: {},\n defaultTextStyle,\n }\n const layoutElements = await getLayoutElements(warpObj)\n const fill = await getSlideBackgroundFill(warpObj)\n\n const elements = []\n for (const nodeKey in nodes) {\n if (nodes[nodeKey].constructor !== Array) nodes[nodeKey] = [nodes[nodeKey]]\n for (const node of nodes[nodeKey]) {\n const ret = await processNodesInSlide(nodeKey, node, warpObj, 'slide')\n if (ret) elements.push(ret)\n }\n }\n\n let transitionNode = findTransitionNode(slideContent, 'p:sld')\n if (!transitionNode) transitionNode = findTransitionNode(slideLayoutContent, 'p:sldLayout')\n if (!transitionNode) transitionNode = findTransitionNode(slideMasterContent, 'p:sldMaster')\n\n const transition = parseTransition(transitionNode)\n const { animations, builds } = parseTiming(slideContent)\n\n const showMasterSpOnSlide = getTextByPathList(slideContent, ['p:sld', 'attrs', 'showMasterSp'])\n const isHidden = v => v === '0' || v === 'false'\n const hideBackground = isHidden(showMasterSpOnSlide)\n\n return {\n fill,\n elements,\n layoutElements,\n note,\n transition,\n hideBackground,\n animations,\n builds,\n }\n}\n\nfunction getHyperlinkFromCNvPr(cNvPr, warpObj) {\n const hlinkClick = getTextByPathList(cNvPr, ['a:hlinkClick', 'attrs'])\n if (!hlinkClick) return null\n\n const linkId = hlinkClick['r:id']\n if (!linkId) return null\n\n const res = warpObj['slideResObj'][linkId]\n if (!res) return null\n\n if (res['type'] !== 'hyperlink') return null\n\n const target = res['target']\n if (!target || !/^https?:\\/\\//.test(target)) return null\n\n return target\n}\n\nfunction getNote(noteContent) {\n let text = ''\n let spNodes = getTextByPathList(noteContent, ['p:notes', 'p:cSld', 'p:spTree', 'p:sp'])\n if (!spNodes) return ''\n\n if (spNodes.constructor !== Array) spNodes = [spNodes]\n for (const spNode of spNodes) {\n const phType = getTextByPathList(spNode, ['p:nvSpPr', 'p:nvPr', 'p:ph', 'attrs', 'type'])\n if (phType !== 'body') continue\n\n const textBody = getTextByPathList(spNode, ['p:txBody'])\n if (!textBody) continue\n\n let pNode = textBody['a:p']\n if (!pNode) continue\n if (pNode.constructor !== Array) pNode = [pNode]\n\n const listTypes = []\n\n for (const p of pNode) {\n const pPr = p['a:pPr']\n const algn = getTextByPathList(pPr, ['attrs', 'algn'])\n let align = 'left'\n if (algn) {\n switch (algn) {\n case 'r': align = 'right'; break\n case 'ctr': align = 'center'; break\n case 'just': case 'dist': align = 'justify'; break\n default: break\n }\n }\n\n let listType = ''\n if (pPr) {\n if (pPr['a:buChar']) listType = 'ul'\n else if (pPr['a:buAutoNum']) listType = 'ol'\n }\n const lvlNode = getTextByPathList(pPr, ['attrs', 'lvl'])\n const listLevel = lvlNode !== undefined ? parseInt(lvlNode) : 0\n\n if (listType) {\n while (listTypes.length > listLevel + 1) {\n text += `</${listTypes.pop()}>`\n }\n if (listTypes[listLevel] === undefined) {\n text += `<${listType}>`\n listTypes[listLevel] = listType\n }\n else if (listTypes[listLevel] !== listType) {\n text += `</${listTypes[listLevel]}>`\n text += `<${listType}>`\n listTypes[listLevel] = listType\n }\n text += `<li><p style=\"text-align:${align};\">`\n }\n else {\n while (listTypes.length > 0) {\n text += `</${listTypes.pop()}>`\n }\n text += `<p style=\"text-align:${align};\">`\n }\n\n let rNodes = p['a:r']\n if (rNodes) {\n if (rNodes.constructor !== Array) rNodes = [rNodes]\n for (const r of rNodes) {\n const t = getTextNodeValue(getTextByPathList(r, ['a:t']))\n if (t && typeof t === 'string') text += t\n }\n }\n\n if (listType) text += '</p></li>'\n else text += '</p>'\n }\n while (listTypes.length > 0) {\n text += `</${listTypes.pop()}>`\n }\n }\n return text\n}\n\nasync function getLayoutElements(warpObj) {\n const elements = []\n const slideLayoutContent = warpObj['slideLayoutContent']\n const slideMasterContent = warpObj['slideMasterContent']\n const nodesSldLayout = getTextByPathList(slideLayoutContent, ['p:sldLayout', 'p:cSld', 'p:spTree'])\n const nodesSldMaster = getTextByPathList(slideMasterContent, ['p:sldMaster', 'p:cSld', 'p:spTree'])\n\n const showMasterSp = getTextByPathList(slideLayoutContent, ['p:sldLayout', 'attrs', 'showMasterSp'])\n if (nodesSldLayout) {\n for (const nodeKey in nodesSldLayout) {\n if (nodesSldLayout[nodeKey].constructor === Array) {\n for (let i = 0; i < nodesSldLayout[nodeKey].length; i++) {\n const ph = getTextByPathList(nodesSldLayout[nodeKey][i], ['p:nvSpPr', 'p:nvPr', 'p:ph'])\n if (!ph) {\n const ret = await processNodesInSlide(nodeKey, nodesSldLayout[nodeKey][i], warpObj, 'slideLayoutBg')\n if (ret) elements.push(ret)\n }\n }\n } \n else {\n const ph = getTextByPathList(nodesSldLayout[nodeKey], ['p:nvSpPr', 'p:nvPr', 'p:ph'])\n if (!ph) {\n const ret = await processNodesInSlide(nodeKey, nodesSldLayout[nodeKey], warpObj, 'slideLayoutBg')\n if (ret) elements.push(ret)\n }\n }\n }\n }\n if (nodesSldMaster && showMasterSp !== '0') {\n for (const nodeKey in nodesSldMaster) {\n if (nodesSldMaster[nodeKey].constructor === Array) {\n for (let i = 0; i < nodesSldMaster[nodeKey].length; i++) {\n const ph = getTextByPathList(nodesSldMaster[nodeKey][i], ['p:nvSpPr', 'p:nvPr', 'p:ph'])\n if (!ph) {\n const ret = await processNodesInSlide(nodeKey, nodesSldMaster[nodeKey][i], warpObj, 'slideMasterBg')\n if (ret) elements.push(ret)\n }\n }\n } \n else {\n const ph = getTextByPathList(nodesSldMaster[nodeKey], ['p:nvSpPr', 'p:nvPr', 'p:ph'])\n if (!ph) {\n const ret = await processNodesInSlide(nodeKey, nodesSldMaster[nodeKey], warpObj, 'slideMasterBg')\n if (ret) elements.push(ret)\n }\n }\n }\n }\n return elements\n}\n\nfunction indexNodes(content) {\n if (!content) return { idTable: {}, idxTable: {}, typeTable: {} }\n const keys = Object.keys(content)\n const spTreeNode = content[keys[0]]?.['p:cSld']?.['p:spTree']\n if (!spTreeNode) return { idTable: {}, idxTable: {}, typeTable: {} }\n const idTable = {}\n const idxTable = {}\n const typeTable = {}\n\n for (const key in spTreeNode) {\n if (key === 'p:nvGrpSpPr' || key === 'p:grpSpPr') continue\n\n const targetNode = spTreeNode[key]\n\n if (targetNode.constructor === Array) {\n for (const targetNodeItem of targetNode) {\n const nvSpPrNode = targetNodeItem['p:nvSpPr']\n const id = getTextByPathList(nvSpPrNode, ['p:cNvPr', 'attrs', 'id'])\n const idx = getTextByPathList(nvSpPrNode, ['p:nvPr', 'p:ph', 'attrs', 'idx'])\n const type = getTextByPathList(nvSpPrNode, ['p:nvPr', 'p:ph', 'attrs', 'type'])\n\n if (id) idTable[id] = targetNodeItem\n if (idx) idxTable[idx] = targetNodeItem\n if (type && !typeTable[type]) typeTable[type] = targetNodeItem\n }\n } \n else {\n const nvSpPrNode = targetNode['p:nvSpPr']\n const id = getTextByPathList(nvSpPrNode, ['p:cNvPr', 'attrs', 'id'])\n const idx = getTextByPathList(nvSpPrNode, ['p:nvPr', 'p:ph', 'attrs', 'idx'])\n const type = getTextByPathList(nvSpPrNode, ['p:nvPr', 'p:ph', 'attrs', 'type'])\n\n if (id) idTable[id] = targetNode\n if (idx) idxTable[idx] = targetNode\n if (type && !typeTable[type]) typeTable[type] = targetNode\n }\n }\n\n return { idTable, idxTable, typeTable }\n}\n\nasync function processNodesInSlide(nodeKey, nodeValue, warpObj, source, groupHierarchy = []) {\n let json\n\n switch (nodeKey) {\n case 'p:sp': // Shape, Text\n json = await processSpNode(nodeValue, warpObj, source, groupHierarchy)\n break\n case 'p:cxnSp': // Shape, Text\n json = await processCxnSpNode(nodeValue, warpObj, source)\n break\n case 'p:pic': // Image, Video, Audio\n json = await processPicNode(nodeValue, warpObj, source)\n break\n case 'p:graphicFrame': // Chart, Diagram, Table\n json = await processGraphicFrameNode(nodeValue, warpObj, source)\n break\n case 'p:grpSp':\n json = await processGroupSpNode(nodeValue, warpObj, source, groupHierarchy)\n break\n case 'mc:AlternateContent':\n if (getTextByPathList(nodeValue, ['mc:Fallback', 'p:grpSpPr', 'a:xfrm'])) {\n json = await processGroupSpNode(getTextByPathList(nodeValue, ['mc:Fallback']), warpObj, source, groupHierarchy)\n }\n else if (getTextByPathList(nodeValue, ['mc:Choice'])) {\n json = await processMathNode(nodeValue, warpObj, source)\n }\n break\n default:\n }\n\n if (json && typeof json === 'object' && !json.id) {\n const id = getTextByPathList(nodeValue, ['p:nvSpPr', 'p:cNvPr', 'attrs', 'id']) ||\n getTextByPathList(nodeValue, ['p:nvPicPr', 'p:cNvPr', 'attrs', 'id']) ||\n getTextByPathList(nodeValue, ['p:nvCxnSpPr', 'p:cNvPr', 'attrs', 'id']) ||\n getTextByPathList(nodeValue, ['p:nvGrpSpPr', 'p:cNvPr', 'attrs', 'id']) ||\n getTextByPathList(nodeValue, ['p:nvGraphicFramePr', 'p:cNvPr', 'attrs', 'id']) ||\n getTextByPathList(nodeValue, ['mc:Choice', 'p:sp', 'p:nvSpPr', 'p:cNvPr', 'attrs', 'id']) ||\n getTextByPathList(nodeValue, ['mc:Fallback', 'p:sp', 'p:nvSpPr', 'p:cNvPr', 'attrs', 'id']) ||\n getTextByPathList(nodeValue, ['mc:Fallback', 'p:nvGrpSpPr', 'p:cNvPr', 'attrs', 'id'])\n\n json.id = id || ''\n }\n\n return json\n}\n\nasync function processMathNode(node, warpObj, source) {\n const choice = getTextByPathList(node, ['mc:Choice'])\n const fallback = getTextByPathList(node, ['mc:Fallback'])\n\n const order = node['attrs']['order']\n const xfrmNode = getTextByPathList(choice, ['p:sp', 'p:spPr', 'a:xfrm'])\n const { top, left } = getPosition(xfrmNode, undefined, undefined)\n const { width, height } = getSize(xfrmNode, undefined, undefined)\n\n const oMath = findOMath(choice)[0]\n if (!oMath) return null\n\n const latex = oMathToLatex(oMath)\n\n const blipFill = getTextByPathList(fallback, ['p:sp', 'p:spPr', 'a:blipFill'])\n const picFill = await getPicFill(source, blipFill, warpObj)\n\n let text = ''\n if (getTextByPathList(choice, ['p:sp', 'p:txBody', 'a:p', 'a:r'])) {\n const sp = getTextByPathList(choice, ['p:sp'])\n text = genTextBody(sp['p:txBody'], sp, undefined, undefined, undefined, warpObj)\n }\n\n return {\n type: 'math',\n top,\n left,\n width, \n height,\n latex,\n picRef: picFill.ref,\n picBase64: picFill.base64,\n picBlob: picFill.blob,\n text,\n order,\n }\n}\n\nasync function processGroupSpNode(node, warpObj, source, parentGroupHierarchy = []) {\n const order = node['attrs']['order']\n const xfrmNode = getTextByPathList(node, ['p:grpSpPr', 'a:xfrm'])\n if (!xfrmNode) return null\n\n const x = parseInt(xfrmNode['a:off']['attrs']['x']) * RATIO_EMUs_Points\n const y = parseInt(xfrmNode['a:off']['attrs']['y']) * RATIO_EMUs_Points\n const chx = parseInt(xfrmNode['a:chOff']['attrs']['x']) * RATIO_EMUs_Points\n const chy = parseInt(xfrmNode['a:chOff']['attrs']['y']) * RATIO_EMUs_Points\n const cx = parseInt(xfrmNode['a:ext']['attrs']['cx']) * RATIO_EMUs_Points\n const cy = parseInt(xfrmNode['a:ext']['attrs']['cy']) * RATIO_EMUs_Points\n const chcx = parseInt(xfrmNode['a:chExt']['attrs']['cx']) * RATIO_EMUs_Points\n const chcy = parseInt(xfrmNode['a:chExt']['attrs']['cy']) * RATIO_EMUs_Points\n\n const isFlipV = isOoxmlTrue(getTextByPathList(xfrmNode, ['attrs', 'flipV']))\n const isFlipH = isOoxmlTrue(getTextByPathList(xfrmNode, ['attrs', 'flipH']))\n\n let rotate = getTextByPathList(xfrmNode, ['attrs', 'rot']) || 0\n if (rotate) rotate = angleToDegrees(rotate)\n\n // 计算缩放因子\n const ws = chcx === 0 ? 0 : cx / chcx\n const hs = chcy === 0 ? 0 : cy / chcy\n\n // 构建当前组合层级(将当前组合添加到父级层级中)\n const currentGroupHierarchy = [...parentGroupHierarchy, node]\n\n const elements = []\n for (const nodeKey in node) {\n if (node[nodeKey].constructor === Array) {\n for (const item of node[nodeKey]) {\n const ret = await processNodesInSlide(nodeKey, item, warpObj, source, currentGroupHierarchy)\n if (ret) elements.push(ret)\n }\n }\n else {\n const ret = await processNodesInSlide(nodeKey, node[nodeKey], warpObj, source, currentGroupHierarchy)\n if (ret) elements.push(ret)\n }\n }\n\n const transformGroupedElement = (element, offsetX = 0, offsetY = 0) => {\n const elementRotate = element.rotate || 0\n const normalizedRotate = ((elementRotate % 360) + 360) % 360\n const isUniformScale = Math.abs(ws - hs) < 0.000001\n const shouldSwapDimensions = normalizedRotate === 90 || normalizedRotate === 270\n const centerX = element.left + element.width / 2\n const centerY = element.top + element.height / 2\n const nextCenterX = (centerX - offsetX) * ws\n const nextCenterY = (centerY - offsetY) * hs\n const widthScale = shouldSwapDimensions && !isUniformScale ? hs : ws\n const heightScale = shouldSwapDimensions && !isUniformScale ? ws : hs\n const width = element.width * widthScale\n const height = element.height * heightScale\n\n const transformed = {\n ...element,\n left: numberToFixed(nextCenterX - width / 2),\n top: numberToFixed(nextCenterY - height / 2),\n width: numberToFixed(width),\n height: numberToFixed(height),\n }\n return transformed\n }\n\n const processedElements = elements.map(element => ({\n ...transformGroupedElement(element, chx, chy),\n ...(element.type === 'group' && element.elements ? {\n elements: processNestedGroupElements(element.elements)\n } : {})\n }))\n\n function processNestedGroupElements(elements, depth = 0) {\n if (depth > 10) return elements\n\n return elements.map(element => {\n const processed = transformGroupedElement(element)\n if (element.type === 'group' && element.elements) {\n processed.elements = processNestedGroupElements(element.elements, depth + 1)\n }\n return processed\n })\n }\n\n return {\n type: 'group',\n top: numberToFixed(y),\n left: numberToFixed(x),\n width: numberToFixed(cx),\n height: numberToFixed(cy),\n rotate,\n order,\n isFlipV,\n isFlipH,\n elements: processedElements,\n }\n}\n\nasync function processSpNode(node, warpObj, source, groupHierarchy = []) {\n const cNvPr = getTextByPathList(node, ['p:nvSpPr', 'p:cNvPr'])\n const name = getTextByPathList(cNvPr, ['attrs', 'name'])\n const idx = getTextByPathList(node, ['p:nvSpPr', 'p:nvPr', 'p:ph', 'attrs', 'idx'])\n let type = getTextByPathList(node, ['p:nvSpPr', 'p:nvPr', 'p:ph', 'attrs', 'type'])\n const order = getTextByPathList(node, ['attrs', 'order'])\n\n let slideLayoutSpNode, slideMasterSpNode\n\n if (type) {\n if (idx) {\n slideLayoutSpNode = warpObj['slideLayoutTables']['idxTable'][idx]\n slideMasterSpNode = warpObj['slideMasterTables']['idxTable'][idx]\n if (!slideLayoutSpNode) slideLayoutSpNode = warpObj['slideLayoutTables']['typeTable'][type]\n if (!slideMasterSpNode) slideMasterSpNode = warpObj['slideMasterTables']['typeTable'][type]\n }\n else {\n slideLayoutSpNode = warpObj['slideLayoutTables']['typeTable'][type]\n slideMasterSpNode = warpObj['slideMasterTables']['typeTable'][type]\n }\n }\n else if (idx) {\n slideLayoutSpNode = warpObj['slideLayoutTables']['idxTable'][idx]\n slideMasterSpNode = warpObj['slideMasterTables']['idxTable'][idx]\n }\n\n if (!type) {\n const txBoxVal = getTextByPathList(node, ['p:nvSpPr', 'p:cNvSpPr', 'attrs', 'txBox'])\n if (isOoxmlTrue(txBoxVal)) type = 'text'\n }\n if (!type) type = getTextByPathList(slideLayoutSpNode, ['p:nvSpPr', 'p:nvPr', 'p:ph', 'attrs', 'type'])\n if (!type) type = getTextByPathList(slideMasterSpNode, ['p:nvSpPr', 'p:nvPr', 'p:ph', 'attrs', 'type'])\n if (!slideMasterSpNode && type === 'ctrTitle') slideMasterSpNode = warpObj['slideMasterTables']['typeTable']['title']\n\n if (!type) {\n if (source === 'diagramBg') type = 'diagram'\n else type = 'obj'\n }\n\n const link = getHyperlinkFromCNvPr(cNvPr, warpObj)\n\n return await genShape(node, slideLayoutSpNode, slideMasterSpNode, name, type, order, warpObj, source, link, groupHierarchy)\n}\n\nasync function processCxnSpNode(node, warpObj, source) {\n const cNvPr = getTextByPathList(node, ['p:nvCxnSpPr', 'p:cNvPr'])\n const name = getTextByPathList(cNvPr, ['attrs', 'name'])\n const type = (node['p:nvCxnSpPr']['p:nvPr']['p:ph'] === undefined) ? undefined : node['p:nvCxnSpPr']['p:nvPr']['p:ph']['attrs']['type']\n const order = node['attrs']['order']\n const link = getHyperlinkFromCNvPr(cNvPr, warpObj)\n\n return await genShape(node, undefined, undefined, name, type, order, warpObj, source, link)\n}\n\nasync function genShape(node, slideLayoutSpNode, slideMasterSpNode, name, type, order, warpObj, source, link, groupHierarchy = []) {\n const xfrmList = ['p:spPr', 'a:xfrm']\n const slideXfrmNode = getTextByPathList(node, xfrmList)\n const slideLayoutXfrmNode = getTextByPathList(slideLayoutSpNode, xfrmList)\n const slideMasterXfrmNode = getTextByPathList(slideMasterSpNode, xfrmList)\n\n const shapType = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'attrs', 'prst'])\n const custShapType = getTextByPathList(node, ['p:spPr', 'a:custGeom'])\n\n const keypoints = {}\n if (shapType) {\n const shapAdjst_ary = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'a:avLst', 'a:gd'])\n if (shapAdjst_ary) {\n const adjList = Array.isArray(shapAdjst_ary) ? shapAdjst_ary : [shapAdjst_ary]\n for (const adj of adjList) {\n const name = getTextByPathList(adj, ['attrs', 'name'])\n const fmla = getTextByPathList(adj, ['attrs', 'fmla'])\n if (name && fmla && fmla.startsWith('val ')) {\n keypoints[name] = parseInt(fmla.substring(4)) / 50000\n }\n }\n }\n }\n\n const { top, left } = getPosition(slideXfrmNode, slideLayoutXfrmNode, slideMasterXfrmNode)\n const { width, height } = getSize(slideXfrmNode, slideLayoutXfrmNode, slideMasterXfrmNode)\n const pathViewBox = { x: 0, y: 0, width, height }\n\n const isFlipV = isOoxmlTrue(getTextByPathList(slideXfrmNode, ['attrs', 'flipV']))\n const isFlipH = isOoxmlTrue(getTextByPathList(slideXfrmNode, ['attrs', 'flipH']))\n\n const rotate = angleToDegrees(getTextByPathList(slideXfrmNode, ['attrs', 'rot']))\n\n const txtXframeNode = getTextByPathList(node, ['p:txXfrm'])\n let txtRotate\n if (txtXframeNode) {\n const txtXframeRot = getTextByPathList(txtXframeNode, ['attrs', 'rot'])\n if (txtXframeRot) txtRotate = angleToDegrees(txtXframeRot) + 90\n } \n else txtRotate = rotate\n\n let content = ''\n if (node['p:txBody']) content = genTextBody(node['p:txBody'], node, slideLayoutSpNode, slideMasterSpNode, type, warpObj)\n\n const { borderColor, borderWidth, borderType, strokeDasharray, headEnd, tailEnd } = getBorder(node, type, warpObj)\n const fill = await getShapeFill(node, warpObj, source, {\n groupHierarchy,\n slideLayoutSpNode,\n slideMasterSpNode,\n })\n\n let shadow\n const outerShdwNode = getTextByPathList(node, ['p:spPr', 'a:effectLst', 'a:outerShdw'])\n if (outerShdwNode) shadow = getShadow(outerShdwNode, warpObj)\n\n const vAlign = getVerticalAlign(node, slideLayoutSpNode, slideMasterSpNode, type)\n // Vertical writing mode, inherited through layout/master. Read once here and reported on\n // every branch below: a vertical <a:bodyPr vert> is just as valid on a shape as on a plain\n // text box, and dropping it for shapes leaves the consumer laying that text out horizontally.\n const textDirection = getTextDirection(node, slideLayoutSpNode, slideMasterSpNode)\n const isVertical = textDirection !== 'horz'\n const wrap = getTextByPathList(node, ['p:txBody', 'a:bodyPr', 'attrs', 'wrap']) !== 'none'\n const autoFit = getTextAutoFit(node, slideLayoutSpNode, slideMasterSpNode)\n const textInset = getTextInsets(node, slideLayoutSpNode, slideMasterSpNode)\n\n const data = {\n left,\n top,\n width,\n height,\n borderColor,\n borderWidth,\n borderType,\n borderStrokeDasharray: strokeDasharray,\n fill,\n content,\n isFlipV,\n isFlipH,\n rotate,\n vAlign,\n wrap,\n name,\n order,\n }\n\n if (shadow) data.shadow = shadow\n if (autoFit) data.autoFit = autoFit\n if (link) data.link = link\n if (textInset) data.textInset = textInset\n if (headEnd) data.headEnd = headEnd\n if (tailEnd) data.tailEnd = tailEnd\n\n const isHasValidText = data.content && hasValidText(data.content)\n\n if (custShapType && type !== 'diagram') {\n const d = getCustomShapePath(custShapType, width, height)\n if (!isHasValidText) data.content = ''\n\n const customShapeData = {\n ...data,\n type: 'shape',\n isVertical,\n shapType: 'custom',\n path: d,\n pathViewBox,\n }\n if (isStrokeOnlyCustomGeometry(custShapType)) customShapeData.strokeOnly = true\n\n return customShapeData\n }\n\n let shapePath = ''\n if (shapType) shapePath = getShapePath(shapType, width, height, node)\n const STROKE_ONLY_PRESET_SHAPE_TYPES = ['arc', 'leftBrace', 'rightBrace', 'bracePair', 'leftBracket', 'rightBracket', 'bracketPair']\n const isStrokeOnlyPresetShape = STROKE_ONLY_PRESET_SHAPE_TYPES.includes(shapType)\n\n if (shapType && (type === 'obj' || !type || shapType !== 'rect')) {\n if (!isHasValidText) data.content = ''\n const shapeData = {\n ...data,\n type: 'shape',\n isVertical,\n shapType,\n path: shapePath,\n pathViewBox,\n keypoints,\n }\n if (isStrokeOnlyPresetShape) shapeData.strokeOnly = true\n return shapeData\n }\n if (shapType && !isHasValidText && (fill || borderWidth)) {\n const shapeData = {\n ...data,\n type: 'shape',\n isVertical,\n content: '',\n shapType,\n path: shapePath,\n pathViewBox,\n keypoints,\n }\n if (isStrokeOnlyPresetShape) shapeData.strokeOnly = true\n return shapeData\n }\n return {\n ...data,\n type: 'text',\n isVertical,\n rotate: txtRotate,\n }\n}\n\nasync function processPicNode(node, warpObj, source) {\n let resObj\n if (source === 'slideMasterBg') resObj = warpObj['masterResObj']\n else if (source === 'slideLayoutBg') resObj = warpObj['layoutResObj']\n else resObj = warpObj['slideResObj']\n\n const cNvPr = getTextByPathList(node, ['p:nvPicPr', 'p:cNvPr'])\n const link = getHyperlinkFromCNvPr(cNvPr, warpObj)\n const order = node['attrs']['order']\n \n const rid = node['p:blipFill']['a:blip']['attrs']['r:embed']\n \n if (!rid || !resObj[rid]) return null\n\n const imgName = resObj[rid]['target']\n\n let xfrmNode = node['p:spPr']['a:xfrm']\n if (!xfrmNode) {\n const idx = getTextByPathList(node, ['p:nvPicPr', 'p:nvPr', 'p:ph', 'attrs', 'idx'])\n if (idx) xfrmNode = getTextByPathList(warpObj['slideLayoutTables'], ['idxTable', idx, 'p:spPr', 'a:xfrm'])\n }\n\n const { top, left } = getPosition(xfrmNode, undefined, undefined)\n const { width, height } = getSize(xfrmNode, undefined, undefined)\n const imageData = await getImageData(imgName, warpObj)\n\n const isFlipV = isOoxmlTrue(getTextByPathList(xfrmNode, ['attrs', 'flipV']))\n const isFlipH = isOoxmlTrue(getTextByPathList(xfrmNode, ['attrs', 'flipH']))\n\n let rotate = 0\n const rotateNode = getTextByPathList(node, ['p:spPr', 'a:xfrm', 'attrs', 'rot'])\n if (rotateNode) rotate = angleToDegrees(rotateNode)\n\n const videoNode = getTextByPathList(node, ['p:nvPicPr', 'p:nvPr', 'a:videoFile'])\n let videoRid, videoFile, videoFileExt\n let videoData = {\n ref: '',\n blob: '',\n }\n let isVdeoLink = false\n\n if (videoNode) {\n videoRid = videoNode['attrs']['r:link']\n videoFile = resObj[videoRid]['target']\n if (isVideoLink(videoFile)) {\n videoFile = escapeHtml(videoFile)\n isVdeoLink = true\n } \n else {\n videoFileExt = extractFileExtension(videoFile).toLowerCase()\n if (videoFileExt === 'mp4' || videoFileExt === 'webm' || videoFileExt === 'ogg') {\n videoData = await getVideoData(videoFile, warpObj)\n }\n else {\n videoData = {\n ref: videoFile,\n blob: '',\n }\n }\n }\n if (isVdeoLink) {\n videoData = {\n ref: videoFile,\n blob: '',\n }\n }\n }\n\n const audioNode = getTextByPathList(node, ['p:nvPicPr', 'p:nvPr', 'a:audioFile'])\n let audioRid, audioFile, audioFileExt\n let audioData = {\n ref: '',\n blob: '',\n }\n if (audioNode) {\n audioRid = audioNode['attrs']['r:link']\n audioFile = resObj[audioRid]['target']\n audioFileExt = extractFileExtension(audioFile).toLowerCase()\n if (audioFileExt === 'mp3' || audioFileExt === 'wav' || audioFileExt === 'ogg') {\n audioData = await getAudioData(audioFile, warpObj)\n }\n else {\n audioData = {\n ref: audioFile,\n blob: '',\n }\n }\n }\n\n if (videoNode && !isVdeoLink) {\n return {\n type: 'video',\n top,\n left,\n width, \n height,\n rotate,\n ref: videoData.ref,\n blob: videoData.blob,\n order,\n }\n } \n if (videoNode && isVdeoLink) {\n return {\n type: 'video',\n top,\n left,\n width, \n height,\n rotate,\n ref: videoData.ref,\n blob: videoData.blob,\n order,\n }\n }\n if (audioNode) {\n return {\n type: 'audio',\n top,\n left,\n width, \n height,\n rotate,\n ref: audioData.ref,\n blob: audioData.blob,\n order,\n }\n }\n\n let rect\n const srcRectAttrs = getTextByPathList(node, ['p:blipFill', 'a:srcRect', 'attrs'])\n if (srcRectAttrs && (srcRectAttrs.t || srcRectAttrs.b || srcRectAttrs.l || srcRectAttrs.r)) {\n rect = {}\n if (srcRectAttrs.t) rect.t = srcRectAttrs.t / 1000\n if (srcRectAttrs.b) rect.b = srcRectAttrs.b / 1000\n if (srcRectAttrs.l) rect.l = srcRectAttrs.l / 1000\n if (srcRectAttrs.r) rect.r = srcRectAttrs.r / 1000\n }\n\n const prstGeom = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'attrs', 'prst'])\n const custGeom = getTextByPathList(node, ['p:spPr', 'a:custGeom'])\n\n const { borderColor, borderWidth, borderType, strokeDasharray } = getBorder(node, undefined, warpObj)\n const filters = getPicFilters(node['p:blipFill'])\n const opacity = getPicFillOpacity(node['p:blipFill'])\n\n if (prstGeom || custGeom) {\n let shapType, path\n if (custGeom) {\n const identifiedShape = identifyShape(custGeom)\n shapType = identifiedShape !== 'custom' ? `custom:${identifiedShape}` : 'custom'\n path = getCustomShapePath(custGeom, width, height)\n }\n else {\n shapType = prstGeom\n path = getShapePath(prstGeom, width, height, node) || ''\n }\n\n const fill = {\n type: 'image',\n value: {\n ref: imageData.ref,\n base64: imageData.base64,\n blob: imageData.blob,\n opacity,\n rect,\n },\n }\n\n const shapeDataJson = {\n type: 'shape',\n shapType,\n path,\n top,\n left,\n width,\n height,\n rotate,\n isFlipV,\n isFlipH,\n order,\n fill,\n content: '',\n borderColor,\n borderWidth,\n borderType,\n borderStrokeDasharray: strokeDasharray,\n }\n\n if (filters) shapeDataJson.filters = filters\n if (link) shapeDataJson.link = link\n\n return shapeDataJson\n }\n\n const imageDataJson = {\n type: 'image',\n top,\n left,\n width,\n height,\n rotate,\n ref: imageData.ref,\n base64: imageData.base64,\n blob: imageData.blob,\n isFlipV,\n isFlipH,\n order,\n rect,\n geom: 'rect',\n borderColor,\n borderWidth,\n borderType,\n borderStrokeDasharray: strokeDasharray,\n opacity,\n }\n\n if (filters) imageDataJson.filters = filters\n if (link) imageDataJson.link = link\n\n return imageDataJson\n}\n\nasync function processGraphicFrameNode(node, warpObj, source) {\n const graphicTypeUri = getTextByPathList(node, ['a:graphic', 'a:graphicData', 'attrs', 'uri'])\n \n let result\n switch (graphicTypeUri) {\n case 'http://schemas.openxmlformats.org/drawingml/2006/table':\n result = await genTable(node, warpObj)\n break\n case 'http://schemas.openxmlformats.org/drawingml/2006/chart':\n result = await genChart(node, warpObj)\n break\n case 'http://schemas.openxmlformats.org/drawingml/2006/diagram':\n result = await genDiagram(node, warpObj)\n break\n case 'http://schemas.openxmlformats.org/presentationml/2006/ole':\n let oleObjNode = getTextByPathList(node, ['a:graphic', 'a:graphicData', 'mc:AlternateContent', 'mc:Fallback', 'p:oleObj'])\n if (!oleObjNode) oleObjNode = getTextByPathList(node, ['a:graphic', 'a:graphicData', 'p:oleObj'])\n if (oleObjNode) result = await processGroupSpNode(oleObjNode, warpObj, source)\n break\n default:\n }\n return result\n}\n\nasync function genTable(node, warpObj) {\n const order = node['attrs']['order']\n const tableNode = getTextByPathList(node, ['a:graphic', 'a:graphicData', 'a:tbl'])\n const xfrmNode = getTextByPathList(node, ['p:xfrm'])\n const { top, left } = getPosition(xfrmNode, undefined, undefined)\n const { width, height } = getSize(xfrmNode, undefined, undefined)\n\n const getTblPr = getTextByPathList(node, ['a:graphic', 'a:graphicData', 'a:tbl', 'a:tblPr'])\n let getColsGrid = getTextByPathList(node, ['a:graphic', 'a:graphicData', 'a:tbl', 'a:tblGrid', 'a:gridCol'])\n if (getColsGrid.constructor !== Array) getColsGrid = [getColsGrid]\n\n const colWidths = []\n if (getColsGrid) {\n for (const item of getColsGrid) {\n const colWidthParam = getTextByPathList(item, ['attrs', 'w']) || 0\n const colWidth = parseInt(colWidthParam) * RATIO_EMUs_Points\n colWidths.push(colWidth)\n }\n }\n\n const firstRowAttr = getTblPr['attrs'] ? getTblPr['attrs']['firstRow'] : undefined\n const firstColAttr = getTblPr['attrs'] ? getTblPr['attrs']['firstCol'] : undefined\n const lastRowAttr = getTblPr['attrs'] ? getTblPr['attrs']['lastRow'] : undefined\n const lastColAttr = getTblPr['attrs'] ? getTblPr['attrs']['lastCol'] : undefined\n const bandRowAttr = getTblPr['attrs'] ? getTblPr['attrs']['bandRow'] : undefined\n const bandColAttr = getTblPr['attrs'] ? getTblPr['attrs']['bandCol'] : undefined\n const tblStylAttrObj = {\n isFrstRowAttr: isOoxmlTrue(firstRowAttr) ? 1 : 0,\n isFrstColAttr: isOoxmlTrue(firstColAttr) ? 1 : 0,\n isLstRowAttr: isOoxmlTrue(lastRowAttr) ? 1 : 0,\n isLstColAttr: isOoxmlTrue(lastColAttr) ? 1 : 0,\n isBandRowAttr: isOoxmlTrue(bandRowAttr) ? 1 : 0,\n isBandColAttr: isOoxmlTrue(bandColAttr) ? 1 : 0,\n }\n\n let thisTblStyle\n const tbleStyleId = getTblPr['a:tableStyleId']\n if (tbleStyleId) {\n const tbleStylList = warpObj['tableStyles']['a:tblStyleLst']['a:tblStyle']\n if (tbleStylList) {\n if (tbleStylList.constructor === Array) {\n for (let k = 0; k < tbleStylList.length; k++) {\n if (tbleStylList[k]['attrs']['styleId'] === tbleStyleId) {\n thisTblStyle = tbleStylList[k]\n }\n }\n } \n else {\n if (tbleStylList['attrs']['styleId'] === tbleStyleId) {\n thisTblStyle = tbleStylList\n }\n }\n }\n }\n if (thisTblStyle) thisTblStyle['tblStylAttrObj'] = tblStylAttrObj\n\n let borders = {}\n const tblStyl = getTextByPathList(thisTblStyle, ['a:wholeTbl', 'a:tcStyle'])\n const tblBorderStyl = getTextByPathList(tblStyl, ['a:tcBdr'])\n if (tblBorderStyl) borders = getTableBorders(tblBorderStyl, warpObj)\n\n let tbl_bgcolor = ''\n let tbl_bgFillschemeClr = getTextByPathList(thisTblStyle, ['a:tblBg', 'a:fillRef'])\n if (tbl_bgFillschemeClr) {\n tbl_bgcolor = getSolidFill(tbl_bgFillschemeClr, undefined, undefined, warpObj)\n }\n if (tbl_bgFillschemeClr === undefined) {\n tbl_bgFillschemeClr = getTextByPathList(thisTblStyle, ['a:wholeTbl', 'a:tcStyle', 'a:fill', 'a:solidFill'])\n tbl_bgcolor = getSolidFill(tbl_bgFillschemeClr, undefined, undefined, warpObj)\n }\n\n let trNodes = tableNode['a:tr']\n if (trNodes.constructor !== Array) trNodes = [trNodes]\n \n const data = []\n const rowHeights = []\n for (let i = 0; i < trNodes.length; i++) {\n const trNode = trNodes[i]\n \n const rowHeightParam = getTextByPathList(trNodes[i], ['attrs', 'h']) || 0\n const rowHeight = parseInt(rowHeightParam) * RATIO_EMUs_Points\n rowHeights.push(rowHeight)\n\n const {\n fillColor,\n fontColor,\n fontBold,\n } = getTableRowParams(trNodes, i, tblStylAttrObj, thisTblStyle, warpObj)\n\n const tcNodes = trNode['a:tc']\n const tr = []\n\n if (tcNodes.constructor === Array) {\n for (let j = 0; j < tcNodes.length; j++) {\n const tcNode = tcNodes[j]\n let a_sorce\n if (j === 0 && tblStylAttrObj['isFrstColAttr'] === 1) {\n a_sorce = 'a:firstCol'\n if (tblStylAttrObj['isLstRowAttr'] === 1 && i === (trNodes.length - 1) && getTextByPathList(thisTblStyle, ['a:seCell'])) {\n a_sorce = 'a:seCell'\n } \n else if (tblStylAttrObj['isFrstRowAttr'] === 1 && i === 0 &&\n getTextByPathList(thisTblStyle, ['a:neCell'])) {\n a_sorce = 'a:neCell'\n }\n } \n else if (\n (j > 0 && tblStylAttrObj['isBandColAttr'] === 1) &&\n !(tblStylAttrObj['isFrstColAttr'] === 1 && i === 0) &&\n !(tblStylAttrObj['isLstRowAttr'] === 1 && i === (trNodes.length - 1)) &&\n j !== (tcNodes.length - 1)\n ) {\n if ((j % 2) !== 0) {\n let aBandNode = getTextByPathList(thisTblStyle, ['a:band2V'])\n if (aBandNode === undefined) {\n aBandNode = getTextByPathList(thisTblStyle, ['a:band1V'])\n if (aBandNode) a_sorce = 'a:band2V'\n } \n else a_sorce = 'a:band2V'\n }\n }\n if (j === (tcNodes.length - 1) && tblStylAttrObj['isLstColAttr'] === 1) {\n a_sorce = 'a:lastCol'\n if (tblStylAttrObj['isLstRowAttr'] === 1 && i === (trNodes.length - 1) && getTextByPathList(thisTblStyle, ['a:swCell'])) {\n a_sorce = 'a:swCell'\n } \n else if (tblStylAttrObj['isFrstRowAttr'] === 1 && i === 0 && getTextByPathList(thisTblStyle, ['a:nwCell'])) {\n a_sorce = 'a:nwCell'\n }\n }\n const text = genTextBody(tcNode['a:txBody'], tcNode, undefined, undefined, undefined, warpObj)\n const cell = await getTableCellParams(tcNode, thisTblStyle, a_sorce, warpObj)\n const td = { text }\n if (cell.rowSpan) td.rowSpan = cell.rowSpan\n if (cell.colSpan) td.colSpan = cell.colSpan\n if (cell.vMerge) td.vMerge = cell.vMerge\n if (cell.hMerge) td.hMerge = cell.hMerge\n if (cell.vAlign) td.vAlign = cell.vAlign\n if (cell.fontBold || fontBold) td.fontBold = cell.fontBold || fontBold\n if (cell.fontColor || fontColor) td.fontColor = cell.fontColor || fontColor\n if (cell.fillColor || fillColor || tbl_bgcolor) td.fillColor = cell.fillColor || fillColor || tbl_bgcolor\n if (cell.borders) td.borders = cell.borders\n\n tr.push(td)\n }\n } \n else {\n let a_sorce\n if (tblStylAttrObj['isFrstColAttr'] === 1 && tblStylAttrObj['isLstRowAttr'] !== 1) {\n a_sorce = 'a:firstCol'\n } \n else if (tblStylAttrObj['isBandColAttr'] === 1 && tblStylAttrObj['isLstRowAttr'] !== 1) {\n let aBandNode = getTextByPathList(thisTblStyle, ['a:band2V'])\n if (!aBandNode) {\n aBandNode = getTextByPathList(thisTblStyle, ['a:band1V'])\n if (aBandNode) a_sorce = 'a:band2V'\n } \n else a_sorce = 'a:band2V'\n }\n if (tblStylAttrObj['isLstColAttr'] === 1 && tblStylAttrObj['isLstRowAttr'] !== 1) {\n a_sorce = 'a:lastCol'\n }\n\n const text = genTextBody(tcNodes['a:txBody'], tcNodes, undefined, undefined, undefined, warpObj)\n const cell = await getTableCellParams(tcNodes, thisTblStyle, a_sorce, warpObj)\n const td = { text }\n if (cell.rowSpan) td.rowSpan = cell.rowSpan\n if (cell.colSpan) td.colSpan = cell.colSpan\n if (cell.vMerge) td.vMerge = cell.vMerge\n if (cell.hMerge) td.hMerge = cell.hMerge\n if (cell.vAlign) td.vAlign = cell.vAlign\n if (cell.fontBold || fontBold) td.fontBold = cell.fontBold || fontBold\n if (cell.fontColor || fontColor) td.fontColor = cell.fontColor || fontColor\n if (cell.fillColor || fillColor || tbl_bgcolor) td.fillColor = cell.fillColor || fillColor || tbl_bgcolor\n if (cell.borders) td.borders = cell.borders\n\n tr.push(td)\n }\n data.push(tr)\n }\n\n let actualTableWidth = colWidths.reduce((sum, width) => sum + width, 0)\n if (actualTableWidth) actualTableWidth = numberToFixed(actualTableWidth)\n\n return {\n type: 'table',\n top,\n left,\n width: actualTableWidth || width,\n height,\n data,\n order,\n borders,\n rowHeights,\n colWidths,\n }\n}\n\nasync function genChart(node, warpObj) {\n const order = node['attrs']['order']\n const xfrmNode = getTextByPathList(node, ['p:xfrm'])\n const { top, left } = getPosition(xfrmNode, undefined, undefined)\n const { width, height } = getSize(xfrmNode, undefined, undefined)\n\n const rid = node['a:graphic']['a:graphicData']['c:chart']['attrs']['r:id']\n let refName = getTextByPathList(warpObj['slideResObj'], [rid, 'target'])\n if (!refName) refName = getTextByPathList(warpObj['layoutResObj'], [rid, 'target'])\n if (!refName) refName = getTextByPathList(warpObj['masterResObj'], [rid, 'target'])\n if (!refName) return null\n\n const content = await readXmlFile(warpObj['zip'], refName)\n const plotArea = getTextByPathList(content, ['c:chartSpace', 'c:chart', 'c:plotArea'])\n\n const chart = getChartInfo(plotArea, warpObj)\n\n if (!chart) return null\n\n const data = {\n type: 'chart',\n top,\n left,\n width,\n height,\n data: chart.data,\n colors: chart.colors,\n chartType: chart.type,\n order,\n }\n if (chart.marker !== undefined) data.marker = chart.marker\n if (chart.barDir !== undefined) data.barDir = chart.barDir\n if (chart.holeSize !== undefined) data.holeSize = chart.holeSize\n if (chart.grouping !== undefined) data.grouping = chart.grouping\n if (chart.style !== undefined) data.style = chart.style\n\n return data\n}\n\nasync function genDiagram(node, warpObj) {\n const order = node['attrs']['order']\n const xfrmNode = getTextByPathList(node, ['p:xfrm'])\n const { left, top } = getPosition(xfrmNode, undefined, undefined)\n const { width, height } = getSize(xfrmNode, undefined, undefined)\n\n const diagramWarpObj = await getDiagramNodeContext(node, warpObj)\n const dgmDrwSpArray = getTextByPathList(diagramWarpObj['digramFileContent'], ['p:drawing', 'p:spTree', 'p:sp'])\n const elements = []\n let textList = []\n if (dgmDrwSpArray) {\n const spList = Array.isArray(dgmDrwSpArray) ? dgmDrwSpArray : [dgmDrwSpArray]\n\n for (const item of spList) {\n const el = await processSpNode(item, diagramWarpObj, 'diagramBg')\n if (el) elements.push(el)\n }\n }\n if (diagramWarpObj.diagramContent && diagramWarpObj.diagramContent.data) {\n textList = getSmartArtTextData(diagramWarpObj.diagramContent.data)\n }\n\n return {\n type: 'diagram',\n left,\n top,\n width,\n height,\n elements,\n textList,\n order,\n }\n}\n"],"names":["cust_attr_order","RAW_NODE_TAGS","Set","isWhitespaceTextNode","node","simplifyLostLess","children","parentAttributes","out","Object","child","kids","readXmlFile","zip","filename","file","data","txml","isOoxmlTrue","value","base64ArrayBuffer","arrayBuffer","encodings","bytes","Uint8Array","byteLength","byteRemainder","mainLength","base64","a","b","c","d","chunk","i","extractFileExtension","eachElement","func","result","Array","getTextByPathList","path","key","angleToDegrees","angle","Math","escapeHtml","text","map","m","getMimeType","imgFileExt","mimeType","isVideoLink","vdoFile","urlRegex","toHex","n","hex","hasValidText","htmlString","DOMParser","parser","doc","numberToFixed","num","fractionDigits","parseFloat","getSchemeColorFromTheme","schemeClr","warpObj","clrMap","phClr","color","slideLayoutClrOvride","sldClrMapOvr","schmClrName","refNode","EMR_EOF","EMR_STRETCHDIBITS","EMF_SIGNATURE","BI_RGB","extractEmfBitmap","view","DataView","offset","recordType","recordSize","bitmap","parseStretchDibits","offBmiSrc","cbBmiSrc","offBitsSrc","cbBitsSrc","bmiStart","biWidth","biHeight","biBitCount","biCompression","width","height","bitsStart","bitsData","topDown","pixels","Uint8ClampedArray","bytesPerPixel","rowStride","y","srcRow","srcOffset","dstOffset","x","srcIdx","emfToPngDataUrl","document","canvas","ctx","ImageData","hueToRgb","t1","t2","hue","hslToRgb","sat","light","r","g","applyShade","rgbStr","shadeValue","isAlpha","tinycolor","cacl_l","applyTint","tintValue","applyLumOff","lum","applyLumMod","multiplier","applyHueMod","cacl_h","applySatMod","cacl_s","getColorName2Hex","name","colorName","colorHex","nameLower","findIndx","getFillType","fillType","createImageData","ref","createMediaData","getMediaCache","cacheKey","cache","loadMedia","filePath","mode","normalizedPath","cacheItem","fileExt","zipFile","pngDataUrl","pngBytes","atob","URL","Blob","undefined","loadImage","imgPath","loadVideo","videoPath","loadAudio","audioPath","getImageMode","imageMode","getVideoMode","videoMode","getAudioMode","audioMode","getImageData","imageData","getVideoData","videoData","getAudioData","audioData","getPicFill","type","rId","align","alignType","fillRectAttrs","parseInt","tileAttrs","getPicFillOpacity","aBlipNode","aphaModFixNode","opacity","getPicFilters","filters","extLstNode","extNodes","extNode","imgLayerNode","imgEffects","effectArray","effect","satAttr","brightAttr","contrastAttr","amountAttr","amount","tempAttr","getBgPicFill","bgPr","sorce","picFill","getGradientFill","gsLst","colors","lo_color","getSolidFill","pos","lin","rot","pathType","getPatternFill","pattFill","fgColorNode","bgColorNode","foregroundColor","backgroundColor","getBgGradientFill","slideMasterContent","grdFill","getSlideBackgroundFill","slideContent","slideLayoutContent","bgRef","background","backgroundType","bgFillTyp","sldFill","clrMapOvr","sldBgClr","gradientFill","patternFill","idx","Number","trueIdx","bgFillLst","sortblAry","bgFillLstTyp","obj","sortByOrder","bgFillLstIdx","getShapeFillCandidates","source","slideLayoutSpNode","slideMasterSpNode","candidates","resolveShapeFillFromNode","groupHierarchy","spPr","fillValue","shpFill","groupFill","findFillInGroupHierarchy","useBgFill","bgFill","fillRefNode","getShapeFill","options","candidate","groupNode","grpSpPr","solidFill","clrNode","defBultColorVals","red","green","blue","prstClr","hsl2rgb","sysClr","alpha","isNaN","al_color","hueMod","lumMod","lumOff","satMod","shade","tint","getLineEnd","attrs","lineEnd","getBorder","elType","spPrLineNode","lnRefNode","lineNode","lnIdx","isNoFill","hasFill","hasWidth","borderWidth","hasLineNode","borderColor","gradValue","borderType","strokeDasharray","headEnd","tailEnd","extractChartColors","serNode","schemeClrs","clr","extractChartData","dataMat","innerNode","index","dataRow","colName","rowNames","extractScatterChartData","serNodes","firstSerNode","xData","yData","getChartInfo","plotArea","chart","RATIO_Inches_EMUs","RATIO_Inches_Points","RATIO_EMUs_Points","getParagraphLevel","lvlIdx","lvlNode","getAlignFromTextNode","lvlStr","algn","getHorizontalAlign","pNode","getVerticalAlign","anchor","getTextDirection","sources","direction","getTextAutoFit","checkBodyPr","bodyPr","wrap","wrapText","fontScale","scalePercent","nodeCheck","layoutCheck","masterCheck","pushParagraphStyleNode","styleNodes","styleNode","appendTextBodyParagraphStyleNodes","textBodyNode","lvl","lvlPath","appendShapeParagraphStyleNodes","shapeNode","appendMasterTextParagraphStyleNodes","slideMasterTextStyles","appendDefaultTextParagraphStyleNodes","defaultTextStyle","getParagraphStyleNodes","pPrNode","getLineSpacingValue","spacingNode","spcPct","spcPts","getParagraphSpacingValue","getParagraphIndentValue","attrName","val","getParagraphSpacing","spacing","lineSpacing","spaceBefore","spaceAfter","lnSpcReductionVal","getLnSpcReduction","reduction","src","getParagraphIndent","indent","marginLeft","textIndent","DEFAULT_INSET_EMU","getInsetAttr","slideNode","layoutNode","masterNode","v","emuToPt","emuStr","getTextInsets","nodeBodyPr","layoutBodyPr","masterBodyPr","li","ti","ri","bi","l","t","getPosition","slideSpNode","off","getSize","ext","findOMath","results","localName","tag","firstRawOMath","found","oMathToLatex","simplifiedNode","rawNode","math","latexFormart","ommlNodeToLatex","toArray","mathPayloads","container","direct","para","inner","getInlineMathRuns","runs","push","order","latex","wrapper","findMathRunPr","skipCtrlPr","rPr","getMathRunStyleNode","mathRun","mathNode","mathRunHasOwnSize","mathRunHasOwnColor","decodeXML","getShadow","chdwClrNode","outerShdwAttrs","dir","dist","blurRad","vx","hx","pushStyleNode","getLevelPath","appendTextBodyStyleNodes","appendShapeStyleNodes","appendMasterTextStyleNodes","appendDefaultTextStyleNodes","getBaseFontStyleNodes","runStyleNode","getFontStyleNodes","getFontAttr","attrValue","containsEastAsian","getFontTypeface","isEA","latin","ea","cs","sym","getColorFromNode","getFontColorFromStyleNodes","getTextShadowFromStyleNodes","txtShadow","shadow","getFontType","typeface","fontSchemeNode","getFontColor","pFontStyle","layoutFontStyle","masterFontStyle","getFontSize","sz","fontSize","getFontBold","getFontItalic","getFontDecoration","getFontDecorationLine","getFontSpace","spc","getFontSubscript","baseline","getFontShadow","h","blur","getTextNodeValue","genTextBody","spNode","pNodes","listTypes","rNode","fldNode","brNode","item","mathRuns","listType","getListType","listLevel","getListLevel","alignStyle","styleText","closedListType","prevStyleInfo","accumulatedText","firstTextRun","lastTextRun","rNodeItem","processedText","siblingRun","mathStyle","getMathRunStyleText","styleInfo","getSpanStyleInfo","genSpanElement","sizeNode","colorNode","fontColor","hasContent","schemeColorToCss","applyHyperlinkRunStyle","next","runFill","runHasOwnColor","hlinkColor","runUnderline","hasLink","linkURL","fontType","fontBold","fontItalic","fontDecoration","fontDecorationLine","fontSpace","subscript","stops","gradientStyle","linkID","shapeArc","cX","cY","rX","rY","stAng","endAng","isClose","dData","radians","getCustomShapePath","custShapType","w","pathLstNode","pathNodes","maxX","maxY","moveToNode","lnToNodes","cubicBezToNodes","quadBezToNodes","arcToNodes","closeNode","multiSapeAry","moveToPtNode","moveToNoPt","spX","spY","lnToPtNode","lnToNoPt","ptX","ptY","cubicBezToPtNodesAry","pts_ary","pt","pt_obj","quadBezToPtNodesAry","arcToNodesAry","arcToNodesAttrs","hR","wR","swAng","shftX","shftY","arcToPtNode","Infinity","k","Lx","Ly","Cx1","Cy1","Cx2","Cy2","Cx3","Cy3","Qx1","Qy1","Qx2","Qy2","isStrokeOnlyCustomGeometry","pathNodeList","identifyShape","shapeData","pathLst","pathWidth","pathHeight","commands","extractPathCommands","analysis","analyzePathCommands","matchShape","moveTo","lineToList","normalizeToArray","lnTo","cubicList","cubic","pts","points","arcList","arc","quadList","quad","cmd","checkIfCircular","bezierCommands","endpoints","hasTop","p","hasBottom","hasLeft","hasRight","lineCount","curveCount","isClosed","vertices","hasCurves","isCircular","matchPolygon","baseShape","matchPolygonByLineCount","uniqueVertices","removeDuplicateVertices","vertexCount","matchQuadrilateral","threshold","unique","isDuplicate","u","edges","p1","p2","isRectangle","isRhombus","isParallelogram","isTrapezoid","tolerance","edge02Similar","edge13Similar","e1","e2","dotProduct","cosAngle","avgLength","sum","e","slope0","slope2","slope1","slope3","parallel02","parallel13","convertEOTtoTTF","eotBuffer","eotSize","fontDataSize","version","magicNumber","ttfOffset","ttfBytes","ttfMagic","getFontData","fontPath","fontFilename","fontFile","buffer","blobObj","SYSTEM_FONT_FALLBACK_MAP","getFontFallback","fontName","lowerName","guessGenericFamily","getTableTextColor","tcTxStyle","getTableBorders","borders","border","getTableCellParams","tcNode","thisTblStyle","cellSource","rowSpan","colSpan","vMerge","hMerge","fillColor","getCelFill","cellObj","fill","bgFillschemeClr","rowTxtStyl","lin_bottm","lin_top","lin_left","lin_right","getTableRowParams","trNodes","tblStylAttrObj","local_fillColor","local_fontColor","shapePie","H","adj1","adj2","pieVal","piAngle","size","radiusY","radiusX","centerX","centerY","startRadians","endRadians","startX","startY","endX","endY","longArc","shapeGear","innerRadius","outerRadius","cx","cy","notches","radiusO","radiusI","taperO","taperI","pi2","taperAI","taperAO","toggle","increment","condition","shapeSnipRoundRect","shapeType","adjType","adjA","adjB","adjC","adjD","rA","rB","rC","rD","getShapePath","shapType","pathData","x1","y1","y2","y3","y4","y5","y6","y7","y8","y9","x2","x3","x4","x5","x6","x7","hc","vc","ss","dx2","g9","g10","g11","g12","g13","g14","g15","g16","g17","dx1","g19","g20","g21","g23","g24","g27","g29","g30","g31","g33","g36","g37","g41","g42","cX1","cX2","cY3","cX4","g18","g22","g25","g26","g28","g32","g34","g35","g38","cY1","cY2","g39","g40","g43","g44","g45","g46","g47","cX3","cY4","cd2","cd4","c3d4","wd2","hd2","idy","ib","ang1","ang1Dg","rx","ry","angVal","iDx","il","ir","it","shapAdjst_ary","sAdj1_val","sAdj2_val","shpTyp","adjTyp","adj","sAdj_name","sAdj1","sAdj2","sAdj","shapAdjst","shapAdjst_val","p1x","p1y","p2x","p2y","p3x","p3y","adjst_val","p4x","p4y","vf","cnstVal1","cnstVal2","angVal1","maxAdj","shd2","dy1","iwd2","ihd2","sdx","sdy","sx1","sx2","sy1","sy2","hf","swd2","svc","dy2","sdx1","sdx2","sdy1","sdy2","sx3","sx4","sy3","hd4","dx3","dy3","sdx3","sx5","sx6","sdy3","sy4","wd4","sy5","sy6","sdx4","sdy4","sx7","sx8","sy7","sy8","dx4","dx5","dy4","dy5","x8","x9","x10","y10","sdx5","sdx6","sdy5","sdy6","sx9","sx10","sx11","sx12","sy9","sy10","sy11","sy12","dx6","dx7","dy6","dy7","x11","x12","x13","x14","y11","y12","y13","y14","sdx7","sdx8","sdy7","sdy8","sx13","sx14","sx15","sx16","sy13","sy14","sy15","sy16","shapAdjstAry","fmla","a1","dr","outerPath","innerPath","ang","ct","st","drd2","dang","stAng1","stAng2","ct1","st1","m1","n1","stAng1deg","stAng2deg","swAng2deg","outerCircle","slash1","slash2","cnsVal","minWH","maxAdj2","a2","g2","maxAdj1","adj3","cd1","istAng","a3","sw11","sw12","iswAng","iendAng","stRd","istRd","wt1","ht1","wt2","ht2","cnstVal3","q1","q2","q3","cd","cnsVal1","cnsVal2","r2","tw","th","sw","sh","rd45","refr","cnstVa3","cnstVa4","g0","g1","g5","g6","ox1","oy1","ox2","oy2","x15","x16","x17","x18","x19","y15","y16","y17","y18","x0","y0","rX1","rY1","rX2","rY2","rX3","rY3","rX4","rY4","rY5","rX6","rY6","rX7","rY7","rX8","rY8","rX9","rY9","rX10","rY10","rX11","sA1","wA1","sA2","wA2","sA3","wA3","sA4","wA4","sA5","wA5","sA6","wA6","sA7","wA7","sA8","wA8","sA9","wA9","sA10","wA10","sA11","wA11","getArc","sA","wA","cloudPath","lastPoint","arcs","arcParams","arcPath","lastL","coords","dxPos","dyPos","xPos","yPos","ht","wt","g3","g4","g7","g8","x23","x24","x25","calloutPath","x1_mouth","ch","ch2","ch4","pang","enAng","dq","dz","xg1","xg2","yg1","yg2","xl","xt","xr","xb","yl","yt","yr","yb","u1","u2","v2","adj4","adj5","adj6","adj7","adj8","baseRect","cnstVal4","w1","ly1","ry4","ly2","ry3","ly4","ry2","y2_arc","cnstVal5","cnstVal6","wd8","wd32","of2","dx8","q10","minAdj3","f1","cx1","cx2","q1_h","q4","q5","rh","q8","cx4","q9","cx5","cy1","q6","cy3","cy4","cy6","cu1","u3","cu3","u5","u6","cu4","cu6","u7","max_sAdj2_const","sAdj2_val2","maxAdj3","aw2","th2","dh2","ah","bw","bh","bs","maxAdj4","a4","bd","bd3","bd2","minAdj5","a5","ssd8","ssd16","ssd32","aw","q7","q11","dx","dh","swAngDeg","mswAng","dang2","dang2Deg","swAng2","swAng3","dy","swAngDg","swAng2Dg","stAngDg","mswAngDg","swAng2dg","stAng3","stAng2dg","stAng3dg","angVal2","crAng","cadj2","xadj2","len","bhw","bhw2","dx67","dx57","dx47","dx37","rx6","rx5","rx4","rx3","rxt","lxt","lx","ly","dlx","drx","dly","dry","ma3h","ma3w","yg","rad","mAdj2","sa","ca","ta","dl","lM","xM","yM","dxAM","dyAM","xA","yA","xB","yB","yC","xD","xE","xF","xL","yG","yH","yI","dVal","match","command","newX","newY","c1x","c1y","newC1X","newC1Y","hd6","ad1","ad2","alfa","dx0","xC","yF","yE","dy22","yD","yP1","xP1","yP2","xP2","rdAngVal1","rdAngVal2","rdAngVal3","thh","rw1","rh1","rw2","rh2","rw3","rh3","wtH","htH","dxH","dyH","xH","rI","u8","u9","u12","u15","u18","u21","maxAng","aAng","ptAng","wtA","htA","dxA","dyA","dxG","dyG","xG","dxB","dyB","rO","x1O","y1O","x2O","y2O","dxO","dyO","dO","DO","sdelO","sdyO","dxF1","dxF2","dyF1","dyF2","q22","dxF","dyF","x1I","y1I","x2I","y2I","dxI","dyI","dI","DI","sdelI","dxC1","dxC2","dyC1","dyC2","v22","dxC","dyC","ist0","isw1","p5","xGp","yGp","xBp","yBp","en0","en2","sw0","strtAng","endAngVal","stiAng","ediAng","minAng","dxE","dyE","dxD","dyD","istAng0","iswAng0","stAng0","findTransitionNode","content","rootElement","path1","transitionNode","path2","path3","parseTransition","transition","durationFound","durRegex","effectRegex","effectNode","effectAttrs","PRESET_CLASSES","NODE_TYPE_TO_TRIGGER","asArray","parseMs","ms","findTimingNode","collectSpids","spid","String","collectDuration","walk","collectFilter","filter","collectDelay","inherited","fromAttr","condRoot","cond","fromCond","collectEffects","inheritedTrigger","inheritedDelay","trigger","delay","spids","duration","effectTrigger","animation","parseBuildList","timing","bldLst","kinds","builds","parseTiming","loadDiagramFile","transformDrawing","contentStr","JSON","getDiagramDrawingRelId","dataContent","relId","getDiagramNodeContext","relIds","diagramContent","digramFileContent","diagramResObj","diagramDataTarget","diagramLayoutTarget","diagramQuickStyleTarget","diagramColorsTarget","drawingRelId","drawingTarget","drawingName","diagramResFileName","digramResContent","relationshipArray","relationshipArrayItem","relTarget","getSmartArtTextData","ptLst","textBody","nodeText","paragraphs","cleanText","REL_TYPE_NAMESPACES","getRelTypeName","namespace","parse","slides","loadedImages","loadedVideos","loadedAudios","xmlCache","parseOptions","fileBytes","ArrayBuffer","File","buf","Buffer","Error","JSZip","filesInfo","getContentTypes","getSlideInfo","themeContent","themeColors","getTheme","usedFonts","getUsedFonts","singleSlide","processSingleSlide","asNodeArray","sortSlideXml","n2","normalizePartName","relationshipsPartFor","partName","slash","resolvePartTarget","sourcePart","target","raw","seg","relationshipRid","getPresentationPart","rels","rel","targetMode","loc","getSlidesFromPresentation","presentationPart","relItems","relsMap","slideTargets","id","presentation","sldIds","ordered","sldId","rid","ContentTypesJson","overrides","overrideSlides","slideLayoutsLocArray","contentType","slidesLocArray","embeddedFontList","embeddedFonts","relsContent","FONT_VARIANTS","embeddedFont","fontBlob","variant","variantNode","sldSzAttrs","themeURI","preResContent","relationshipItem","masterResContent","masterRelationshipArray","themeFilename","clrScheme","readXmlFileCached","sldFileName","resName","resContent","noteFilename","layoutFilename","masterFilename","slideResObj","layoutResObj","masterResObj","themeResObj","relType","isExternal","slideNotesContent","note","getNote","slideLayoutTables","indexNodes","slideLayoutResFilename","slideLayoutResContent","slideMasterTables","slideMasterResFilename","slideMasterResContent","currentThemeContent","themeName","themeResFileName","themeResContent","tableStyles","nodes","layoutElements","getLayoutElements","elements","nodeKey","ret","processNodesInSlide","animations","showMasterSpOnSlide","isHidden","hideBackground","getHyperlinkFromCNvPr","cNvPr","hlinkClick","linkId","res","noteContent","spNodes","phType","pPr","rNodes","nodesSldLayout","nodesSldMaster","showMasterSp","ph","keys","spTreeNode","idTable","idxTable","typeTable","targetNode","targetNodeItem","nvSpPrNode","nodeValue","json","processSpNode","processCxnSpNode","processPicNode","processGraphicFrameNode","processGroupSpNode","processMathNode","choice","fallback","xfrmNode","top","left","oMath","blipFill","sp","parentGroupHierarchy","chx","chy","chcx","chcy","isFlipV","isFlipH","rotate","ws","hs","currentGroupHierarchy","transformGroupedElement","element","offsetX","offsetY","elementRotate","normalizedRotate","isUniformScale","shouldSwapDimensions","nextCenterX","nextCenterY","widthScale","heightScale","transformed","processedElements","processNestedGroupElements","depth","processed","txBoxVal","link","genShape","xfrmList","slideXfrmNode","slideLayoutXfrmNode","slideMasterXfrmNode","keypoints","adjList","pathViewBox","txtXframeNode","txtRotate","txtXframeRot","outerShdwNode","vAlign","textDirection","isVertical","autoFit","textInset","isHasValidText","customShapeData","shapePath","STROKE_ONLY_PRESET_SHAPE_TYPES","isStrokeOnlyPresetShape","resObj","imgName","rotateNode","videoNode","videoRid","videoFile","videoFileExt","isVdeoLink","audioNode","audioRid","audioFile","audioFileExt","rect","srcRectAttrs","prstGeom","custGeom","identifiedShape","shapeDataJson","imageDataJson","graphicTypeUri","genTable","genChart","genDiagram","oleObjNode","tableNode","getTblPr","getColsGrid","colWidths","colWidthParam","colWidth","firstRowAttr","firstColAttr","lastRowAttr","lastColAttr","bandRowAttr","bandColAttr","tbleStyleId","tbleStylList","tblStyl","tblBorderStyl","tbl_bgcolor","tbl_bgFillschemeClr","rowHeights","trNode","rowHeightParam","rowHeight","tcNodes","tr","j","a_sorce","aBandNode","cell","td","actualTableWidth","refName","diagramWarpObj","dgmDrwSpArray","textList","spList","el"],"mappings":"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"}
|