ppt2json 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -2
- package/dist/index.d.mts +44 -26
- package/dist/index.d.ts +44 -26
- package/dist/index.js +202 -244
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +202 -248
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../index.ts","../parser/parse.ts","../../../../node_modules/.pnpm/txml@5.2.1/node_modules/txml/dist/txml.mjs","../parser/readXmlFile.ts","../../../../node_modules/.pnpm/tinycolor2@1.6.0/node_modules/tinycolor2/esm/tinycolor.js","../parser/utils.ts","../parser/schemeColor.ts","../parser/border.ts","../parser/color.ts","../parser/fill.ts","../parser/chart.ts","../parser/align.ts","../parser/constants.ts","../parser/position.ts","../parser/shadow.ts","../parser/fontStyle.ts","../parser/text.ts","../parser/shape.ts","../parser/table.ts","../parser/math.ts","../parser/shapePath.ts","../parser/animation.ts","../parser/diagram.ts","../utils.ts","../element-mapper.ts","../slide-normalizer.ts"],"sourcesContent":["import JSZip from 'jszip'\nimport {\n ENABLE_DECK_JSON,\n PPTX_JSON_PAYLOAD_PATH,\n PPTX_JSON_PAYLOAD_VERSION\n} from 'json2pptx'\nimport type { Deck } from './types'\nimport { parse } from './parser/parse'\nimport type { PptxParseResult } from './parser/parse'\nimport { normalizeSlide } from './slide-normalizer'\nimport { mapColor, toPx } from './utils'\n\nexport type ParsedResult = {\n deck: Deck\n warnings: string[]\n}\n\ntype EmbeddedDeckPayload =\n | Deck\n | {\n version?: number\n deck?: Deck\n }\n\ntype EmbeddedDeckResolution = {\n deck?: Deck\n warnings: string[]\n}\n\nconst DEFAULT_DECK_TITLE = '未命名演示文稿'\nconst DEFAULT_THEME = {\n fontColor: '#333',\n fontName: '',\n backgroundColor: '#fff',\n shadow: {\n h: 3,\n v: 3,\n blur: 2,\n color: '#808080'\n },\n outline: {\n width: 2,\n color: '#525252',\n style: 'solid'\n }\n} as const\n\nexport async function parsePptxToJson(file: File): Promise<ParsedResult> {\n const fileBuffer = await file.arrayBuffer()\n const zip = await JSZip.loadAsync(fileBuffer)\n\n const embedded = ENABLE_DECK_JSON ? await resolveEmbeddedDeck(zip) : null\n if (embedded?.deck) {\n return {\n deck: embedded.deck,\n warnings: embedded.warnings\n }\n }\n\n return {\n deck: await buildDeckFromPptx(fileBuffer),\n warnings: embedded?.warnings ?? []\n }\n}\n\nasync function resolveEmbeddedDeck(zip: JSZip): Promise<EmbeddedDeckResolution | null> {\n const embeddedFile =\n zip.file(PPTX_JSON_PAYLOAD_PATH) ??\n Object.values(zip.files).find((entry) =>\n entry.name.endsWith(`/${PPTX_JSON_PAYLOAD_PATH}`)\n ) ??\n null\n\n if (!embeddedFile) {\n return null\n }\n\n const payloadText = await embeddedFile.async('string')\n\n try {\n const parsed = JSON.parse(payloadText) as EmbeddedDeckPayload\n\n if (isDeckEnvelope(parsed) && parsed.deck) {\n return {\n deck: parsed.deck,\n warnings:\n parsed.version && parsed.version !== PPTX_JSON_PAYLOAD_VERSION\n ? [\n `Embedded JSON payload version ${parsed.version} differs from ${PPTX_JSON_PAYLOAD_VERSION}.`\n ]\n : []\n }\n }\n\n return {\n deck: parsed as Deck,\n warnings: []\n }\n } catch {\n return {\n warnings: ['Embedded JSON payload could not be parsed. Falling back to PPTX parsing.']\n }\n }\n}\n\nfunction isDeckEnvelope(payload: EmbeddedDeckPayload): payload is { version?: number; deck?: Deck } {\n return typeof payload === 'object' && payload !== null && 'deck' in payload\n}\n\nasync function buildDeckFromPptx(buffer: ArrayBuffer): Promise<Deck> {\n const pptxJson = await parse(buffer)\n const width = toPx(pptxJson.size?.width)\n const height = toPx(pptxJson.size?.height)\n const themeColors = mapThemeColors(pptxJson)\n const slides = (Array.isArray(pptxJson.slides) ? pptxJson.slides : []).map(\n (slide, index) => normalizeSlide(slide, index)\n )\n\n return {\n title: DEFAULT_DECK_TITLE,\n width,\n height,\n theme: {\n ...DEFAULT_THEME,\n themeColors\n },\n slides\n }\n}\n\nfunction mapThemeColors(pptxJson: PptxParseResult): string[] | undefined {\n if (!Array.isArray(pptxJson.themeColors)) {\n return undefined\n }\n\n return pptxJson.themeColors.map((color) => normalizeThemeColor(color))\n}\n\nfunction normalizeThemeColor(color: string): string {\n const mapped = mapColor(color)\n if (!mapped) {\n return color\n }\n\n return /^#([0-9A-F]{6}|[0-9A-F]{8})$/.test(mapped) ? mapped : color\n}\n\nexport type { Deck, Slide, SlideElement } from './types'\n","// @ts-nocheck\n\nimport JSZip from 'jszip'\nimport { readXmlFile } from './readXmlFile'\nimport { getBorder } from './border'\nimport { getSlideBackgroundFill, getShapeFill, getSolidFill, getPicFill, getPicFilters } from './fill'\nimport { getChartInfo } from './chart'\nimport { getVerticalAlign, getTextAutoFit } from './align'\nimport { getPosition, getSize } from './position'\nimport { genTextBody } from './text'\nimport { getCustomShapePath, identifyShape } from './shape'\nimport { extractFileExtension, base64ArrayBuffer, getTextByPathList, angleToDegrees, getMimeType, isVideoLink, escapeHtml, hasValidText, numberToFixed } from './utils'\nimport { getShadow } from './shadow'\nimport { getTableBorders, getTableCellParams, getTableRowParams } from './table'\nimport { RATIO_EMUs_Points } from './constants'\nimport { findOMath, latexFormart, parseOMath } from './math'\nimport { getShapePath } from './shapePath'\nimport { parseTransition, findTransitionNode } from './animation'\nimport { getSmartArtTextData } from './diagram'\n\nexport type PptxParseResult = {\n slides: any[]\n themeColors: string[]\n size: {\n width: number\n height: number\n }\n}\n\nexport async function parse(file: ArrayBuffer): Promise<PptxParseResult> {\n const slides = []\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\n for (const filename of filesInfo.slides) {\n const singleSlide = await processSingleSlide(zip, filename, themeContent, defaultTextStyle)\n slides.push(singleSlide)\n }\n\n return {\n slides,\n themeColors,\n size: {\n width,\n height,\n },\n }\n}\n\nasync function getContentTypes(zip) {\n const ContentTypesJson = await readXmlFile(zip, '[Content_Types].xml')\n const subObj = ContentTypesJson['Types']['Override']\n let slidesLocArray = []\n let slideLayoutsLocArray = []\n\n for (const item of subObj) {\n switch (item['attrs']['ContentType']) {\n case 'application/vnd.openxmlformats-officedocument.presentationml.slide+xml':\n slidesLocArray.push(item['attrs']['PartName'].substr(1))\n break\n case 'application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml':\n slideLayoutsLocArray.push(item['attrs']['PartName'].substr(1))\n break\n default:\n }\n }\n \n const sortSlideXml = (p1, p2) => {\n const n1 = +/(\\d+)\\.xml/.exec(p1)[1]\n const n2 = +/(\\d+)\\.xml/.exec(p2)[1]\n return n1 - n2\n }\n slidesLocArray = slidesLocArray.sort(sortSlideXml)\n slideLayoutsLocArray = slideLayoutsLocArray.sort(sortSlideXml)\n \n return {\n slides: slidesLocArray,\n slideLayouts: slideLayoutsLocArray,\n }\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 const preResContent = await readXmlFile(zip, 'ppt/_rels/presentation.xml.rels')\n const relationshipArray = preResContent['Relationships']['Relationship']\n let themeURI\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 const themeContent = await readXmlFile(zip, 'ppt/' + themeURI)\n\n const themeColors = []\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 return { themeContent, themeColors }\n}\n\nasync function processSingleSlide(zip, sldFileName, themeContent, defaultTextStyle) {\n const resName = sldFileName.replace('slides/slide', 'slides/_rels/slide') + '.rels'\n const resContent = await readXmlFile(zip, resName)\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 let diagramFilename = ''\n const diagramFiles = {}\n const slideResObj = {}\n const layoutResObj = {}\n const masterResObj = {}\n const themeResObj = {}\n const diagramResObj = {}\n\n for (const relationshipArrayItem of relationshipArray) {\n const relType = relationshipArrayItem['attrs']['Type'].replace('http://schemas.openxmlformats.org/officeDocument/2006/relationships/', '')\n let relTarget = relationshipArrayItem['attrs']['Target']\n if (relTarget.indexOf('../') !== -1) relTarget = relTarget.replace('../', 'ppt/')\n else relTarget = 'ppt/slides/' + relTarget\n\n switch (relationshipArrayItem['attrs']['Type']) {\n case 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout':\n layoutFilename = relTarget\n slideResObj[relationshipArrayItem['attrs']['Id']] = {\n type: relType,\n target: relTarget\n }\n break\n case 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide':\n noteFilename = relTarget\n slideResObj[relationshipArrayItem['attrs']['Id']] = {\n type: relType,\n target: relTarget\n }\n break\n case 'http://schemas.microsoft.com/office/2007/relationships/diagramDrawing':\n diagramFilename = relTarget\n slideResObj[relationshipArrayItem['attrs']['Id']] = {\n type: relType,\n target: relTarget\n }\n break\n case 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/diagramData':\n case 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/diagramLayout':\n case 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/diagramQuickStyle':\n case 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/diagramColors':\n diagramFiles[relationshipArrayItem['attrs']['Id']] = relTarget\n slideResObj[relationshipArrayItem['attrs']['Id']] = {\n type: relType,\n target: relTarget\n }\n break\n case 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image':\n case 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart':\n case 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink':\n default:\n slideResObj[relationshipArrayItem['attrs']['Id']] = {\n type: relType,\n target: relTarget,\n }\n }\n }\n \n const slideNotesContent = await readXmlFile(zip, noteFilename)\n const note = getNote(slideNotesContent)\n\n const slideLayoutContent = await readXmlFile(zip, layoutFilename)\n const slideLayoutTables = await indexNodes(slideLayoutContent)\n const slideLayoutResFilename = layoutFilename.replace('slideLayouts/slideLayout', 'slideLayouts/_rels/slideLayout') + '.rels'\n const slideLayoutResContent = await readXmlFile(zip, slideLayoutResFilename)\n relationshipArray = slideLayoutResContent['Relationships']['Relationship']\n if (relationshipArray.constructor !== Array) relationshipArray = [relationshipArray]\n\n for (const relationshipArrayItem of relationshipArray) {\n const relType = relationshipArrayItem['attrs']['Type'].replace('http://schemas.openxmlformats.org/officeDocument/2006/relationships/', '')\n let relTarget = relationshipArrayItem['attrs']['Target']\n if (relTarget.indexOf('../') !== -1) relTarget = relTarget.replace('../', 'ppt/')\n else relTarget = 'ppt/slideLayouts/' + relTarget\n\n switch (relationshipArrayItem['attrs']['Type']) {\n case 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster':\n masterFilename = relTarget\n break\n default:\n layoutResObj[relationshipArrayItem['attrs']['Id']] = {\n type: relType,\n target: relTarget,\n }\n }\n }\n\n const slideMasterContent = await readXmlFile(zip, masterFilename)\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 readXmlFile(zip, slideMasterResFilename)\n relationshipArray = slideMasterResContent['Relationships']['Relationship']\n if (relationshipArray.constructor !== Array) relationshipArray = [relationshipArray]\n\n for (const relationshipArrayItem of relationshipArray) {\n const relType = relationshipArrayItem['attrs']['Type'].replace('http://schemas.openxmlformats.org/officeDocument/2006/relationships/', '')\n let relTarget = relationshipArrayItem['attrs']['Target']\n if (relTarget.indexOf('../') !== -1) relTarget = relTarget.replace('../', 'ppt/')\n else relTarget = 'ppt/slideMasters/' + relTarget\n\n switch (relationshipArrayItem['attrs']['Type']) {\n case 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme':\n themeFilename = relTarget\n break\n default:\n masterResObj[relationshipArrayItem['attrs']['Id']] = {\n type: relType,\n target: relTarget,\n }\n }\n }\n\n if (themeFilename) {\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 themeResObj[relationshipArrayItem['attrs']['Id']] = {\n 'type': relationshipArrayItem['attrs']['Type'].replace('http://schemas.openxmlformats.org/officeDocument/2006/relationships/', ''),\n 'target': relationshipArrayItem['attrs']['Target'].replace('../', 'ppt/')\n }\n }\n }\n }\n }\n\n const diagramContent = {\n data: null,\n layout: null,\n quickStyle: null,\n colors: null,\n drawing: null\n }\n let digramFileContent = {}\n if (diagramFilename) {\n const diagName = diagramFilename.split('/').pop()\n const diagramResFileName = diagramFilename.replace(diagName, '_rels/' + diagName) + '.rels'\n digramFileContent = await readXmlFile(zip, diagramFilename)\n if (digramFileContent) {\n const digramFileContentObjToStr = JSON.stringify(digramFileContent).replace(/dsp:/g, 'p:')\n digramFileContent = JSON.parse(digramFileContentObjToStr)\n }\n const digramResContent = await readXmlFile(zip, diagramResFileName)\n if (digramResContent) {\n relationshipArray = digramResContent['Relationships']['Relationship']\n if (relationshipArray.constructor !== Array) relationshipArray = [relationshipArray]\n for (const relationshipArrayItem of relationshipArray) {\n diagramResObj[relationshipArrayItem['attrs']['Id']] = {\n 'type': relationshipArrayItem['attrs']['Type'].replace('http://schemas.openxmlformats.org/officeDocument/2006/relationships/', ''),\n 'target': relationshipArrayItem['attrs']['Target'].replace('../', 'ppt/')\n }\n }\n }\n }\n\n if (Object.values(diagramFiles).length > 0) {\n for (const filePath of Object.values(diagramFiles)) {\n const content = await readXmlFile(zip, filePath)\n if (filePath.includes('/data')) diagramContent.data = content\n else if (filePath.includes('/layout')) diagramContent.layout = content\n else if (filePath.includes('/quickStyle')) diagramContent.quickStyle = content\n else if (filePath.includes('/colors')) diagramContent.colors = content\n }\n }\n\n const tableStyles = await readXmlFile(zip, 'ppt/tableStyles.xml')\n\n const slideContent = await readXmlFile(zip, sldFileName)\n const nodes = slideContent['p:sld']['p:cSld']['p:spTree']\n const warpObj = {\n zip,\n slideLayoutContent,\n slideLayoutTables,\n slideMasterContent,\n slideMasterTables,\n slideContent,\n tableStyles,\n slideResObj,\n slideMasterTextStyles,\n layoutResObj,\n masterResObj,\n themeContent,\n themeResObj,\n digramFileContent,\n diagramResObj,\n diagramContent,\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, nodes, 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\n return {\n fill,\n elements,\n layoutElements,\n note,\n transition,\n }\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 let rNodes = getTextByPathList(spNode, ['p:txBody', 'a:p', 'a:r'])\n if (!rNodes) continue\n\n if (rNodes.constructor !== Array) rNodes = [rNodes]\n for (const rNode of rNodes) {\n const t = getTextByPathList(rNode, ['a:t'])\n if (t && typeof t === 'string') text += t\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], nodesSldLayout, 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], nodesSldLayout, 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], nodesSldMaster, 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], nodesSldMaster, warpObj, 'slideMasterBg')\n if (ret) elements.push(ret)\n }\n }\n }\n }\n return elements\n}\n\nfunction indexNodes(content) {\n const keys = Object.keys(content)\n const spTreeNode = content[keys[0]]['p:cSld']['p:spTree']\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] = 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] = targetNode\n }\n }\n\n return { idTable, idxTable, typeTable }\n}\n\nasync function processNodesInSlide(nodeKey, nodeValue, nodes, warpObj, source, groupHierarchy = []) {\n let json\n\n switch (nodeKey) {\n case 'p:sp': // Shape, Text\n json = await processSpNode(nodeValue, nodes, warpObj, source, groupHierarchy)\n break\n case 'p:cxnSp': // Shape, Text\n json = await processCxnSpNode(nodeValue, nodes, 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 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 const latex = latexFormart(parseOMath(oMath))\n\n const blipFill = getTextByPathList(fallback, ['p:sp', 'p:spPr', 'a:blipFill'])\n const picBase64 = 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 picBase64,\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 = getTextByPathList(xfrmNode, ['attrs', 'flipV']) === '1'\n const isFlipH = getTextByPathList(xfrmNode, ['attrs', 'flipH']) === '1'\n\n let rotate = getTextByPathList(xfrmNode, ['attrs', 'rot']) || 0\n if (rotate) rotate = angleToDegrees(rotate)\n\n // 计算缩放因子\n const ws = cx / chcx\n const hs = 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, node, warpObj, source, currentGroupHierarchy)\n if (ret) elements.push(ret)\n }\n }\n else {\n const ret = await processNodesInSlide(nodeKey, node[nodeKey], node, warpObj, source, currentGroupHierarchy)\n if (ret) elements.push(ret)\n }\n }\n\n const processedElements = elements.map(element => ({\n ...element,\n left: numberToFixed((element.left - chx) * ws),\n top: numberToFixed((element.top - chy) * hs),\n width: numberToFixed(element.width * ws),\n height: numberToFixed(element.height * hs),\n ...(element.type === 'group' && element.elements ? {\n elements: processNestedGroupElements(element.elements, ws, hs)\n } : {})\n }))\n\n function processNestedGroupElements(elements, ws, hs, depth = 0) {\n if (depth > 10) return elements\n\n return elements.map(element => {\n const processed = {\n ...element,\n width: numberToFixed(element.width * ws),\n height: numberToFixed(element.height * hs),\n }\n if (element.type === 'group' && element.elements) {\n processed.elements = processNestedGroupElements(element.elements, ws, hs, 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, pNode, warpObj, source, groupHierarchy = []) {\n const name = getTextByPathList(node, ['p:nvSpPr', 'p: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']['typeTable'][type]\n 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 (txBoxVal === '1') 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\n if (!type) {\n if (source === 'diagramBg') type = 'diagram'\n else type = 'obj'\n }\n\n return await genShape(node, pNode, slideLayoutSpNode, slideMasterSpNode, name, type, order, warpObj, source, groupHierarchy)\n}\n\nasync function processCxnSpNode(node, pNode, warpObj, source) {\n const name = node['p:nvCxnSpPr']['p:cNvPr']['attrs']['name']\n const type = (node['p:nvCxnSpPr']['p:nvPr']['p:ph'] === undefined) ? undefined : node['p:nvSpPr']['p:nvPr']['p:ph']['attrs']['type']\n const order = node['attrs']['order']\n\n return await genShape(node, pNode, undefined, undefined, name, type, order, warpObj, source)\n}\n\nasync function genShape(node, pNode, slideLayoutSpNode, slideMasterSpNode, name, type, order, warpObj, source, 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\n const isFlipV = getTextByPathList(slideXfrmNode, ['attrs', 'flipV']) === '1'\n const isFlipH = getTextByPathList(slideXfrmNode, ['attrs', 'flipH']) === '1'\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 } = getBorder(node, type, warpObj)\n const fill = await getShapeFill(node, pNode, undefined, warpObj, source, groupHierarchy) || ''\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 const isVertical = getTextByPathList(node, ['p:txBody', 'a:bodyPr', 'attrs', 'vert']) === 'eaVert'\n const autoFit = getTextAutoFit(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 name,\n order,\n }\n\n if (shadow) data.shadow = shadow\n if (autoFit) data.autoFit = autoFit\n\n const isHasValidText = data.content && hasValidText(data.content)\n\n if (custShapType && type !== 'diagram') {\n const ext = getTextByPathList(slideXfrmNode, ['a:ext', 'attrs'])\n const w = parseInt(ext['cx']) * RATIO_EMUs_Points\n const h = parseInt(ext['cy']) * RATIO_EMUs_Points\n const d = getCustomShapePath(custShapType, w, h)\n if (!isHasValidText) data.content = ''\n\n return {\n ...data,\n type: 'shape',\n shapType: 'custom',\n path: d,\n }\n }\n\n let shapePath = ''\n if (shapType) shapePath = getShapePath(shapType, width, height, node)\n\n if (shapType && (type === 'obj' || !type || shapType !== 'rect')) {\n if (!isHasValidText) data.content = ''\n return {\n ...data,\n type: 'shape',\n shapType,\n path: shapePath,\n keypoints,\n }\n }\n if (shapType && !isHasValidText && (fill || borderWidth)) {\n return {\n ...data,\n type: 'shape',\n content: '',\n shapType,\n path: shapePath,\n keypoints,\n }\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 order = node['attrs']['order']\n \n const rid = node['p:blipFill']['a:blip']['attrs']['r:embed']\n const imgName = resObj[rid]['target']\n const imgFileExt = extractFileExtension(imgName).toLowerCase()\n const zip = warpObj['zip']\n const imgArrayBuffer = await zip.file(imgName).async('arraybuffer')\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 mimeType = getMimeType(imgFileExt)\n const { top, left } = getPosition(xfrmNode, undefined, undefined)\n const { width, height } = getSize(xfrmNode, undefined, undefined)\n const src = `data:${mimeType};base64,${base64ArrayBuffer(imgArrayBuffer)}`\n\n const isFlipV = getTextByPathList(xfrmNode, ['attrs', 'flipV']) === '1'\n const isFlipH = getTextByPathList(xfrmNode, ['attrs', 'flipH']) === '1'\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, videoMimeType, uInt8ArrayVideo, videoBlob\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 uInt8ArrayVideo = await zip.file(videoFile).async('arraybuffer')\n videoMimeType = getMimeType(videoFileExt)\n videoBlob = URL.createObjectURL(new Blob([uInt8ArrayVideo], {\n type: videoMimeType\n }))\n }\n }\n }\n\n const audioNode = getTextByPathList(node, ['p:nvPicPr', 'p:nvPr', 'a:audioFile'])\n let audioRid, audioFile, audioFileExt, uInt8ArrayAudio, audioBlob\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 uInt8ArrayAudio = await zip.file(audioFile).async('arraybuffer')\n audioBlob = URL.createObjectURL(new Blob([uInt8ArrayAudio]))\n }\n }\n\n if (videoNode && !isVdeoLink) {\n return {\n type: 'video',\n top,\n left,\n width, \n height,\n rotate,\n blob: videoBlob,\n order,\n }\n } \n if (videoNode && isVdeoLink) {\n return {\n type: 'video',\n top,\n left,\n width, \n height,\n rotate,\n src: videoFile,\n order,\n }\n }\n if (audioNode) {\n return {\n type: 'audio',\n top,\n left,\n width, \n height,\n rotate,\n blob: audioBlob,\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 let geom = 'rect'\n const prstGeom = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'attrs', 'prst'])\n const custGeom = getTextByPathList(node, ['p:spPr', 'a:custGeom'])\n\n if (prstGeom) {\n geom = prstGeom\n }\n else if (custGeom) {\n geom = identifyShape(custGeom)\n if (geom !== 'custom') geom = `custom:${geom}`\n }\n\n const { borderColor, borderWidth, borderType, strokeDasharray } = getBorder(node, undefined, warpObj)\n\n const filters = getPicFilters(node['p:blipFill'])\n\n const imageData = {\n type: 'image',\n top,\n left,\n width,\n height,\n rotate,\n src,\n isFlipV,\n isFlipH,\n order,\n rect,\n geom,\n borderColor,\n borderWidth,\n borderType,\n borderStrokeDasharray: strokeDasharray,\n }\n\n if (filters) imageData.filters = filters\n\n return imageData\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: (firstRowAttr && firstRowAttr === '1') ? 1 : 0,\n isFrstColAttr: (firstColAttr && firstColAttr === '1') ? 1 : 0,\n isLstRowAttr: (lastRowAttr && lastRowAttr === '1') ? 1 : 0,\n isLstColAttr: (lastColAttr && lastColAttr === '1') ? 1 : 0,\n isBandRowAttr: (bandRowAttr && bandRowAttr === '1') ? 1 : 0,\n isBandColAttr: (bandColAttr && bandColAttr === '1') ? 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.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.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 {}\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 {}\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 dgmDrwSpArray = getTextByPathList(warpObj['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, node, warpObj, 'diagramBg')\n if (el) elements.push(el)\n }\n }\n else if (warpObj.diagramContent && warpObj.diagramContent.data) {\n textList = getSmartArtTextData(warpObj.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}","// ==ClosureCompiler==\n// @output_file_name default.js\n// @compilation_level SIMPLE_OPTIMIZATIONS\n// ==/ClosureCompiler==\n// module.exports = {\n// parse: parse,\n// simplify: simplify,\n// simplifyLostLess: simplifyLostLess,\n// filter: filter,\n// stringify: stringify,\n// toContentString: toContentString,\n// getElementById: getElementById,\n// getElementsByClassName: getElementsByClassName,\n// transformStream: transformStream,\n// };\n\n/**\n * @author: Tobias Nickel\n * @created: 06.04.2015\n * I needed a small xmlparser chat can be used in a worker.\n */\n\n/**\n * @typedef tNode \n * @property {string} tagName \n * @property {object} attributes\n * @property {(tNode|string)[]} children \n **/\n\n/**\n * @typedef TParseOptions\n * @property {number} [pos]\n * @property {string[]} [noChildNodes]\n * @property {boolean} [setPos]\n * @property {boolean} [keepComments] \n * @property {boolean} [keepWhitespace]\n * @property {boolean} [simplify]\n * @property {(a: tNode, b: tNode) => boolean} [filter]\n */\n\n/**\n * parseXML / html into a DOM Object. with no validation and some failur tolerance\n * @param {string} S your XML to parse\n * @param {TParseOptions} [options] all other options:\n * @return {(tNode | string)[]}\n */\nfunction parse(S, options) {\n \"txml\";\n options = options || {};\n\n var pos = options.pos || 0;\n var keepComments = !!options.keepComments;\n var keepWhitespace = !!options.keepWhitespace;\n\n var openBracket = \"<\";\n var openBracketCC = \"<\".charCodeAt(0);\n var closeBracket = \">\";\n var closeBracketCC = \">\".charCodeAt(0);\n var minusCC = \"-\".charCodeAt(0);\n var slashCC = \"/\".charCodeAt(0);\n var exclamationCC = '!'.charCodeAt(0);\n var singleQuoteCC = \"'\".charCodeAt(0);\n var doubleQuoteCC = '\"'.charCodeAt(0);\n var openCornerBracketCC = '['.charCodeAt(0);\n var closeCornerBracketCC = ']'.charCodeAt(0);\n\n\n /**\n * parsing a list of entries\n */\n function parseChildren(tagName) {\n var children = [];\n while (S[pos]) {\n if (S.charCodeAt(pos) == openBracketCC) {\n if (S.charCodeAt(pos + 1) === slashCC) {\n var closeStart = pos + 2;\n pos = S.indexOf(closeBracket, pos);\n\n var closeTag = S.substring(closeStart, pos);\n if (closeTag.indexOf(tagName) == -1) {\n var parsedText = S.substring(0, pos).split('\\n');\n throw new Error(\n 'Unexpected close tag\\nLine: ' + (parsedText.length - 1) +\n '\\nColumn: ' + (parsedText[parsedText.length - 1].length + 1) +\n '\\nChar: ' + S[pos]\n );\n }\n\n if (pos + 1) pos += 1;\n\n return children;\n } else if (S.charCodeAt(pos + 1) === exclamationCC) {\n if (S.charCodeAt(pos + 2) == minusCC) {\n //comment support\n const startCommentPos = pos;\n while (pos !== -1 && !(S.charCodeAt(pos) === closeBracketCC && S.charCodeAt(pos - 1) == minusCC && S.charCodeAt(pos - 2) == minusCC && pos != -1)) {\n pos = S.indexOf(closeBracket, pos + 1);\n }\n if (pos === -1) {\n pos = S.length;\n }\n if (keepComments) {\n children.push(S.substring(startCommentPos, pos + 1));\n }\n } else if (\n S.charCodeAt(pos + 2) === openCornerBracketCC &&\n S.charCodeAt(pos + 8) === openCornerBracketCC &&\n S.substr(pos + 3, 5).toLowerCase() === 'cdata'\n ) {\n // cdata\n var cdataEndIndex = S.indexOf(']]>', pos);\n if (cdataEndIndex == -1) {\n children.push(S.substr(pos + 9));\n pos = S.length;\n } else {\n children.push(S.substring(pos + 9, cdataEndIndex));\n pos = cdataEndIndex + 3;\n }\n continue;\n } else {\n // doctypesupport\n const startDoctype = pos + 1;\n pos += 2;\n var encapsuled = false;\n while ((S.charCodeAt(pos) !== closeBracketCC || encapsuled === true) && S[pos]) {\n if (S.charCodeAt(pos) === openCornerBracketCC) {\n encapsuled = true;\n } else if (encapsuled === true && S.charCodeAt(pos) === closeCornerBracketCC) {\n encapsuled = false;\n }\n pos++;\n }\n children.push(S.substring(startDoctype, pos));\n }\n pos++;\n continue;\n }\n var node = parseNode();\n children.push(node);\n if (node.tagName[0] === '?') {\n children.push(...node.children);\n node.children = [];\n }\n } else {\n var text = parseText();\n if (keepWhitespace) {\n if (text.length > 0) {\n children.push(text);\n }\n } else {\n var trimmed = text.trim();\n if (trimmed.length > 0) {\n children.push(trimmed);\n }\n }\n pos++;\n }\n }\n return children;\n }\n\n /**\n * returns the text outside of texts until the first '<'\n */\n function parseText() {\n var start = pos;\n pos = S.indexOf(openBracket, pos) - 1;\n if (pos === -2)\n pos = S.length;\n return S.slice(start, pos + 1);\n }\n /**\n * returns text until the first nonAlphabetic letter\n */\n var nameSpacer = '\\r\\n\\t>/= ';\n\n function parseName() {\n var start = pos;\n while (nameSpacer.indexOf(S[pos]) === -1 && S[pos]) {\n pos++;\n }\n return S.slice(start, pos);\n }\n /**\n * is parsing a node, including tagName, Attributes and its children,\n * to parse children it uses the parseChildren again, that makes the parsing recursive\n */\n var NoChildNodes = options.noChildNodes || ['img', 'br', 'input', 'meta', 'link', 'hr'];\n\n function parseNode() {\n pos++;\n const tagName = parseName();\n const attributes = {};\n let children = [];\n\n // parsing attributes\n while (S.charCodeAt(pos) !== closeBracketCC && S[pos]) {\n var c = S.charCodeAt(pos);\n if ((c > 64 && c < 91) || (c > 96 && c < 123)) {\n //if('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.indexOf(S[pos])!==-1 ){\n var name = parseName();\n // search beginning of the string\n var code = S.charCodeAt(pos);\n while (code && code !== singleQuoteCC && code !== doubleQuoteCC && !((code > 64 && code < 91) || (code > 96 && code < 123)) && code !== closeBracketCC) {\n pos++;\n code = S.charCodeAt(pos);\n }\n if (code === singleQuoteCC || code === doubleQuoteCC) {\n var value = parseString();\n if (pos === -1) {\n return {\n tagName,\n attributes,\n children,\n };\n }\n } else {\n value = null;\n pos--;\n }\n attributes[name] = value;\n }\n pos++;\n }\n // optional parsing of children\n if (S.charCodeAt(pos - 1) !== slashCC) {\n if (tagName == \"script\") {\n var start = pos + 1;\n pos = S.indexOf('</script>', pos);\n children = [S.slice(start, pos)];\n pos += 9;\n } else if (tagName == \"style\") {\n var start = pos + 1;\n pos = S.indexOf('</style>', pos);\n children = [S.slice(start, pos)];\n pos += 8;\n } else if (NoChildNodes.indexOf(tagName) === -1) {\n pos++;\n children = parseChildren(tagName);\n } else {\n pos++;\n }\n } else {\n pos++;\n }\n return {\n tagName,\n attributes,\n children,\n };\n }\n\n /**\n * is parsing a string, that starts with a char and with the same usually ' or \"\n */\n\n function parseString() {\n var startChar = S[pos];\n var startpos = pos + 1;\n pos = S.indexOf(startChar, startpos);\n return S.slice(startpos, pos);\n }\n\n /**\n *\n */\n function findElements() {\n var r = new RegExp('\\\\s' + options.attrName + '\\\\s*=[\\'\"]' + options.attrValue + '[\\'\"]').exec(S);\n if (r) {\n return r.index;\n } else {\n return -1;\n }\n }\n\n var out = null;\n if (options.attrValue !== undefined) {\n options.attrName = options.attrName || 'id';\n var out = [];\n\n while ((pos = findElements()) !== -1) {\n pos = S.lastIndexOf('<', pos);\n if (pos !== -1) {\n out.push(parseNode());\n }\n S = S.substr(pos);\n pos = 0;\n }\n } else if (options.parseNode) {\n out = parseNode();\n } else {\n out = parseChildren('');\n }\n\n if (options.filter) {\n out = filter(out, options.filter);\n }\n\n if (options.simplify) {\n return simplify(Array.isArray(out) ? out : [out]);\n }\n\n if (options.setPos) {\n out.pos = pos;\n }\n\n return out;\n}\n\n/**\n * transform the DomObject to an object that is like the object of PHP`s simple_xmp_load_*() methods.\n * this format helps you to write that is more likely to keep your program working, even if there a small changes in the XML schema.\n * be aware, that it is not possible to reproduce the original xml from a simplified version, because the order of elements is not saved.\n * therefore your program will be more flexible and easier to read.\n *\n * @param {tNode[]} children the childrenList\n */\nfunction simplify(children) {\n var out = {};\n if (!children.length) {\n return '';\n }\n\n if (children.length === 1 && typeof children[0] == 'string') {\n return children[0];\n }\n // map each object\n children.forEach(function(child) {\n if (typeof child !== 'object') {\n return;\n }\n if (!out[child.tagName])\n out[child.tagName] = [];\n var kids = simplify(child.children);\n out[child.tagName].push(kids);\n if (Object.keys(child.attributes).length && typeof kids !== 'string') {\n kids._attributes = child.attributes;\n }\n });\n\n for (var i in out) {\n if (out[i].length == 1) {\n out[i] = out[i][0];\n }\n }\n\n return out;\n}\n\n/**\n * similar to simplify, but lost less\n *\n * @param {tNode[]} children the childrenList\n */\nfunction simplifyLostLess(children, parentAttributes = {}) {\n var out = {};\n if (!children.length) {\n return out;\n }\n\n if (children.length === 1 && typeof children[0] == 'string') {\n return Object.keys(parentAttributes).length ? {\n _attributes: parentAttributes,\n value: children[0]\n } : children[0];\n }\n // map each object\n children.forEach(function(child) {\n if (typeof child !== 'object') {\n return;\n }\n if (!out[child.tagName])\n out[child.tagName] = [];\n var kids = simplifyLostLess(child.children || [], child.attributes);\n out[child.tagName].push(kids);\n if (Object.keys(child.attributes).length) {\n kids._attributes = child.attributes;\n }\n });\n\n return out;\n}\n/**\n * behaves the same way as Array.filter, if the filter method return true, the element is in the resultList\n * @params children{Array} the children of a node\n * @param f{function} the filter method\n */\nfunction filter(children, f, dept = 0, path = '') {\n var out = [];\n children.forEach(function(child, i) {\n if (typeof(child) === 'object' && f(child, i, dept, path)) out.push(child);\n if (child.children) {\n var kids = filter(child.children, f, dept + 1, (path ? path + '.' : '') + i + '.' + child.tagName);\n out = out.concat(kids);\n }\n });\n return out;\n}\n/**\n * stringify a previously parsed string object.\n * this is useful,\n * 1. to remove whitespace\n * 2. to recreate xml data, with some changed data.\n * @param {tNode} O the object to Stringify\n */\nfunction stringify(O) {\n var out = '';\n\n function writeChildren(O) {\n if (O) {\n for (var i = 0; i < O.length; i++) {\n if (typeof O[i] == 'string') {\n out += O[i].trim();\n } else {\n writeNode(O[i]);\n }\n }\n }\n }\n\n function writeNode(N) {\n out += \"<\" + N.tagName;\n for (var i in N.attributes) {\n if (N.attributes[i] === null) {\n out += ' ' + i;\n } else if (N.attributes[i].indexOf('\"') === -1) {\n out += ' ' + i + '=\"' + N.attributes[i].trim() + '\"';\n } else {\n out += ' ' + i + \"='\" + N.attributes[i].trim() + \"'\";\n }\n }\n if (N.tagName[0] === '?') {\n out += '?>';\n return;\n }\n out += '>';\n writeChildren(N.children);\n out += '</' + N.tagName + '>';\n }\n writeChildren(O);\n\n return out;\n}\n\n/**\n * use this method to read the text content, of some node.\n * It is great if you have mixed content like:\n * this text has some <b>big</b> text and a <a href=''>link</a>\n * @return {string}\n */\nfunction toContentString(tDom) {\n if (Array.isArray(tDom)) {\n var out = '';\n tDom.forEach(function(e) {\n out += ' ' + toContentString(e);\n out = out.trim();\n });\n return out;\n } else if (typeof tDom === 'object') {\n return toContentString(tDom.children)\n } else {\n return ' ' + tDom;\n }\n}\nfunction getElementById(S, id, simplified) {\n var out = parse(S, {\n attrValue: id\n });\n return simplified ? tXml.simplify(out) : out[0];\n}\nfunction getElementsByClassName(S, classname, simplified) {\n const out = parse(S, {\n attrName: 'class',\n attrValue: '[a-zA-Z0-9- ]*' + classname + '[a-zA-Z0-9- ]*'\n });\n return simplified ? tXml.simplify(out) : out;\n}\n\nexport { filter, getElementById, getElementsByClassName, parse, simplify, simplifyLostLess, stringify, toContentString };\n","import { parse as parseXml } from 'txml/txml'\nimport type { AnyRecord, XmlNode } from './types'\n\nlet cust_attr_order = 0\n\ntype TxmlChild = {\n tagName?: string\n children?: Array<unknown>\n attributes?: AnyRecord\n}\n\nexport function simplifyLostLess(children: Array<unknown>, parentAttributes: AnyRecord = {}): XmlNode {\n const out: AnyRecord = {}\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 (typeof child !== 'object' || child === null) return\n const typed = child as TxmlChild\n if (typed.tagName === '?xml') continue\n\n if (!typed.tagName) continue\n if (!out[typed.tagName]) out[typed.tagName] = []\n\n const kids = simplifyLostLess(typed.children || [], typed.attributes || {})\n \n if (typeof kids === 'object' && kids !== null) {\n const kidsObj = kids as AnyRecord\n if (!kidsObj.attrs) kidsObj.attrs = { order: cust_attr_order++ }\n else (kidsObj.attrs as AnyRecord).order = cust_attr_order++\n }\n if (Object.keys(typed.attributes || {}).length) {\n const kidsObj = kids as AnyRecord\n kidsObj.attrs = { ...(kidsObj.attrs as AnyRecord), ...(typed.attributes || {}) }\n }\n out[typed.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: AnyRecord, filename: string): Promise<XmlNode | null> {\n try {\n const data = await (zip.file(filename) as AnyRecord).async('string')\n return simplifyLostLess(parseXml(data) as Array<unknown>)\n }\n catch {\n return null\n }\n}\n","// This file is autogenerated. It's used to publish ESM to npm.\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\nvar trimLeft = /^\\s+/;\nvar trimRight = /\\s+$/;\nfunction tinycolor(color, opts) {\n color = color ? color : \"\";\n opts = opts || {};\n\n // If input is already a tinycolor, return itself\n if (color instanceof tinycolor) {\n return color;\n }\n // If we are called as a function, call using new instead\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n var rgb = inputToRGB(color);\n this._originalInput = color, this._r = rgb.r, this._g = rgb.g, this._b = rgb.b, this._a = rgb.a, this._roundA = Math.round(100 * this._a) / 100, this._format = opts.format || rgb.format;\n this._gradientType = opts.gradientType;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this._r < 1) this._r = Math.round(this._r);\n if (this._g < 1) this._g = Math.round(this._g);\n if (this._b < 1) this._b = Math.round(this._b);\n this._ok = rgb.ok;\n}\ntinycolor.prototype = {\n isDark: function isDark() {\n return this.getBrightness() < 128;\n },\n isLight: function isLight() {\n return !this.isDark();\n },\n isValid: function isValid() {\n return this._ok;\n },\n getOriginalInput: function getOriginalInput() {\n return this._originalInput;\n },\n getFormat: function getFormat() {\n return this._format;\n },\n getAlpha: function getAlpha() {\n return this._a;\n },\n getBrightness: function getBrightness() {\n //http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n },\n getLuminance: function getLuminance() {\n //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var RsRGB, GsRGB, BsRGB, R, G, B;\n RsRGB = rgb.r / 255;\n GsRGB = rgb.g / 255;\n BsRGB = rgb.b / 255;\n if (RsRGB <= 0.03928) R = RsRGB / 12.92;else R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n if (GsRGB <= 0.03928) G = GsRGB / 12.92;else G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n if (BsRGB <= 0.03928) B = BsRGB / 12.92;else B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n },\n setAlpha: function setAlpha(value) {\n this._a = boundAlpha(value);\n this._roundA = Math.round(100 * this._a) / 100;\n return this;\n },\n toHsv: function toHsv() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return {\n h: hsv.h * 360,\n s: hsv.s,\n v: hsv.v,\n a: this._a\n };\n },\n toHsvString: function toHsvString() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = Math.round(hsv.h * 360),\n s = Math.round(hsv.s * 100),\n v = Math.round(hsv.v * 100);\n return this._a == 1 ? \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" : \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \" + this._roundA + \")\";\n },\n toHsl: function toHsl() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return {\n h: hsl.h * 360,\n s: hsl.s,\n l: hsl.l,\n a: this._a\n };\n },\n toHslString: function toHslString() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = Math.round(hsl.h * 360),\n s = Math.round(hsl.s * 100),\n l = Math.round(hsl.l * 100);\n return this._a == 1 ? \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" : \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \" + this._roundA + \")\";\n },\n toHex: function toHex(allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function toHexString(allow3Char) {\n return \"#\" + this.toHex(allow3Char);\n },\n toHex8: function toHex8(allow4Char) {\n return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n },\n toHex8String: function toHex8String(allow4Char) {\n return \"#\" + this.toHex8(allow4Char);\n },\n toRgb: function toRgb() {\n return {\n r: Math.round(this._r),\n g: Math.round(this._g),\n b: Math.round(this._b),\n a: this._a\n };\n },\n toRgbString: function toRgbString() {\n return this._a == 1 ? \"rgb(\" + Math.round(this._r) + \", \" + Math.round(this._g) + \", \" + Math.round(this._b) + \")\" : \"rgba(\" + Math.round(this._r) + \", \" + Math.round(this._g) + \", \" + Math.round(this._b) + \", \" + this._roundA + \")\";\n },\n toPercentageRgb: function toPercentageRgb() {\n return {\n r: Math.round(bound01(this._r, 255) * 100) + \"%\",\n g: Math.round(bound01(this._g, 255) * 100) + \"%\",\n b: Math.round(bound01(this._b, 255) * 100) + \"%\",\n a: this._a\n };\n },\n toPercentageRgbString: function toPercentageRgbString() {\n return this._a == 1 ? \"rgb(\" + Math.round(bound01(this._r, 255) * 100) + \"%, \" + Math.round(bound01(this._g, 255) * 100) + \"%, \" + Math.round(bound01(this._b, 255) * 100) + \"%)\" : \"rgba(\" + Math.round(bound01(this._r, 255) * 100) + \"%, \" + Math.round(bound01(this._g, 255) * 100) + \"%, \" + Math.round(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n },\n toName: function toName() {\n if (this._a === 0) {\n return \"transparent\";\n }\n if (this._a < 1) {\n return false;\n }\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function toFilter(secondColor) {\n var hex8String = \"#\" + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = \"#\" + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n }\n return \"progid:DXImageTransform.Microsoft.gradient(\" + gradientType + \"startColorstr=\" + hex8String + \",endColorstr=\" + secondHex8String + \")\";\n },\n toString: function toString(format) {\n var formatSet = !!format;\n format = format || this._format;\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === \"name\" && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"hex4\") {\n formattedString = this.toHex8String(true);\n }\n if (format === \"hex8\") {\n formattedString = this.toHex8String();\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n return formattedString || this.toHexString();\n },\n clone: function clone() {\n return tinycolor(this.toString());\n },\n _applyModification: function _applyModification(fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function lighten() {\n return this._applyModification(_lighten, arguments);\n },\n brighten: function brighten() {\n return this._applyModification(_brighten, arguments);\n },\n darken: function darken() {\n return this._applyModification(_darken, arguments);\n },\n desaturate: function desaturate() {\n return this._applyModification(_desaturate, arguments);\n },\n saturate: function saturate() {\n return this._applyModification(_saturate, arguments);\n },\n greyscale: function greyscale() {\n return this._applyModification(_greyscale, arguments);\n },\n spin: function spin() {\n return this._applyModification(_spin, arguments);\n },\n _applyCombination: function _applyCombination(fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function analogous() {\n return this._applyCombination(_analogous, arguments);\n },\n complement: function complement() {\n return this._applyCombination(_complement, arguments);\n },\n monochromatic: function monochromatic() {\n return this._applyCombination(_monochromatic, arguments);\n },\n splitcomplement: function splitcomplement() {\n return this._applyCombination(_splitcomplement, arguments);\n },\n // Disabled until https://github.com/bgrins/TinyColor/issues/254\n // polyad: function (number) {\n // return this._applyCombination(polyad, [number]);\n // },\n triad: function triad() {\n return this._applyCombination(polyad, [3]);\n },\n tetrad: function tetrad() {\n return this._applyCombination(polyad, [4]);\n }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function (color, opts) {\n if (_typeof(color) == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n } else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n// \"red\"\n// \"#f00\" or \"f00\"\n// \"#ff0000\" or \"ff0000\"\n// \"#ff000000\" or \"ff000000\"\n// \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n// \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n// \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n// \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n// \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n// \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n// \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n var rgb = {\n r: 0,\n g: 0,\n b: 0\n };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n if (_typeof(color) == \"object\") {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = \"hsv\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = \"hsl\";\n }\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n a = boundAlpha(a);\n return {\n ok: ok,\n format: color.format || format,\n r: Math.min(255, Math.max(rgb.r, 0)),\n g: Math.min(255, Math.max(rgb.g, 0)),\n b: Math.min(255, Math.max(rgb.b, 0)),\n a: a\n };\n}\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// <http://www.w3.org/TR/css3-color/>\n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255\n };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h,\n s,\n l = (max + min) / 2;\n if (max == min) {\n h = s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n l: l\n };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n var r, g, b;\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h,\n s,\n v = max;\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n if (max == min) {\n h = 0; // achromatic\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n v: v\n };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n var i = Math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];\n\n // Return a 3 character hex if possible\n if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16)), pad2(convertDecimalToHex(a))];\n\n // Return a 4 character hex if possible\n if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n var hex = [pad2(convertDecimalToHex(a)), pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];\n return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) return false;\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\ntinycolor.random = function () {\n return tinycolor.fromRatio({\n r: Math.random(),\n g: Math.random(),\n b: Math.random()\n });\n};\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>\n\nfunction _desaturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\nfunction _saturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\nfunction _greyscale(color) {\n return tinycolor(color).desaturate(100);\n}\nfunction _lighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\nfunction _brighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var rgb = tinycolor(color).toRgb();\n rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));\n rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));\n rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));\n return tinycolor(rgb);\n}\nfunction _darken(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction _spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>\n\nfunction _complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n}\nfunction polyad(color, number) {\n if (isNaN(number) || number <= 0) {\n throw new Error(\"Argument to polyad must be a positive number\");\n }\n var hsl = tinycolor(color).toHsl();\n var result = [tinycolor(color)];\n var step = 360 / number;\n for (var i = 1; i < number; i++) {\n result.push(tinycolor({\n h: (hsl.h + i * step) % 360,\n s: hsl.s,\n l: hsl.l\n }));\n }\n return result;\n}\nfunction _splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [tinycolor(color), tinycolor({\n h: (h + 72) % 360,\n s: hsl.s,\n l: hsl.l\n }), tinycolor({\n h: (h + 216) % 360,\n s: hsl.s,\n l: hsl.l\n })];\n}\nfunction _analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results;) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n}\nfunction _monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h,\n s = hsv.s,\n v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n while (results--) {\n ret.push(tinycolor({\n h: h,\n s: s,\n v: v\n }));\n v = (v + modification) % 1;\n }\n return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function (color1, color2, amount) {\n amount = amount === 0 ? 0 : amount || 50;\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n var p = amount / 100;\n var rgba = {\n r: (rgb2.r - rgb1.r) * p + rgb1.r,\n g: (rgb2.g - rgb1.g) * p + rgb1.g,\n b: (rgb2.b - rgb1.b) * p + rgb1.b,\n a: (rgb2.a - rgb1.a) * p + rgb1.a\n };\n return tinycolor(rgba);\n};\n\n// Readability Functions\n// ---------------------\n// <http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef (WCAG Version 2)\n\n// `contrast`\n// Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)\ntinycolor.readability = function (color1, color2) {\n var c1 = tinycolor(color1);\n var c2 = tinycolor(color2);\n return (Math.max(c1.getLuminance(), c2.getLuminance()) + 0.05) / (Math.min(c1.getLuminance(), c2.getLuminance()) + 0.05);\n};\n\n// `isReadable`\n// Ensure that foreground and background color combinations meet WCAG2 guidelines.\n// The third argument is an optional Object.\n// the 'level' property states 'AA' or 'AAA' - if missing or invalid, it defaults to 'AA';\n// the 'size' property states 'large' or 'small' - if missing or invalid, it defaults to 'small'.\n// If the entire object is absent, isReadable defaults to {level:\"AA\",size:\"small\"}.\n\n// *Example*\n// tinycolor.isReadable(\"#000\", \"#111\") => false\n// tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function (color1, color2, wcag2) {\n var readability = tinycolor.readability(color1, color2);\n var wcag2Parms, out;\n out = false;\n wcag2Parms = validateWCAG2Parms(wcag2);\n switch (wcag2Parms.level + wcag2Parms.size) {\n case \"AAsmall\":\n case \"AAAlarge\":\n out = readability >= 4.5;\n break;\n case \"AAlarge\":\n out = readability >= 3;\n break;\n case \"AAAsmall\":\n out = readability >= 7;\n break;\n }\n return out;\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString(); // \"#ffffff\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function (baseColor, colorList, args) {\n var bestColor = null;\n var bestScore = 0;\n var readability;\n var includeFallbackColors, level, size;\n args = args || {};\n includeFallbackColors = args.includeFallbackColors;\n level = args.level;\n size = args.size;\n for (var i = 0; i < colorList.length; i++) {\n readability = tinycolor.readability(baseColor, colorList[i]);\n if (readability > bestScore) {\n bestScore = readability;\n bestColor = tinycolor(colorList[i]);\n }\n }\n if (tinycolor.isReadable(baseColor, bestColor, {\n level: level,\n size: size\n }) || !includeFallbackColors) {\n return bestColor;\n } else {\n args.includeFallbackColors = false;\n return tinycolor.mostReadable(baseColor, [\"#fff\", \"#000\"], args);\n }\n};\n\n// Big List of Colors\n// ------------------\n// <https://www.w3.org/TR/css-color-4/#named-colors>\nvar names = tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"663399\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n var flipped = {};\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n a = parseFloat(a);\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n if (isOnePointZero(n)) n = \"100%\";\n var processPercent = isPercentage(n);\n n = Math.min(max, Math.max(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if (Math.abs(n - max) < 0.000001) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return n % max / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n return Math.min(1, Math.max(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\nfunction isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf(\".\") != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n return typeof n === \"string\" && n.indexOf(\"%\") != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n return c.length == 1 ? \"0\" + c : \"\" + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n if (n <= 1) {\n n = n * 100 + \"%\";\n }\n return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n}\nvar matchers = function () {\n // <http://www.w3.org/TR/css3-values/#integers>\n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n // <http://www.w3.org/TR/css3-values/#number-value>\n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n return {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n };\n}();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing. Take in a number of formats, and output an object\n// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n color = color.replace(trimLeft, \"\").replace(trimRight, \"\").toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n } else if (color == \"transparent\") {\n return {\n r: 0,\n g: 0,\n b: 0,\n a: 0,\n format: \"name\"\n };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if (match = matchers.rgb.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3]\n };\n }\n if (match = matchers.rgba.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsl.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3]\n };\n }\n if (match = matchers.hsla.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsv.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3]\n };\n }\n if (match = matchers.hsva.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hex8.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex6.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n if (match = matchers.hex4.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n a: convertHexToDecimal(match[4] + \"\" + match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex3.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n return false;\n}\nfunction validateWCAG2Parms(parms) {\n // return valid WCAG2 parms for isReadable.\n // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n var level, size;\n parms = parms || {\n level: \"AA\",\n size: \"small\"\n };\n level = (parms.level || \"AA\").toUpperCase();\n size = (parms.size || \"small\").toLowerCase();\n if (level !== \"AA\" && level !== \"AAA\") {\n level = \"AA\";\n }\n if (size !== \"small\" && size !== \"large\") {\n size = \"small\";\n }\n return {\n level: level,\n size: size\n };\n}\n\nexport { tinycolor as default };\n","import type { XmlNode } from './types'\n\nexport function base64ArrayBuffer(arrayBuffer: ArrayBuffer): string {\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: string): string {\n return filename.substr((~-filename.lastIndexOf('.') >>> 0) + 2)\n}\n\nexport function eachElement<T>(\n node: XmlNode,\n func: (value: XmlNode, index: number) => T\n): string {\n if (!node) return ''\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: XmlNode, path: Array<string>): XmlNode {\n let current: XmlNode = node\n if (!current) return current\n\n for (const key of path) {\n if (typeof current !== 'object' || current === null || Array.isArray(current)) {\n return undefined\n }\n current = (current as Record<string, XmlNode>)[key]\n if (!current) return current\n }\n\n return current\n}\n\nexport function angleToDegrees(angle?: number | string | null): number {\n if (!angle) return 0\n return Math.round(Number(angle) / 60000)\n}\n\nexport function escapeHtml(text: string): string {\n const map: Record<string, string> = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n }\n return text.replace(/[&<>\"']/g, m => map[m] || m)\n}\n\nexport function getMimeType(imgFileExt: string): string {\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: any) {\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-Z0-9-]+\\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\\/($|[a-zA-Z0-9.,?'\\\\+&%$#=~_-]+))*$/\n return urlRegex.test(vdoFile)\n}\n\nexport function toHex(n: any) {\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: any) {\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: any, fractionDigits: any = 4) {\n return parseFloat(num.toFixed(fractionDigits))\n}\n","import { getTextByPathList } from './utils'\nimport type { AnyRecord } from './types'\n\nexport function getSchemeColorFromTheme(schemeClr: string, warpObj: AnyRecord, clrMap?: AnyRecord, phClr?: string): string | undefined {\n let color\n let slideLayoutClrOvride\n if (clrMap) slideLayoutClrOvride = clrMap\n else {\n let sldClrMapOvr = getTextByPathList(warpObj['slideContent'] as AnyRecord, ['p:sld', 'p:clrMapOvr', 'a:overrideClrMapping', 'attrs'])\n if (sldClrMapOvr) slideLayoutClrOvride = sldClrMapOvr\n else {\n sldClrMapOvr = getTextByPathList(warpObj['slideLayoutContent'] as AnyRecord, ['p:sldLayout', 'p:clrMapOvr', 'a:overrideClrMapping', 'attrs'])\n if (sldClrMapOvr) slideLayoutClrOvride = sldClrMapOvr\n else {\n slideLayoutClrOvride = getTextByPathList(warpObj['slideMasterContent'] as AnyRecord, ['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:' + String((slideLayoutClrOvride as AnyRecord)[schmClrName])\n break\n default:\n break\n }\n }\n else {\n switch (schemeClr) {\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'] as AnyRecord, ['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 ? String(color) : undefined\n}\n","import tinycolor from 'tinycolor2'\nimport { getSchemeColorFromTheme } from './schemeColor'\nimport { getTextByPathList } from './utils'\nimport type { AnyRecord, XmlNode } from './types'\n\ntype BorderResult = {\n borderColor: string\n borderWidth: number\n borderType: string\n strokeDasharray: string\n}\n\nexport function getBorder(node: XmlNode, elType?: string, warpObj: AnyRecord = {} as AnyRecord): BorderResult {\n let lineNode = getTextByPathList(node, ['p:spPr', 'a:ln'])\n if (!lineNode) {\n const lnRefNode = getTextByPathList(node, ['p:style', 'a:lnRef'])\n if (lnRefNode) {\n const lnIdx = getTextByPathList(lnRefNode, ['attrs', 'idx'])\n lineNode = (warpObj['themeContent'] as AnyRecord)?.['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\n let borderWidth = isNoFill ? 0 : (parseInt(String(getTextByPathList(lineNode, ['attrs', 'w']))) / 12700)\n if (isNaN(borderWidth)) {\n if (lineNode) borderWidth = 0\n else if (elType !== 'obj') borderWidth = 0\n else borderWidth = 1\n }\n\n let borderColorNode = getTextByPathList(lineNode, ['a:solidFill', 'a:srgbClr', 'attrs', 'val'])\n let borderColor = (typeof borderColorNode === 'string') ? borderColorNode : undefined\n if (!borderColor) {\n const schemeClrNode = getTextByPathList(lineNode, ['a:solidFill', 'a:schemeClr'])\n const schemeClr = 'a:' + String(getTextByPathList(schemeClrNode, ['attrs', 'val']))\n borderColor = getSchemeColorFromTheme(schemeClr, warpObj)\n }\n\n if (!borderColor) {\n const schemeClrNode = getTextByPathList(node, ['p:style', 'a:lnRef', 'a:schemeClr'])\n const schemeClr = 'a:' + String(getTextByPathList(schemeClrNode, ['attrs', 'val']))\n borderColor = getSchemeColorFromTheme(schemeClr, warpObj)\n\n if (borderColor) {\n let shade = getTextByPathList(schemeClrNode, ['a:shade', 'attrs', 'val'])\n\n if (shade) {\n shade = parseInt(String(shade)) / 100000\n \n const color = tinycolor('#' + borderColor).toHsl()\n borderColor = tinycolor({ h: color.h, s: color.s, l: color.l * shade, a: color.a }).toHex()\n }\n }\n }\n\n if (!borderColor) borderColor = '#000000'\n else borderColor = `#${borderColor}`\n\n const typeNode = getTextByPathList(lineNode, ['a:prstDash', 'attrs', 'val'])\n const type = (typeof typeNode === 'string') ? typeNode : undefined\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 return {\n borderColor,\n borderWidth,\n borderType,\n strokeDasharray,\n }\n}\n","import tinycolor from 'tinycolor2'\n\nexport function hueToRgb(t1: number, t2: number, hue: number): number {\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: number, sat: number, light: number): { r: number; g: number; b: number } {\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: string, shadeValue: number, isAlpha?: boolean): string {\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: string, tintValue: number, isAlpha?: boolean): string {\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: string, offset: number, isAlpha?: boolean): string {\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: string, multiplier: number, isAlpha?: boolean): string {\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: string, multiplier: number, isAlpha?: boolean): string {\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: string, multiplier: number, isAlpha?: boolean): string {\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: string): string | undefined {\n let hex\n const colorName = ['white', '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 = ['ffffff', '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 findIndx = colorName.indexOf(name)\n if (findIndx !== -1) hex = colorHex[findIndx]\n return hex\n}\n","import tinycolor from 'tinycolor2'\nimport { getSchemeColorFromTheme } from './schemeColor'\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: any) {\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\nexport async function getPicFill(type: any, node: any, warpObj: any) {\n if (!node) return ''\n\n let img\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 imgPath\n\n img = getTextByPathList(warpObj, ['loaded-images', imgPath])\n if (!img) {\n imgPath = escapeHtml(imgPath)\n\n const imgExt = imgPath.split('.').pop()\n if (imgExt === 'xml') return ''\n\n const imgArrayBuffer = await warpObj['zip'].file(imgPath).async('arraybuffer')\n const imgMimeType = getMimeType(imgExt || '')\n img = `data:${imgMimeType};base64,${base64ArrayBuffer(imgArrayBuffer)}`\n\n const loadedImages = warpObj['loaded-images'] || {}\n loadedImages[imgPath] = img\n warpObj['loaded-images'] = loadedImages\n }\n return img\n}\n\nexport function getPicFillOpacity(node: any) {\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: any) {\n if (!node) return null\n\n const aBlipNode = node['a:blip']\n if (!aBlipNode) return null\n\n const filters: Record<string, number> = {}\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(String(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(String(brightAttr)) / 100000\n }\n if (contrastAttr) {\n filters.contrast = parseInt(String(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(String(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(String(tempAttr))\n }\n }\n }\n }\n }\n\n return Object.keys(filters).length > 0 ? filters : null\n}\n\nexport async function getBgPicFill(bgPr: any, sorce: any, warpObj: any) {\n const picBase64 = 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 picBase64,\n opacity,\n }\n}\n\nexport function getGradientFill(node: any, warpObj: any) {\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: any, warpObj: any) {\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: any, phClr: any, slideMasterContent: any, warpObj: any) {\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: any) {\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: any = '#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: any[] = []\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: any = {}\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: any = {}\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, undefined, 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: any[] = []\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: any = {}\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: any = {}\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, undefined, 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: any[] = []\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: any = {}\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: any = {}\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, undefined, 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\nexport async function getShapeFill(node: any, pNode: any, isSvgMode: any, warpObj: any, source: any, groupHierarchy: any = []) {\n const fillType = getFillType(getTextByPathList(node, ['p:spPr']))\n let type = 'color'\n let fillValue: any = ''\n if (fillType === 'NO_FILL') {\n return isSvgMode ? 'none' : ''\n } \n else if (fillType === 'SOLID_FILL') {\n const shpFill = node['p:spPr']['a:solidFill']\n fillValue = getSolidFill(shpFill, undefined, undefined, warpObj)\n type = 'color'\n }\n else if (fillType === 'GRADIENT_FILL') {\n const shpFill = node['p:spPr']['a:gradFill']\n fillValue = getGradientFill(shpFill, warpObj)\n type = 'gradient'\n }\n else if (fillType === 'PIC_FILL') {\n const shpFill = node['p:spPr']['a:blipFill']\n const picBase64 = await getPicFill(source, shpFill, warpObj)\n const opacity = getPicFillOpacity(shpFill)\n fillValue = {\n picBase64,\n opacity,\n }\n type = 'image'\n }\n else if (fillType === 'PATTERN_FILL') {\n const shpFill = node['p:spPr']['a:pattFill']\n fillValue = getPatternFill({ 'a:pattFill': shpFill }, warpObj)\n type = 'pattern'\n }\n else if (fillType === 'GROUP_FILL') {\n return findFillInGroupHierarchy(groupHierarchy, warpObj, source)\n }\n if (!fillValue) {\n const clrName = getTextByPathList(node, ['p:style', 'a:fillRef'])\n fillValue = getSolidFill(clrName, undefined, undefined, warpObj)\n type = 'color'\n }\n if (!fillValue && pNode && fillType === 'NO_FILL') {\n return isSvgMode ? 'none' : ''\n }\n\n return {\n type,\n value: fillValue,\n }\n}\n\nasync function findFillInGroupHierarchy(groupHierarchy: any, warpObj: any, source: any) {\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 picBase64 = await getPicFill(source, shpFill, warpObj)\n const opacity = getPicFillOpacity(shpFill)\n if (picBase64) {\n return {\n type: 'image',\n value: {\n picBase64,\n opacity,\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 }\n\n return null\n}\n\nexport function getSolidFill(solidFill: any, clrMap: any, phClr: any, warpObj: any) {\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 { eachElement, getTextByPathList } from './utils'\nimport { applyTint } from './color'\nimport type { AnyRecord, XmlNode } from './types'\n\nfunction extractChartColors(serNode: XmlNode, warpObj: AnyRecord): Array<string | null> {\n let series = serNode as any\n if (series && (series as any).constructor !== Array) series = [series]\n const schemeClrs: Array<string | null> = []\n for (const node of series as AnyRecord[]) {\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'] as AnyRecord, ['a:theme', 'a:themeElements', 'a:clrScheme', `a:${clr}`, 'a:srgbClr', 'attrs', 'val'])\n const tint = Number(getTextByPathList(schemeClr, ['a:tint', 'attrs', 'val'])) / 100000\n if (clr && !isNaN(tint)) {\n clr = applyTint(String(clr), tint)\n }\n }\n else clr = getTextByPathList(node, ['c:spPr', 'a:solidFill', 'a:srgbClr', 'attrs', 'val'])\n\n if (clr) schemeClrs.push('#' + String(clr))\n else schemeClrs.push(null)\n }\n return schemeClrs\n}\n\nfunction extractChartData(serNode: AnyRecord): AnyRecord[] {\n const dataMat: AnyRecord[] = []\n if (!serNode) return dataMat\n\n if (serNode['c:xVal']) {\n let dataRow: number[] = []\n eachElement(serNode['c:xVal']['c:numRef']['c:numCache']['c:pt'], (innerNode) => {\n dataRow.push(parseFloat(String((innerNode as AnyRecord)['c:v'])))\n return ''\n })\n dataMat.push(dataRow)\n dataRow = []\n eachElement(serNode['c:yVal']['c:numRef']['c:numCache']['c:pt'], (innerNode) => {\n dataRow.push(parseFloat(String((innerNode as AnyRecord)['c:v'])))\n return ''\n })\n dataMat.push(dataRow)\n } \n else {\n eachElement(serNode, (innerNode, index) => {\n const dataRow: AnyRecord[] = []\n const colName = getTextByPathList(innerNode, ['c:tx', 'c:strRef', 'c:strCache', 'c:pt', 'c:v']) || index\n\n const rowNames: AnyRecord = {}\n if (getTextByPathList(innerNode, ['c:cat', 'c:strRef', 'c:strCache', 'c:pt'])) {\n eachElement((innerNode as AnyRecord)['c:cat']['c:strRef']['c:strCache']['c:pt'], (innerNode) => {\n rowNames[(innerNode as AnyRecord)['attrs']['idx']] = (innerNode as AnyRecord)['c:v']\n return ''\n })\n } \n else if (getTextByPathList(innerNode, ['c:cat', 'c:numRef', 'c:numCache', 'c:pt'])) {\n eachElement((innerNode as AnyRecord)['c:cat']['c:numRef']['c:numCache']['c:pt'], (innerNode) => {\n rowNames[(innerNode as AnyRecord)['attrs']['idx']] = (innerNode as AnyRecord)['c:v']\n return ''\n })\n }\n\n if (getTextByPathList(innerNode, ['c:val', 'c:numRef', 'c:numCache', 'c:pt'])) {\n eachElement((innerNode as AnyRecord)['c:val']['c:numRef']['c:numCache']['c:pt'], (innerNode) => {\n dataRow.push({\n x: (innerNode as AnyRecord)['attrs']['idx'],\n y: parseFloat(String((innerNode as AnyRecord)['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\n return dataMat\n}\n\nexport function getChartInfo(plotArea: AnyRecord, warpObj: AnyRecord): AnyRecord | null {\n let chart = null\n for (const key in plotArea) {\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: extractChartData(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: extractChartData(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","import { getTextByPathList } from './utils'\nimport type { AnyRecord, XmlNode } from './types'\n\nexport function getHorizontalAlign(node: XmlNode, pNode: XmlNode, type: string, warpObj: AnyRecord): string {\n let algn = getTextByPathList(node, ['a:pPr', 'attrs', 'algn'])\n if (!algn) algn = getTextByPathList(pNode, ['a:pPr', 'attrs', 'algn'])\n\n if (!algn) {\n if (type === 'title' || type === 'ctrTitle' || type === 'subTitle') {\n let lvlIdx = 1\n const lvlNode = getTextByPathList(pNode, ['a:pPr', 'attrs', 'lvl'])\n if (lvlNode) {\n lvlIdx = parseInt(String(lvlNode)) + 1\n }\n const lvlStr = 'a:lvl' + lvlIdx + 'pPr'\n algn = getTextByPathList(warpObj, ['slideLayoutTables', 'typeTable', type, 'p:txBody', 'a:lstStyle', lvlStr, 'attrs', 'algn'])\n if (!algn) algn = getTextByPathList(warpObj, ['slideMasterTables', 'typeTable', type, 'p:txBody', 'a:lstStyle', lvlStr, 'attrs', 'algn'])\n if (!algn) 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 (type === 'body') {\n algn = getTextByPathList(warpObj, ['slideMasterTextStyles', 'p:bodyStyle', 'a:lvl1pPr', 'attrs', 'algn'])\n } \n else {\n algn = getTextByPathList(warpObj, ['slideMasterTables', 'typeTable', type, 'p:txBody', 'a:lstStyle', 'a:lvl1pPr', 'attrs', 'algn'])\n }\n }\n\n let align = 'left'\n const algnValue = (typeof algn === 'string') ? algn : undefined\n if (algnValue) {\n switch (algnValue) {\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 = 'justify'\n break\n default:\n align = 'inherit'\n }\n }\n return align\n}\n\nexport function getVerticalAlign(node: XmlNode, slideLayoutSpNode: XmlNode, slideMasterSpNode: XmlNode): string {\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 const anchorValue = (typeof anchor === 'string') ? anchor : 't'\n return (anchorValue === 'ctr') ? 'mid' : ((anchorValue === 'b') ? 'down' : 'up')\n}\n\ntype AutoFitResult =\n | { type: 'shape' }\n | { type: 'text'; fontScale?: number }\n | null\n\nexport function getTextAutoFit(node: XmlNode, slideLayoutSpNode: XmlNode, slideMasterSpNode: XmlNode): AutoFitResult {\n function checkBodyPr(bodyPr: XmlNode): { result: AutoFitResult } | null {\n if (!bodyPr) return null\n\n const body = bodyPr as AnyRecord\n if (body['a:noAutofit']) return { result: null }\n else if (body['a:spAutoFit']) return { result: { type: 'shape' } }\n else if (body['a:normAutofit']) {\n const fontScale = getTextByPathList(body['a:normAutofit'] as XmlNode, ['attrs', 'fontScale'])\n if (fontScale) {\n const scalePercent = parseInt(String(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\nexport function getParagraphSpacing(pNode: XmlNode): AnyRecord | null {\n if (!pNode) return null\n\n const pPrNode = (pNode as AnyRecord)['a:pPr'] as XmlNode\n if (!pPrNode) return null\n\n const spacing: AnyRecord = {}\n\n const lnSpcNode = (pPrNode as AnyRecord)['a:lnSpc'] as XmlNode\n if (lnSpcNode) {\n const spcPct = getTextByPathList(lnSpcNode, ['a:spcPct', 'attrs', 'val'])\n const spcPts = getTextByPathList(lnSpcNode, ['a:spcPts', 'attrs', 'val'])\n\n if (spcPct) {\n spacing.lineSpacing = parseInt(String(spcPct)) / 1000 / 100\n } \n else if (spcPts) {\n spacing.lineSpacing = parseInt(String(spcPts)) / 100 + 'pt'\n }\n }\n\n const spcBefNode = pPrNode['a:spcBef']\n if (spcBefNode) {\n const spcPct = getTextByPathList(spcBefNode, ['a:spcPct', 'attrs', 'val'])\n const spcPts = getTextByPathList(spcBefNode, ['a:spcPts', 'attrs', 'val'])\n\n if (spcPct) {\n spacing.spaceBefore = parseInt(String(spcPct)) / 1000 + 'em'\n } \n else if (spcPts) {\n spacing.spaceBefore = parseInt(String(spcPts)) / 100 + 'pt'\n }\n }\n\n const spcAftNode = pPrNode['a:spcAft']\n if (spcAftNode) {\n const spcPct = getTextByPathList(spcAftNode, ['a:spcPct', 'attrs', 'val'])\n const spcPts = getTextByPathList(spcAftNode, ['a:spcPts', 'attrs', 'val'])\n\n if (spcPct) {\n spacing.spaceAfter = parseInt(String(spcPct)) / 1000 + 'em'\n } \n else if (spcPts) {\n spacing.spaceAfter = parseInt(String(spcPts)) / 100 + 'pt'\n }\n }\n\n return Object.keys(spacing).length > 0 ? spacing : null\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 { numberToFixed } from './utils'\nimport type { AnyRecord, XmlNode } from './types'\n\ntype Position = { top: number; left: number }\ntype Size = { width: number; height: number }\n\nexport function getPosition(slideSpNode: XmlNode, slideLayoutSpNode: XmlNode, slideMasterSpNode: XmlNode): Position {\n let off: AnyRecord | undefined\n\n if (slideSpNode) off = (slideSpNode as AnyRecord)?.['a:off']?.['attrs'] as AnyRecord\n else if (slideLayoutSpNode) off = (slideLayoutSpNode as AnyRecord)?.['a:off']?.['attrs'] as AnyRecord\n else if (slideMasterSpNode) off = (slideMasterSpNode as AnyRecord)?.['a:off']?.['attrs'] as AnyRecord\n\n if (!off) return { top: 0, left: 0 }\n\n return {\n top: numberToFixed(parseInt(String(off['y'])) * RATIO_EMUs_Points),\n left: numberToFixed(parseInt(String(off['x'])) * RATIO_EMUs_Points),\n }\n}\n\nexport function getSize(slideSpNode: XmlNode, slideLayoutSpNode: XmlNode, slideMasterSpNode: XmlNode): Size {\n let ext: AnyRecord | undefined\n\n if (slideSpNode) ext = (slideSpNode as AnyRecord)?.['a:ext']?.['attrs'] as AnyRecord\n else if (slideLayoutSpNode) ext = (slideLayoutSpNode as AnyRecord)?.['a:ext']?.['attrs'] as AnyRecord\n else if (slideMasterSpNode) ext = (slideMasterSpNode as AnyRecord)?.['a:ext']?.['attrs'] as AnyRecord\n\n if (!ext) return { width: 0, height: 0 }\n\n return {\n width: numberToFixed(parseInt(String(ext['cx'])) * RATIO_EMUs_Points),\n height: numberToFixed(parseInt(String(ext['cy'])) * RATIO_EMUs_Points),\n }\n}\n","import { getSolidFill } from './fill'\nimport { RATIO_EMUs_Points } from './constants'\nimport type { AnyRecord, XmlNode } from './types'\n\ntype ShadowResult = {\n h: number\n v: number\n blur: number | ''\n color: string | undefined\n}\n\nexport function getShadow(node: XmlNode, warpObj: AnyRecord): ShadowResult {\n const chdwClrNode = getSolidFill(node, undefined, undefined, warpObj) as string | undefined\n const outerShdwAttrs = (node as AnyRecord)['attrs'] as AnyRecord\n const dir = outerShdwAttrs['dir'] ? (parseInt(String(outerShdwAttrs['dir'])) / 60000) : 0\n const dist = outerShdwAttrs['dist'] ? parseInt(String(outerShdwAttrs['dist'])) * RATIO_EMUs_Points : 0\n const blurRad = outerShdwAttrs['blurRad'] ? parseInt(String(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}\n","import { getTextByPathList } from './utils'\nimport { getShadow } from './shadow'\nimport { getFillType, getGradientFill, getSolidFill } from './fill'\nimport type { AnyRecord } from './types'\n\nexport function getFontType(node: AnyRecord, type: string, warpObj: AnyRecord, slideLayoutSpNode: AnyRecord, slideMasterSpNode: AnyRecord, slideMasterTextStyles: AnyRecord): string {\n const extractFont = (targetNode: AnyRecord, isDirectRun = false): any => {\n if (!targetNode) return null\n \n let rPr\n if (isDirectRun) rPr = getTextByPathList(targetNode, ['a:rPr']) \n else {\n rPr = getTextByPathList(targetNode, ['p:txBody', 'a:lstStyle', 'a:lvl1pPr', 'a:defRPr'])\n if (!rPr) rPr = getTextByPathList(targetNode, ['p:txBody', 'a:p', 'a:pPr', 'a:defRPr'])\n }\n\n if (!rPr) return null\n\n return getTextByPathList(rPr, ['a:latin', 'attrs', 'typeface']) || getTextByPathList(rPr, ['a:ea', 'attrs', 'typeface'])\n }\n\n let typeface = extractFont(node, true)\n\n if (!typeface) typeface = extractFont(slideLayoutSpNode)\n if (!typeface) typeface = extractFont(slideMasterSpNode)\n\n if (!typeface) {\n let stylePath = []\n if (type === 'title' || type === 'ctrTitle' || type === 'subTitle') {\n stylePath = ['p:titleStyle', 'a:lvl1pPr', 'a:defRPr']\n } \n else if (type === 'body') {\n stylePath = ['p:bodyStyle', 'a:lvl1pPr', 'a:defRPr']\n } \n else {\n stylePath = ['p:otherStyle', 'a:lvl1pPr', 'a:defRPr']\n }\n const masterGlobalRPr = getTextByPathList(slideMasterTextStyles, stylePath)\n if (masterGlobalRPr) {\n typeface = getTextByPathList(masterGlobalRPr, ['a:latin', 'attrs', 'typeface']) || getTextByPathList(masterGlobalRPr, ['a:ea', 'attrs', 'typeface'])\n }\n }\n\n if (!typeface || typeface.startsWith('+')) {\n const fontSchemeNode = getTextByPathList(warpObj['themeContent'] as AnyRecord, ['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 default: \n return String(typeface).replace(/^\\+/, '')\n }\n }\n }\n\n if (type === 'title' || type === 'subTitle' || type === 'ctrTitle') {\n typeface = getTextByPathList(fontSchemeNode, ['a:majorFont', 'a:latin', 'attrs', 'typeface']) || getTextByPathList(fontSchemeNode, ['a:majorFont', 'a:ea', 'attrs', 'typeface'])\n }\n else {\n typeface = getTextByPathList(fontSchemeNode, ['a:minorFont', 'a:latin', 'attrs', 'typeface'])\n }\n }\n\n return typeface ? String(typeface) : ''\n}\n\nexport function getFontColor(node: AnyRecord, pNode: AnyRecord, lstStyle: AnyRecord, pFontStyle: AnyRecord, lvl: number, warpObj: AnyRecord): any {\n const rPrNode = getTextByPathList(node, ['a:rPr'])\n let filTyp, color\n if (rPrNode) {\n filTyp = getFillType(rPrNode)\n if (filTyp === 'SOLID_FILL') {\n const solidFillNode = rPrNode['a:solidFill']\n color = getSolidFill(solidFillNode, undefined, undefined, warpObj)\n }\n if (filTyp === 'GRADIENT_FILL') {\n const gradientFillNode = rPrNode['a:gradFill']\n const gradient = getGradientFill(gradientFillNode, warpObj)\n return gradient\n }\n }\n if (!color && getTextByPathList(lstStyle, ['a:lvl' + lvl + 'pPr', 'a:defRPr'])) {\n const lstStyledefRPr = getTextByPathList(lstStyle, ['a:lvl' + lvl + 'pPr', 'a:defRPr'])\n filTyp = getFillType(lstStyledefRPr)\n if (filTyp === 'SOLID_FILL') {\n const solidFillNode = lstStyledefRPr['a:solidFill']\n color = getSolidFill(solidFillNode, undefined, undefined, warpObj)\n }\n }\n if (!color) {\n const sPstyle = getTextByPathList(pNode, ['p:style', 'a:fontRef'])\n if (sPstyle) color = getSolidFill(sPstyle, undefined, undefined, warpObj)\n if (!color && pFontStyle) color = getSolidFill(pFontStyle, undefined, undefined, warpObj)\n }\n return color || ''\n}\n\nexport function getFontSize(node: AnyRecord, slideLayoutSpNode: AnyRecord, type: string, slideMasterTextStyles: AnyRecord, textBodyNode: AnyRecord, pNode: AnyRecord): string {\n let fontSize: any\n\n if (getTextByPathList(node, ['a:rPr', 'attrs', 'sz'])) fontSize = getTextByPathList(node, ['a:rPr', 'attrs', 'sz']) / 100\n\n if ((isNaN(fontSize) || !fontSize) && pNode) {\n if (getTextByPathList(pNode, ['a:endParaRPr', 'attrs', 'sz'])) {\n fontSize = getTextByPathList(pNode, ['a:endParaRPr', 'attrs', 'sz']) / 100\n }\n }\n\n if ((isNaN(fontSize) || !fontSize) && textBodyNode) {\n const lstStyle = getTextByPathList(textBodyNode, ['a:lstStyle'])\n if (lstStyle) {\n let lvl = 1\n if (pNode) {\n const lvlNode = getTextByPathList(pNode, ['a:pPr', 'attrs', 'lvl'])\n if (lvlNode !== undefined) lvl = parseInt(String(lvlNode)) + 1\n }\n\n const sz = getTextByPathList(lstStyle, [`a:lvl${lvl}pPr`, 'a:defRPr', 'attrs', 'sz'])\n if (sz) fontSize = parseInt(String(sz)) / 100\n }\n }\n\n if ((isNaN(fontSize) || !fontSize)) {\n const sz = getTextByPathList(slideLayoutSpNode, ['p:txBody', 'a:lstStyle', 'a:lvl1pPr', 'a:defRPr', 'attrs', 'sz'])\n if (sz) fontSize = parseInt(String(sz)) / 100\n }\n\n if ((isNaN(fontSize) || !fontSize) && slideLayoutSpNode) {\n let lvl = 1\n if (pNode) {\n const lvlNode = getTextByPathList(pNode, ['a:pPr', 'attrs', 'lvl'])\n if (lvlNode !== undefined) lvl = parseInt(String(lvlNode)) + 1\n }\n const layoutSz = getTextByPathList(slideLayoutSpNode, ['p:txBody', 'a:lstStyle', `a:lvl${lvl}pPr`, 'a:defRPr', 'attrs', 'sz'])\n if (layoutSz) fontSize = parseInt(String(layoutSz)) / 100\n }\n\n if ((isNaN(fontSize) || !fontSize) && pNode) {\n const paraSz = getTextByPathList(pNode, ['a:pPr', 'a:defRPr', 'attrs', 'sz'])\n if (paraSz) fontSize = parseInt(String(paraSz)) / 100\n }\n\n if (isNaN(fontSize) || !fontSize) {\n let sz\n if (type === 'title' || type === 'subTitle' || type === 'ctrTitle') {\n sz = getTextByPathList(slideMasterTextStyles, ['p:titleStyle', 'a:lvl1pPr', 'a:defRPr', 'attrs', 'sz'])\n } \n else if (type === 'body') {\n sz = getTextByPathList(slideMasterTextStyles, ['p:bodyStyle', 'a:lvl1pPr', 'a:defRPr', 'attrs', 'sz'])\n } \n else if (type === 'dt' || type === 'sldNum') {\n sz = '1200'\n } \n else if (!type) {\n sz = getTextByPathList(slideMasterTextStyles, ['p:otherStyle', 'a:lvl1pPr', 'a:defRPr', 'attrs', 'sz'])\n }\n if (sz) fontSize = parseInt(String(sz)) / 100\n }\n\n const baseline = getTextByPathList(node, ['a:rPr', 'attrs', 'baseline'])\n if (baseline && !isNaN(fontSize)) fontSize -= 10\n\n fontSize = (isNaN(fontSize) || !fontSize) ? 18 : fontSize\n\n return fontSize + 'pt'\n}\n\nexport function getFontBold(node: AnyRecord): string {\n return getTextByPathList(node, ['a:rPr', 'attrs', 'b']) === '1' ? 'bold' : ''\n}\n\nexport function getFontItalic(node: AnyRecord): string {\n return getTextByPathList(node, ['a:rPr', 'attrs', 'i']) === '1' ? 'italic' : ''\n}\n\nexport function getFontDecoration(node: AnyRecord): string {\n return getTextByPathList(node, ['a:rPr', 'attrs', 'u']) === 'sng' ? 'underline' : ''\n}\n\nexport function getFontDecorationLine(node: AnyRecord): string {\n return getTextByPathList(node, ['a:rPr', 'attrs', 'strike']) === 'sngStrike' ? 'line-through' : ''\n}\n\nexport function getFontSpace(node: AnyRecord): string {\n const spc = getTextByPathList(node, ['a:rPr', 'attrs', 'spc'])\n return spc ? (parseInt(String(spc)) / 100 + 'pt') : ''\n}\n\nexport function getFontSubscript(node: AnyRecord): string {\n const baseline = getTextByPathList(node, ['a:rPr', 'attrs', 'baseline'])\n if (!baseline) return ''\n return parseInt(String(baseline)) > 0 ? 'super' : 'sub'\n}\n\nexport function getFontShadow(node: AnyRecord, warpObj: AnyRecord): string {\n const txtShadow = getTextByPathList(node, ['a:rPr', 'a:effectLst', 'a:outerShdw'])\n if (txtShadow) {\n const shadow = getShadow(txtShadow, 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 }\n return ''\n}\n","import { getHorizontalAlign, getParagraphSpacing } from './align'\nimport { getTextByPathList } from './utils'\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 genTextBody(textBodyNode: any, spNode: any, slideLayoutSpNode: any, slideMasterSpNode: any, type: any, warpObj: any) {\n if (!textBodyNode) return ''\n\n let text = ''\n\n const pFontStyle = getTextByPathList(spNode, ['p:style', 'a:fontRef'])\n\n const pNode = textBodyNode['a:p']\n const pNodes = pNode.constructor === Array ? pNode : [pNode]\n\n const listTypes: string[] = []\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: any) => item.type = 'br')\n \n if (brNode.length > 1) brNode.shift()\n rNode = rNode.concat(brNode)\n rNode.sort((a: any, b: any) => {\n if (!a.attrs || !b.attrs) return true\n return a.attrs.order - b.attrs.order\n })\n }\n }\n\n const align = getHorizontalAlign(pNode, spNode, type, warpObj)\n const spacing = getParagraphSpacing(pNode)\n\n let styleText = `text-align: ${align};`\n if (spacing) {\n if (spacing.lineSpacing) styleText += `line-height: ${spacing.lineSpacing};`\n if (spacing.spaceBefore) styleText += `margin-top: ${spacing.spaceBefore};`\n if (spacing.spaceAfter) styleText += `margin-bottom: ${spacing.spaceAfter};`\n }\n\n const listType = getListType(pNode)\n const listLevel = getListLevel(pNode)\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 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, warpObj)\n } \n else {\n let prevStyleInfo: any = null\n let accumulatedText = ''\n\n for (const rNodeItem of rNode) {\n const styleInfo = getSpanStyleInfo(rNodeItem, pNode, textBodyNode, pFontStyle, slideLayoutSpNode, slideMasterSpNode, type, 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 += '</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\nexport function getListType(node: any) {\n const pPrNode = node['a:pPr']\n if (!pPrNode) return ''\n\n if (pPrNode['a:buChar']) return 'ul'\n if (pPrNode['a:buAutoNum']) return 'ol'\n \n return ''\n}\nexport function getListLevel(node: any) {\n const pPrNode = node['a:pPr']\n if (!pPrNode) return -1\n\n const lvlNode = getTextByPathList(pPrNode, ['attrs', 'lvl'])\n if (lvlNode !== undefined) return parseInt(String(lvlNode))\n\n return 0\n}\n\nexport function genSpanElement(node: any, pNode: any, textBodyNode: any, pFontStyle: any, slideLayoutSpNode: any, slideMasterSpNode: any, type: any, warpObj: any) {\n const { styleText, text, hasLink, linkURL } = getSpanStyleInfo(node, pNode, textBodyNode, pFontStyle, slideLayoutSpNode, slideMasterSpNode, type, 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: any, pNode: any, textBodyNode: any, pFontStyle: any, slideLayoutSpNode: any, slideMasterSpNode: any, type: any, warpObj: any) {\n const lstStyle = textBodyNode['a:lstStyle']\n const slideMasterTextStyles = warpObj['slideMasterTextStyles']\n\n let lvl = 1\n const pPrNode = pNode['a:pPr']\n const lvlNode = getTextByPathList(pPrNode, ['attrs', 'lvl'])\n if (lvlNode !== undefined) lvl = parseInt(String(lvlNode)) + 1\n\n let text = node['a:t']\n if (typeof text !== 'string') text = getTextByPathList(node, ['a:fld', 'a:t'])\n if (typeof text !== 'string') text = ' '\n\n let styleText = ''\n const fontColor = getFontColor(node, pNode, lstStyle, pFontStyle, lvl, warpObj)\n const fontSize = getFontSize(node, slideLayoutSpNode, type, slideMasterTextStyles, textBodyNode, pNode)\n const fontType = getFontType(node, type, warpObj, slideLayoutSpNode, slideMasterSpNode, slideMasterTextStyles)\n const fontBold = getFontBold(node)\n const fontItalic = getFontItalic(node)\n const fontDecoration = getFontDecoration(node)\n const fontDecorationLine = getFontDecorationLine(node)\n const fontSpace = getFontSpace(node)\n const shadow = getFontShadow(node, warpObj)\n const subscript = getFontSubscript(node)\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: any) => `${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\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: any, cY: any, rX: any, rY: any, stAng: any, endAng: any, isClose: any) {\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: any, w: any, h: any) {\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'])\n const maxY = parseInt(pathNodes['attrs']['h'])\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: any[] = []\n if (moveToNode.length > 0) {\n Object.keys(moveToNode).forEach(key => {\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['attrs']?.['x']\n const spY = moveToNoPt['attrs']?.['y']\n const order = moveToNoPt['attrs']?.['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 const lnToPtNode = lnToNodes[key]['a:pt']\n if (lnToPtNode) {\n Object.keys(lnToPtNode).forEach(key => {\n const lnToNoPt = lnToPtNode[key]\n const ptX = lnToNoPt['attrs']?.['x']\n const ptY = lnToNoPt['attrs']?.['y']\n const order = lnToNoPt['attrs']?.['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: any[] = []\n if (!Array.isArray(cubicBezToNodes)) cubicBezToNodes = [cubicBezToNodes]\n Object.keys(cubicBezToNodes).forEach(key => {\n cubicBezToPtNodesAry.push(cubicBezToNodes[key]['a:pt'])\n })\n\n cubicBezToPtNodesAry.forEach(key => {\n const pts_ary: any[] = []\n key.forEach((pt: any) => {\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: any[] = []\n if (!Array.isArray(quadBezToNodes)) quadBezToNodes = [quadBezToNodes]\n Object.keys(quadBezToNodes).forEach(key => {\n quadBezToPtNodesAry.push(quadBezToNodes[key]['a:pt'])\n })\n\n quadBezToPtNodesAry.forEach(key => {\n const pts_ary: any[] = []\n key.forEach((pt: any) => {\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 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: hR,\n wR: wR,\n stAng: stAng,\n swAng: swAng,\n shftX: shftX,\n shftY: shftY,\n order,\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 identifyShape(shapeData: any) {\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: any) {\n const commands: any[] = []\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: any) {\n if (!value) return []\n return Array.isArray(value) ? value : [value]\n}\n\nfunction analyzePathCommands(commands: any, pathWidth: any, pathHeight: any) {\n const analysis = {\n lineCount: 0,\n curveCount: 0,\n arcCount: 0,\n isClosed: false,\n vertices: [] as any[],\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: any) => {\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: any, width: any, height: any) {\n const bezierCommands = commands.filter((c: any) => c.type === 'cubicBezTo')\n if (bezierCommands.length !== 4) return false\n\n const endpoints = bezierCommands.map((cmd: any) => cmd.points[2])\n \n const hasTop = endpoints.some((p: any) => Math.abs(p.y) < height * 0.1)\n const hasBottom = endpoints.some((p: any) => Math.abs(p.y - height) < height * 0.1)\n const hasLeft = endpoints.some((p: any) => Math.abs(p.x) < width * 0.1)\n const hasRight = endpoints.some((p: any) => Math.abs(p.x - width) < width * 0.1)\n\n return (hasTop || hasBottom) && (hasLeft || hasRight)\n}\n\nfunction matchShape(analysis: any) {\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: any, width: any, height: any) {\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: any) {\n const threshold = 100\n const unique: any[] = []\n \n vertices.forEach((v: any) => {\n const isDuplicate = unique.some((u: any) => \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: any, _width?: any, _height?: any) {\n if (vertices.length !== 4) return 'custom'\n\n const edges: any[] = []\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: any) {\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: any) {\n const tolerance = 0.1\n const avgLength = edges.reduce((sum: number, e: any) => sum + e.length, 0) / 4\n \n return edges.every((e: any) => Math.abs(e.length - avgLength) / avgLength < tolerance)\n}\n\nfunction isParallelogram(edges: any) {\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: any) {\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: any) {\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","import { getShapeFill, getSolidFill } from './fill'\nimport { getTextByPathList } from './utils'\nimport { getBorder } from './border'\n\nexport function getTableBorders(node: any, warpObj: any) {\n const borders: any = {}\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: any, thisTblStyle: any, cellSource: any, warpObj: any) {\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 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, undefined, false, warpObj, 'slide') as any\n\n if (fill && typeof fill === 'object' && 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 = getSolidFill(rowTxtStyl, undefined, undefined, 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[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[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[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[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: any = {}\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 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: any, i: any, tblStylAttrObj: any, thisTblStyle: any, warpObj: any) {\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 = getSolidFill(rowTxtStyl, undefined, undefined, 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 = getSolidFill(rowTxtStyl, undefined, undefined, 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 = getSolidFill(rowTxtStyl, undefined, undefined, 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 = getSolidFill(rowTxtStyl, undefined, undefined, 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 = getSolidFill(rowTxtStyl, undefined, undefined, 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","import { getTextByPathList } from './utils'\n\nexport function findOMath(obj: any): any[] {\n let results: any[] = []\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: any) => {\n if (Array.isArray(value) || typeof value === 'object') {\n results = results.concat(findOMath(value))\n }\n })\n return results\n}\n\nexport function parseFraction(fraction: any): string {\n const numerator = parseOMath(fraction['m:num'])\n const denominator = parseOMath(fraction['m:den'])\n return `\\\\frac{${numerator}}{${denominator}}`\n}\nexport function parseSuperscript(superscript: any): string {\n const base = parseOMath(superscript['m:e'])\n const sup = parseOMath(superscript['m:sup'])\n return `${base}^{${sup}}`\n}\nexport function parseSubscript(subscript: any): string {\n const base = parseOMath(subscript['m:e'])\n const sub = parseOMath(subscript['m:sub'])\n return `${base}_{${sub}}`\n}\nexport function parseRadical(radical: any): string {\n const degree = parseOMath(radical['m:deg'])\n const expression = parseOMath(radical['m:e'])\n return degree ? `\\\\sqrt[${degree}]{${expression}}` : `\\\\sqrt{${expression}}`\n}\nexport function parseMatrix(matrix: any): string {\n const rows = matrix['m:mr']\n const matrixRows = rows.map((row: any) => {\n return row['m:e'].map((element: any) => parseOMath(element)).join(' & ')\n })\n return `\\\\begin{matrix} ${matrixRows.join(' \\\\\\\\ ')} \\\\end{matrix}`\n}\nexport function parseNary(nary: any): string {\n const op = getTextByPathList(nary, ['m:naryPr', 'm:chr', 'attrs', 'm:val']) || '∫'\n const sub = parseOMath(nary['m:sub'])\n const sup = parseOMath(nary['m:sup'])\n const e = parseOMath(nary['m:e'])\n return `${op}_{${sub}}^{${sup}}{${e}}`\n}\nexport function parseLimit(limit: any, type: any): string {\n const base = parseOMath(limit['m:e'])\n const lim = parseOMath(limit['m:lim'])\n return type === 'low' ? `${base}_{${lim}}` : `${base}^{${lim}}`\n}\nexport function parseDelimiter(delimiter: any): string {\n let left = getTextByPathList(delimiter, ['m:dPr', 'm:begChr', 'attrs', 'm:val'])\n let right = getTextByPathList(delimiter, ['m:dPr', 'm:endChr', 'attrs', 'm:val'])\n if (!left && !right) {\n left = '('\n right = ')'\n }\n if (left && right) {\n left = `\\\\left${left}`\n right = `\\\\right${right}`\n }\n const e = parseOMath(delimiter['m:e'])\n return `${left}${e}${right}`\n}\nexport function parseFunction(func: any): string {\n const name = parseOMath(func['m:fName'])\n const arg = parseOMath(func['m:e'])\n return `\\\\${name}{${arg}}`\n}\nexport function parseGroupChr(groupChr: any): string {\n const chr = getTextByPathList(groupChr, ['m:groupChrPr', 'm:chr', 'attrs', 'm:val'])\n const e = parseOMath(groupChr['m:e'])\n return `${chr}${e}${chr}`\n}\nexport function parseEqArr(eqArr: any): string {\n const equations = eqArr['m:e'].map((eq: any) => parseOMath(eq)).join(' \\\\\\\\ ')\n return `\\\\begin{cases} ${equations} \\\\end{cases}`\n}\nexport function parseBar(bar: any): string {\n const e = parseOMath(bar['m:e'])\n const pos = getTextByPathList(bar, ['m:barPr', 'm:pos', 'attrs', 'm:val'])\n return pos === 'top' ? `\\\\overline{${e}}` : `\\\\underline{${e}}`\n}\nexport function parseAccent(accent: any): string {\n const chr = getTextByPathList(accent, ['m:accPr', 'm:chr', 'attrs', 'm:val']) || '^'\n const e = parseOMath(accent['m:e'])\n switch (chr) {\n case '\\u0301':\n return `\\\\acute{${e}}`\n case '\\u0300':\n return `\\\\grave{${e}}`\n case '\\u0302':\n return `\\\\hat{${e}}`\n case '\\u0303':\n return `\\\\tilde{${e}}`\n case '\\u0304':\n return `\\\\bar{${e}}`\n case '\\u0306':\n return `\\\\breve{${e}}`\n case '\\u0307':\n return `\\\\dot{${e}}`\n case '\\u0308':\n return `\\\\ddot{${e}}`\n case '\\u030A':\n return `\\\\mathring{${e}}`\n case '\\u030B':\n return `\\\\H{${e}}`\n case '\\u030C':\n return `\\\\check{${e}}`\n case '\\u0327':\n return `\\\\c{${e}}`\n default:\n return `\\\\${chr}{${e}}`\n }\n}\nexport function parseBox(box: any): string {\n const e = parseOMath(box['m:e'])\n return `\\\\boxed{${e}}`\n}\n\n\nexport function parseOMath(oMath: any): string {\n if (!oMath) return ''\n\n if (Array.isArray(oMath)) {\n return oMath.map((item: any) => parseOMath(item)).join('')\n }\n\n const oMathList: any[] = []\n const keys = Object.keys(oMath)\n for (const key of keys) {\n if (Array.isArray(oMath[key])) {\n oMathList.push(...oMath[key].map((item: any) => ({ key, value: item })))\n }\n else oMathList.push({ key, value: oMath[key] })\n }\n\n oMathList.sort((a: any, b: any) => {\n let oA = 0\n if (a.key === 'm:r' && a.value && a.value['a:rPr']) oA = a.value['a:rPr']['attrs']['order']\n else if (a.value[`${a.key}Pr`] && a.value[`${a.key}Pr`]['m:ctrlPr'] && a.value[`${a.key}Pr`]['m:ctrlPr']['a:rPr']) {\n oA = a.value[`${a.key}Pr`] && a.value[`${a.key}Pr`]['m:ctrlPr'] && a.value[`${a.key}Pr`]['m:ctrlPr']['a:rPr'] && a.value[`${a.key}Pr`]['m:ctrlPr']['a:rPr']['attrs']['order']\n }\n let oB = 0\n if (b.key === 'm:r' && b.value && b.value['a:rPr']) oB = b.value['a:rPr']['attrs']['order']\n else if (b.value[`${b.key}Pr`] && b.value[`${b.key}Pr`]['m:ctrlPr'] && b.value[`${b.key}Pr`]['m:ctrlPr']['a:rPr']) {\n oB = b.value[`${b.key}Pr`] && b.value[`${b.key}Pr`]['m:ctrlPr'] && b.value[`${b.key}Pr`]['m:ctrlPr']['a:rPr'] && b.value[`${b.key}Pr`]['m:ctrlPr']['a:rPr']['attrs']['order']\n }\n return oA - oB\n })\n\n return oMathList.map(({ key, value }: any) => {\n if (key === 'm:f') return parseFraction(value)\n if (key === 'm:sSup') return parseSuperscript(value)\n if (key === 'm:sSub') return parseSubscript(value)\n if (key === 'm:rad') return parseRadical(value)\n if (key === 'm:nary') return parseNary(value)\n if (key === 'm:limLow') return parseLimit(value, 'low')\n if (key === 'm:limUpp') return parseLimit(value, 'upp')\n if (key === 'm:d') return parseDelimiter(value)\n if (key === 'm:func') return parseFunction(value)\n if (key === 'm:groupChr') return parseGroupChr(value)\n if (key === 'm:eqArr') return parseEqArr(value)\n if (key === 'm:bar') return parseBar(value)\n if (key === 'm:acc') return parseAccent(value)\n if (key === 'm:borderBox') return parseBox(value)\n if (key === 'm:m') return parseMatrix(value)\n if (key === 'm:r') return parseOMath(value)\n if (key === 'm:t') return value\n return ''\n }).join('')\n}\n\nexport function latexFormart(latex: any): string {\n return latex.replaceAll(/</g, '<')\n .replaceAll(/>/g, '>')\n .replaceAll(/&/g, '&')\n .replaceAll(/'/g, \"'\")\n .replaceAll(/"/g, '\"')\n}\n","/* eslint-disable max-lines */\n\nimport { RATIO_EMUs_Points } from './constants'\nimport { getTextByPathList } from './utils'\n\nfunction shapePie(H: any, w: any, adj1: any, adj2: any, isClose: any) {\n const pieVal = parseInt(adj2)\n const piAngle = parseInt(adj1)\n const size = parseInt(H)\n const radius = size / 2\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 x = Math.cos((2 * Math.PI) / (360 / value))\n const y = Math.sin((2 * Math.PI) / (360 / value))\n\n let longArc, d\n if (isClose) {\n longArc = (value <= 180) ? 0 : 1\n d = `M${radius},${radius} L${radius},0 A${radius},${radius} 0 ${longArc},1 ${radius + y * radius},${radius - x * radius} z`\n } \n else {\n longArc = (value <= 180) ? 0 : 1\n const radius1 = radius\n const radius2 = w / 2\n d = `M${radius1},0 A${radius2},${radius1} 0 ${longArc},1 ${radius2 + y * radius2},${radius1 - x * radius1}`\n }\n\n return d\n}\nfunction shapeGear(_w: any, h: any, points: any) {\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: any, cY: any, rX: any, rY: any, stAng: any, endAng: any, isClose: any) {\n let dData = ''\n const increment = (endAng >= stAng) ? 1 : -1\n let angle = stAng\n\n const condition = (a: any) => (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: any, h: any, adj1: any, adj2: any, shapeType: any, adjType: any) {\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 if (shapeType === 'round') {\n return `M0,${h / 2 + (1 - adjB) * (h / 2)} Q0,${h} ${adjB * (w / 2)},${h} L${w / 2 + (1 - adjC) * (w / 2)},${h} Q${w},${h} ${w},${h / 2 + (h / 2) * (1 - adjC)} L${w},${(h / 2) * adjD} Q${w},0 ${w / 2 + (w / 2) * (1 - adjD)},0 L${(w / 2) * adjA},0 Q0,0 0,${(h / 2) * (adjA)} z`\n } \n else if (shapeType === 'snip') {\n return `M0,${adjA * (h / 2)} L0,${h / 2 + (h / 2) * (1 - adjB)} L${adjB * (w / 2)},${h} L${w / 2 + (w / 2) * (1 - adjC)},${h} L${w},${h / 2 + (h / 2) * (1 - adjC)} L${w},${adjD * (h / 2)} L${w / 2 + (w / 2) * (1 - adjD)},0 L${(w / 2) * adjA},0 z`\n }\n return ''\n}\n\nexport function getShapePath(shapType: any, w: any, h: any, node: any) {\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 const max_adj_const = 0.7407\n if (shapAdjst) {\n const adjst = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n adjst_val = (adjst * 0.5) / max_adj_const\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 const max_adj_const = w > h ? w / h : h / w\n const adjst = parseInt(shapAdjst.substring(4)) / 100000\n adjst_val = adjst / max_adj_const\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 let shapAdjst1 = getTextByPathList(shapAdjst, ['attrs', 'fmla'])\n let shapAdjst2 = shapAdjst1\n if (shapAdjst1 === undefined) {\n shapAdjst1 = shapAdjst[0]['attrs']['fmla']\n shapAdjst2 = shapAdjst[1]['attrs']['fmla']\n }\n if (shapAdjst1) {\n adj1 = parseInt(shapAdjst1.substring(4)) / 60000\n }\n if (shapAdjst2) {\n adj2 = parseInt(shapAdjst2.substring(4)) / 60000\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: any, startY: any, rX: any, rY: any, sA: any, wA: any) => {\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 [rX, rY, sA, wA] = arcParams as [any, any, any, any]\n const arcPath = getArc(lastPoint[0], lastPoint[1], rX, rY, sA, wA)\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'\nimport type { AnyRecord, XmlNode } from './types'\n\nexport function findTransitionNode(content: XmlNode, rootElement: string): XmlNode | null {\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\ntype TransitionResult = {\n type: string\n duration: number\n direction: string | null\n autoNextAfter?: number\n}\n\nexport function parseTransition(transitionNode: XmlNode): TransitionResult | null {\n if (!transitionNode) return null\n\n const transition: TransitionResult = {\n type: 'none',\n duration: 1000,\n direction: null,\n }\n\n const attrs = ((transitionNode as AnyRecord).attrs || {}) as AnyRecord\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 as AnyRecord) {\n if (key !== 'attrs' && effectRegex.test(key)) {\n const effectNode = (transitionNode as AnyRecord)[key] as AnyRecord\n transition.type = key.substring(key.indexOf(':') + 1)\n\n if (effectNode && effectNode.attrs) {\n const effectAttrs = effectNode.attrs as AnyRecord\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","import { getTextByPathList } from './utils'\n\nexport function getSmartArtTextData(dataContent: any) {\n const result: string[] = []\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: any) => {\n let runs = getTextByPathList(p, ['a:r'])\n if (runs) {\n if (!Array.isArray(runs)) runs = [runs]\n\n runs.forEach((r: any) => {\n const t = 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","const PT_TO_PX = 96 / 72;\n\ntype FillMapping = { fill?: string; pattern?: string };\n\nexport function toPx(value?: number | null): number | undefined {\n if (value === undefined || value === null) return undefined;\n return value * PT_TO_PX;\n}\n\nexport function toPxPair(value?: [number, number] | null): [number, number] | undefined {\n if (!value) return undefined;\n return [toPx(value[0]) ?? 0, toPx(value[1]) ?? 0];\n}\n\nexport function mapColor(value?: string | null): string | undefined {\n if (!value) return undefined;\n const normalized = value.startsWith(\"#\") ? value : `#${value}`;\n return normalized.toUpperCase();\n}\n\nexport function mapFillColor(value?: string | null): string | undefined {\n if (!value) return undefined;\n return value.startsWith(\"#\") ? value : `#${value}`;\n}\n\nexport function mapFill(fill: any): FillMapping {\n if (!fill) return {};\n if (typeof fill === \"string\") return { fill: mapFillColor(fill) ?? undefined };\n if (typeof fill === \"object\") {\n if (fill.type === \"color\" && typeof fill.value === \"string\") {\n return { fill: mapFillColor(fill.value) ?? undefined };\n }\n if (fill.type === \"image\" && fill.value?.picBase64) {\n return { fill: \"\", pattern: fill.value.picBase64 };\n }\n }\n return {};\n}\n\nfunction convertFontSizeToPx(content: string): string {\n return content.replace(/font-size:\\s*([0-9.]+)pt/gi, (_, size) => {\n const px = Math.floor(Number.parseFloat(size) * PT_TO_PX);\n return `font-size: ${px}px`;\n });\n}\n\nexport function normalizeTextContent(content: string): string {\n return convertFontSizeToPx(content).replace(/ /g, \" \");\n}\n\nexport function normalizeVAlign(value?: string): string | undefined {\n if (!value) return undefined;\n if (value === \"mid\") return \"middle\";\n if (value === \"up\") return \"top\";\n if (value === \"down\") return \"bottom\";\n return value;\n}\n\nexport function roundTo(value?: number | null, digits = 2): number | undefined {\n if (value === undefined || value === null) return undefined;\n const factor = 10 ** digits;\n return Math.round(value * factor) / factor;\n}\n\nexport function normalizeColor(value?: string | null): string | undefined {\n if (!value) return undefined;\n return value.startsWith(\"#\") ? value.toUpperCase() : `#${value}`.toUpperCase();\n}\n\nfunction extractFirstFontSizePx(content?: string): number | undefined {\n if (!content) return undefined;\n const match = content.match(/font-size:\\s*([0-9.]+)px/i);\n if (!match) return undefined;\n const size = Number.parseFloat(match[1]);\n return Number.isFinite(size) ? size : undefined;\n}\n\nexport function normalizeTextHeight(\n height?: number,\n content?: string,\n lineHeight?: number\n): number | undefined {\n if (height === undefined) return height;\n const fontSize = extractFirstFontSizePx(content);\n if (!fontSize) return height;\n const lh = lineHeight ?? 1;\n const base = fontSize * lh;\n const padding = fontSize < 40 ? 21 : 20.5;\n const target = Math.round((base + padding) * 2) / 2;\n if (height > base * 2) return height;\n return target;\n}\n\nexport function hasMultiLineText(content?: string): boolean {\n if (!content) return false;\n if (content.includes(\"<br\")) return true;\n const paragraphs = content.match(/<p\\b/gi);\n return (paragraphs?.length ?? 0) > 1;\n}\n\nexport function getPathBounds(path?: string): [number, number] | undefined {\n if (!path) return undefined;\n const nums = path.match(/-?\\d+\\.?\\d*/g);\n if (!nums || nums.length < 2) return undefined;\n const values = nums.map((value) => Number.parseFloat(value)).filter(Number.isFinite);\n if (!values.length) return undefined;\n let maxX = 0;\n let maxY = 0;\n for (let index = 0; index < values.length; index += 2) {\n const x = values[index];\n const y = values[index + 1];\n if (Number.isFinite(x)) maxX = Math.max(maxX, x);\n if (Number.isFinite(y)) maxY = Math.max(maxY, y);\n }\n if (maxX === 0 && maxY === 0) return undefined;\n return [maxX, maxY];\n}\n\nexport function buildEllipsePath(): string {\n return \"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z\";\n}\n\nexport function buildRoundRectPath(width: number, height: number, radius: number): string {\n const r = Math.max(0, Math.min(radius, Math.min(width, height)));\n return `M ${r} 0 L ${width - r} 0 Q ${width} 0 ${width} ${r} ` +\n `L ${width} ${height - r} Q ${width} ${height} ${width - r} ${height} ` +\n `L ${r} ${height} Q 0 ${height} 0 ${height - r} ` +\n `L 0 ${r} Q 0 0 ${r} 0 Z`;\n}\n\nexport function buildRectPath(): string {\n return \"M 0 0 L 200 0 L 200 200 L 0 200 Z\";\n}\n\nexport function buildCutRectDiagonalPath(\n width: number,\n height: number,\n adj: number\n): string {\n const cut = height * adj;\n return `M 0 ${height - cut} L 0 0 L ${width - cut} 0 L ${width} ${cut} L ${width} ${height} L ${cut} ${height} Z`;\n}\n\nexport function mapPathFormula(\n shapeType?: string\n): \"roundRect\" | \"triangle\" | \"cutRectDiagonal\" | undefined {\n switch (shapeType) {\n case \"roundRect\":\n return \"roundRect\";\n case \"triangle\":\n return \"triangle\";\n case \"snip2DiagRect\":\n return \"cutRectDiagonal\";\n default:\n return undefined;\n }\n}\n\nfunction parseKeypoints(raw: any): any | undefined {\n if (!raw) return undefined;\n if (typeof raw === \"string\") {\n try {\n return JSON.parse(raw);\n } catch {\n return undefined;\n }\n }\n return raw;\n}\n\nexport function mapKeypoints(pathFormula: string, raw: any): number[] | undefined {\n const keypoints = parseKeypoints(raw);\n if (!keypoints) return undefined;\n if (pathFormula === \"roundRect\") {\n const adj = typeof keypoints.adj === \"number\" ? keypoints.adj : 0.5;\n return [Math.min(0.5, Math.max(0, adj))];\n }\n if (pathFormula === \"triangle\") {\n return [typeof keypoints.adj === \"number\" ? keypoints.adj : 0];\n }\n if (pathFormula === \"cutRectDiagonal\") {\n const adj2 = typeof keypoints.adj2 === \"number\" ? keypoints.adj2 : 0.62602;\n return [Number((adj2 / 2).toFixed(5))];\n }\n return undefined;\n}\n","import type { SlideElement } from './types'\nimport {\n buildCutRectDiagonalPath,\n buildEllipsePath,\n buildRectPath,\n buildRoundRectPath,\n getPathBounds,\n hasMultiLineText,\n mapColor,\n mapFill,\n mapFillColor,\n mapKeypoints,\n mapPathFormula,\n normalizeColor,\n normalizeTextContent,\n normalizeTextHeight,\n normalizeVAlign,\n roundTo,\n toPx,\n toPxPair\n} from \"./utils\";\n\nexport function mapElement(raw: any): SlideElement | null {\n if (!raw || !raw.type) return null;\n const base = mapBaseElement(raw);\n\n if (raw.type === \"text\") {\n const content =\n raw.content !== undefined ? normalizeTextContent(raw.content) : raw.content;\n const fallbackLineHeight = hasMultiLineText(content) ? 1.5 : 1;\n const lineHeight = raw.lineHeight ?? fallbackLineHeight;\n const normalizedHeight = normalizeTextHeight(base.height, content, lineHeight);\n return {\n ...base,\n height: normalizedHeight,\n rotate: base.rotate ?? 0,\n flipH: undefined,\n flipV: undefined,\n content,\n defaultColor: normalizeColor(raw.defaultColor) ?? normalizeColor(raw.color) ?? \"#333\",\n defaultFontName: raw.fontName ?? \"\",\n wordSpace: raw.wordSpace,\n lineHeight,\n paragraphSpace: raw.paragraphSpace,\n vertical: raw.isVertical,\n fill: mapFill(raw.fill).fill ?? \"\"\n };\n }\n\n if (raw.type === \"image\") {\n const rect = raw.rect ?? {};\n const clipRange: [[number, number], [number, number]] = [\n [rect.l ?? 0, rect.t ?? 0],\n [rect.r ?? 100, rect.b ?? 100]\n ];\n if (rect.r !== undefined || rect.b !== undefined) {\n clipRange[1][0] = 100 - (rect.r ?? 0);\n clipRange[1][1] = 100 - (rect.b ?? 0);\n }\n return {\n ...base,\n rotate: base.rotate ?? 0,\n fixedRatio: true,\n src: raw.src,\n clip: {\n shape: raw.geom === \"ellipse\" ? \"ellipse\" : \"rect\",\n range: clipRange\n }\n };\n }\n\n if (raw.type === \"shape\") {\n const { fill, pattern } = mapFill(raw.fill);\n const pathFormula = mapPathFormula(raw.shapType);\n const keypoints = pathFormula ? mapKeypoints(pathFormula, raw.keypoints) : undefined;\n const hasText = raw.content !== undefined;\n let path = raw.path;\n let viewBox = raw.viewBox ?? [raw.width ?? 0, raw.height ?? 0];\n let special = false;\n\n if (raw.shapType === \"rect\") {\n path = buildRectPath();\n viewBox = [200, 200];\n }\n\n if (pathFormula && base.width && base.height) {\n if (pathFormula === \"roundRect\") {\n const radius = (keypoints?.[0] ?? 0.5) * Math.min(base.width, base.height);\n path = buildRoundRectPath(base.width, base.height, radius);\n viewBox = [base.width, base.height];\n } else if (pathFormula === \"cutRectDiagonal\") {\n const adj = keypoints?.[0] ?? 0.31301;\n path = buildCutRectDiagonalPath(base.width, base.height, adj);\n viewBox = [base.width, base.height];\n }\n } else if (raw.shapType === \"ellipse\") {\n path = buildEllipsePath();\n viewBox = [200, 200];\n } else if (raw.path) {\n const bounds = getPathBounds(raw.path);\n if (bounds) {\n const rectPath = buildRectPath();\n if (raw.path.trim() === rectPath) {\n viewBox = [200, 200];\n } else if (bounds[0] > viewBox[0] || bounds[1] > viewBox[1]) {\n const ratio = base.width ? bounds[0] / base.width : undefined;\n const nextHeight =\n ratio && base.height ? base.height * ratio : bounds[1];\n viewBox = [bounds[0], nextHeight];\n if (raw.shapType === \"custom\" && raw.path.length > 200) {\n special = true;\n }\n }\n }\n }\n\n return {\n ...base,\n rotate: base.rotate ?? 0,\n fixedRatio: false,\n path,\n viewBox,\n pathFormula: pathFormula ?? undefined,\n keypoints: keypoints ?? undefined,\n pattern,\n fill: fill ?? \"\",\n ...(special ? { special: true } : {}),\n text: hasText\n ? {\n content: normalizeTextContent(raw.content),\n align: normalizeVAlign(raw.vAlign) ?? \"middle\",\n defaultColor: normalizeColor(raw.defaultColor) ?? normalizeColor(raw.color) ?? \"#333\",\n defaultFontName: raw.fontName ?? \"\",\n lineHeight: raw.lineHeight ?? 1\n }\n : undefined\n };\n }\n\n if (raw.type === \"line\") {\n return {\n ...base,\n start: toPxPair(raw.start),\n end: toPxPair(raw.end),\n broken: toPxPair(raw.broken),\n broken2: toPxPair(raw.broken2),\n curve: toPxPair(raw.curve),\n cubic: raw.cubic\n ? (raw.cubic.map((point: [number, number]) => toPxPair(point)) as [\n [number, number],\n [number, number]\n ])\n : undefined,\n color: mapColor(raw.color),\n points: raw.points,\n style: raw.style\n };\n }\n\n return {\n ...base,\n content: raw.content,\n path: raw.path,\n viewBox: raw.viewBox,\n text: raw.text\n };\n}\n\nexport function normalizeElement(element: SlideElement): SlideElement {\n if (\n element.type === \"shape\" &&\n element.outline &&\n ((element.height === 0 && element.width) || (element.width === 0 && element.height))\n ) {\n const isVertical = element.width === 0;\n return {\n type: \"line\",\n id: element.id,\n groupId: element.groupId,\n left: element.left,\n top: element.top,\n width: element.outline.width,\n start: [0, 0],\n end: isVertical ? [0, element.height ?? 0] : [element.width ?? 0, 0],\n style: element.outline.style,\n color: element.outline.color,\n points: [\"\", \"\"]\n };\n }\n\n if (element.type === \"shape\" && element.fill) {\n element.fill = mapFillColor(element.fill) ?? element.fill;\n }\n\n if (element.type === \"text\" && element.content) {\n element.content = normalizeTextContent(element.content);\n }\n\n if (element.type === \"shape\" && element.text?.content) {\n element.text.content = normalizeTextContent(element.text.content);\n }\n\n if (element.type === \"image\") {\n delete element.filters;\n delete element.imageType;\n delete element.outline;\n }\n\n return element;\n}\n\nexport function flattenElements(\n elements: any[],\n offsetX = 0,\n offsetY = 0\n): SlideElement[] {\n const result: SlideElement[] = [];\n\n for (const element of elements) {\n if (element?.type === \"group\" && Array.isArray(element.elements)) {\n const groupLeft = toPx(element.left) ?? 0;\n const groupTop = toPx(element.top) ?? 0;\n result.push(...flattenElements(element.elements, offsetX + groupLeft, offsetY + groupTop));\n continue;\n }\n\n const mapped = mapElement(element);\n if (!mapped) continue;\n\n if (offsetX || offsetY) {\n if (mapped.left !== undefined) mapped.left = mapped.left + offsetX;\n if (mapped.top !== undefined) mapped.top = mapped.top + offsetY;\n }\n\n result.push(mapped);\n }\n\n return result;\n}\n\nfunction mapShadow(shadow: any): SlideElement[\"shadow\"] | undefined {\n if (!shadow) return undefined;\n return {\n h: toPx(shadow.h),\n v: toPx(shadow.v),\n blur: toPx(shadow.blur),\n color: mapColor(shadow.color) ?? shadow.color\n };\n}\n\nfunction mapOutline(raw: any): SlideElement[\"outline\"] | undefined {\n if (!raw) return undefined;\n if (!raw.borderColor && !raw.borderWidth && !raw.borderType) return undefined;\n return {\n width: roundTo(toPx(raw.borderWidth)) ?? undefined,\n color: normalizeColor(raw.borderColor),\n style: raw.borderType\n };\n}\n\nfunction mapBaseElement(raw: any): SlideElement {\n const outline = mapOutline(raw);\n const shadow = mapShadow(raw.shadow);\n const { fill } = mapFill(raw.fill);\n\n return {\n type: raw.type,\n id: raw.id,\n groupId: raw.groupId,\n left: toPx(raw.left),\n top: toPx(raw.top),\n width: toPx(raw.width),\n height: toPx(raw.height),\n rotate: raw.rotate,\n fill: fill ?? undefined,\n opacity: raw.opacity,\n outline: outline ?? undefined,\n shadow: shadow ?? undefined,\n flipH: raw.isFlipH,\n flipV: raw.isFlipV\n };\n}\n","import type { Slide } from './types'\nimport { flattenElements, normalizeElement } from './element-mapper'\nimport { mapFill } from './utils'\n\nconst ID_ALPHABET = \"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_\";\n\nexport function normalizeSlide(slide: any, index: number): Slide {\n const backgroundFill = mapFill(slide?.fill);\n const rawElements = [\n ...(Array.isArray(slide?.layoutElements) ? slide.layoutElements : []),\n ...(Array.isArray(slide?.elements) ? slide.elements : [])\n ];\n\n const orderedElements = rawElements.slice().sort((a, b) => {\n const orderA = typeof a?.order === \"number\" ? a.order : 0;\n const orderB = typeof b?.order === \"number\" ? b.order : 0;\n return orderA - orderB;\n });\n\n const elements = flattenElements(orderedElements).map((element, elementIndex) => {\n if (!element.id) {\n element.id = makeId(`slide-${index}-element-${elementIndex}-${element.type}`);\n }\n return normalizeElement(element);\n });\n\n return {\n id: slide?.id ?? slide?.slideId ?? makeId(`slide-${index}`),\n background: backgroundFill.fill\n ? { type: \"solid\", color: backgroundFill.fill }\n : backgroundFill.pattern\n ? { type: \"image\", src: backgroundFill.pattern }\n : undefined,\n elements,\n remark: slide?.remark ?? \"\"\n };\n}\n\nfunction makeId(seed: string): string {\n const next = hashSeed(seed);\n let state = next();\n let id = \"\";\n for (let index = 0; index < 10; index += 1) {\n state = Math.imul(state ^ (state >>> 15), state | 1);\n state ^= state + Math.imul(state ^ (state >>> 7), state | 61);\n const value = ((state ^ (state >>> 14)) >>> 0) / 4294967296;\n id += ID_ALPHABET[Math.floor(value * ID_ALPHABET.length)];\n }\n return id;\n}\n\nfunction hashSeed(value: string): () => number {\n let hash = 1779033703 ^ value.length;\n for (let index = 0; index < value.length; index += 1) {\n hash = Math.imul(hash ^ value.charCodeAt(index), 3432918353);\n hash = (hash << 13) | (hash >>> 19);\n }\n return () => {\n hash = Math.imul(hash ^ (hash >>> 16), 2246822507);\n hash = Math.imul(hash ^ (hash >>> 13), 3266489909);\n return (hash ^= hash >>> 16) >>> 0;\n };\n}\n"],"mappings":"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","names":["JSZip","obj","p","q","toHex","text","hslToRgb","sldClrMapOvr","toHex","hslToRgb","innerNode","pNode","key","shapeArc","parse","elements","ws","hs","name","width","JSZip","parse"]}
|
|
1
|
+
{"version":3,"sources":["../index.ts","../parser/parse.ts","../../../../node_modules/.pnpm/txml@5.2.1/node_modules/txml/dist/txml.mjs","../parser/readXmlFile.ts","../../../../node_modules/.pnpm/tinycolor2@1.6.0/node_modules/tinycolor2/esm/tinycolor.js","../parser/utils.ts","../parser/schemeColor.ts","../parser/border.ts","../parser/color.ts","../parser/fill.ts","../parser/chart.ts","../parser/align.ts","../parser/constants.ts","../parser/position.ts","../parser/shadow.ts","../parser/fontStyle.ts","../parser/text.ts","../parser/shape.ts","../parser/table.ts","../parser/math.ts","../parser/shapePath.ts","../parser/animation.ts","../parser/diagram.ts","../utils.ts","../element-mapper.ts","../slide-normalizer.ts"],"sourcesContent":["import { parseDocument } from 'json2pptx-schema'\nimport type { PresentationData } from './types'\nimport { parse } from './parser/parse'\nimport type { PptxParseResult } from './parser/parse'\nimport { normalizeSlide } from './slide-normalizer'\nimport { mapColor, toPx } from './utils'\n\ntype PresentationDocument = ReturnType<typeof parseDocument>\n\nexport type ParsedResult = {\n deck: PresentationData\n warnings: string[]\n}\n\nconst DEFAULT_DECK_TITLE = '未命名演示文稿'\nconst DEFAULT_THEME = {\n fontColor: '#333',\n fontName: '',\n backgroundColor: '#fff',\n shadow: {\n h: 3,\n v: 3,\n blur: 2,\n color: '#808080'\n },\n outline: {\n width: 2,\n color: '#525252',\n style: 'solid'\n }\n} as const\n\nexport async function parsePptxToJson(file: File): Promise<ParsedResult> {\n const fileBuffer = await file.arrayBuffer()\n\n return {\n deck: await buildDeckFromPptx(fileBuffer),\n warnings: []\n }\n}\n\nfunction normalizeDeck(value: unknown): PresentationData {\n const document: PresentationDocument = parseDocument(value)\n return document as unknown as PresentationData\n}\n\nasync function buildDeckFromPptx(buffer: ArrayBuffer): Promise<PresentationData> {\n const pptxJson = await parse(buffer)\n const width = toPx(pptxJson.size?.width)\n const height = toPx(pptxJson.size?.height)\n const themeColors = mapThemeColors(pptxJson)\n const slides = (Array.isArray(pptxJson.slides) ? pptxJson.slides : []).map(\n (slide, index) => normalizeSlide(slide, index)\n )\n\n return normalizeDeck({\n title: DEFAULT_DECK_TITLE,\n width,\n height,\n theme: {\n ...DEFAULT_THEME,\n themeColors\n },\n slides\n })\n}\n\nfunction mapThemeColors(pptxJson: PptxParseResult): string[] | undefined {\n if (!Array.isArray(pptxJson.themeColors)) {\n return undefined\n }\n\n return pptxJson.themeColors.map((color) => normalizeThemeColor(color))\n}\n\nfunction normalizeThemeColor(color: string): string {\n const mapped = mapColor(color)\n if (!mapped) {\n return color\n }\n\n return /^#([0-9A-F]{6}|[0-9A-F]{8})$/.test(mapped) ? mapped : color\n}\n\nexport type { Deck, Presentation, PresentationData, PresentationTheme, Slide, SlideElement } from './types'\n","// @ts-nocheck\n\nimport JSZip from 'jszip'\nimport { readXmlFile } from './readXmlFile'\nimport { getBorder } from './border'\nimport { getSlideBackgroundFill, getShapeFill, getSolidFill, getPicFill, getPicFilters } from './fill'\nimport { getChartInfo } from './chart'\nimport { getVerticalAlign, getTextAutoFit } from './align'\nimport { getPosition, getSize } from './position'\nimport { genTextBody } from './text'\nimport { getCustomShapePath, identifyShape } from './shape'\nimport { extractFileExtension, base64ArrayBuffer, getTextByPathList, angleToDegrees, getMimeType, isVideoLink, escapeHtml, hasValidText, numberToFixed } from './utils'\nimport { getShadow } from './shadow'\nimport { getTableBorders, getTableCellParams, getTableRowParams } from './table'\nimport { RATIO_EMUs_Points } from './constants'\nimport { findOMath, latexFormart, parseOMath } from './math'\nimport { getShapePath } from './shapePath'\nimport { parseTransition, findTransitionNode } from './animation'\nimport { getSmartArtTextData } from './diagram'\n\nexport type PptxParseResult = {\n slides: any[]\n themeColors: string[]\n size: {\n width: number\n height: number\n }\n}\n\nexport async function parse(file: ArrayBuffer): Promise<PptxParseResult> {\n const slides = []\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\n for (const filename of filesInfo.slides) {\n const singleSlide = await processSingleSlide(zip, filename, themeContent, defaultTextStyle)\n slides.push(singleSlide)\n }\n\n return {\n slides,\n themeColors,\n size: {\n width,\n height,\n },\n }\n}\n\nasync function getContentTypes(zip) {\n const ContentTypesJson = await readXmlFile(zip, '[Content_Types].xml')\n const subObj = ContentTypesJson['Types']['Override']\n let slidesLocArray = []\n let slideLayoutsLocArray = []\n\n for (const item of subObj) {\n switch (item['attrs']['ContentType']) {\n case 'application/vnd.openxmlformats-officedocument.presentationml.slide+xml':\n slidesLocArray.push(item['attrs']['PartName'].substr(1))\n break\n case 'application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml':\n slideLayoutsLocArray.push(item['attrs']['PartName'].substr(1))\n break\n default:\n }\n }\n \n const sortSlideXml = (p1, p2) => {\n const n1 = +/(\\d+)\\.xml/.exec(p1)[1]\n const n2 = +/(\\d+)\\.xml/.exec(p2)[1]\n return n1 - n2\n }\n slidesLocArray = slidesLocArray.sort(sortSlideXml)\n slideLayoutsLocArray = slideLayoutsLocArray.sort(sortSlideXml)\n \n return {\n slides: slidesLocArray,\n slideLayouts: slideLayoutsLocArray,\n }\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 const preResContent = await readXmlFile(zip, 'ppt/_rels/presentation.xml.rels')\n const relationshipArray = preResContent['Relationships']['Relationship']\n let themeURI\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 const themeContent = await readXmlFile(zip, 'ppt/' + themeURI)\n\n const themeColors = []\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 return { themeContent, themeColors }\n}\n\nasync function processSingleSlide(zip, sldFileName, themeContent, defaultTextStyle) {\n const resName = sldFileName.replace('slides/slide', 'slides/_rels/slide') + '.rels'\n const resContent = await readXmlFile(zip, resName)\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 let diagramFilename = ''\n const diagramFiles = {}\n const slideResObj = {}\n const layoutResObj = {}\n const masterResObj = {}\n const themeResObj = {}\n const diagramResObj = {}\n\n for (const relationshipArrayItem of relationshipArray) {\n const relType = relationshipArrayItem['attrs']['Type'].replace('http://schemas.openxmlformats.org/officeDocument/2006/relationships/', '')\n let relTarget = relationshipArrayItem['attrs']['Target']\n if (relTarget.indexOf('../') !== -1) relTarget = relTarget.replace('../', 'ppt/')\n else relTarget = 'ppt/slides/' + relTarget\n\n switch (relationshipArrayItem['attrs']['Type']) {\n case 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout':\n layoutFilename = relTarget\n slideResObj[relationshipArrayItem['attrs']['Id']] = {\n type: relType,\n target: relTarget\n }\n break\n case 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide':\n noteFilename = relTarget\n slideResObj[relationshipArrayItem['attrs']['Id']] = {\n type: relType,\n target: relTarget\n }\n break\n case 'http://schemas.microsoft.com/office/2007/relationships/diagramDrawing':\n diagramFilename = relTarget\n slideResObj[relationshipArrayItem['attrs']['Id']] = {\n type: relType,\n target: relTarget\n }\n break\n case 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/diagramData':\n case 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/diagramLayout':\n case 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/diagramQuickStyle':\n case 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/diagramColors':\n diagramFiles[relationshipArrayItem['attrs']['Id']] = relTarget\n slideResObj[relationshipArrayItem['attrs']['Id']] = {\n type: relType,\n target: relTarget\n }\n break\n case 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image':\n case 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart':\n case 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink':\n default:\n slideResObj[relationshipArrayItem['attrs']['Id']] = {\n type: relType,\n target: relTarget,\n }\n }\n }\n \n const slideNotesContent = await readXmlFile(zip, noteFilename)\n const note = getNote(slideNotesContent)\n\n const slideLayoutContent = await readXmlFile(zip, layoutFilename)\n const slideLayoutTables = await indexNodes(slideLayoutContent)\n const slideLayoutResFilename = layoutFilename.replace('slideLayouts/slideLayout', 'slideLayouts/_rels/slideLayout') + '.rels'\n const slideLayoutResContent = await readXmlFile(zip, slideLayoutResFilename)\n relationshipArray = slideLayoutResContent['Relationships']['Relationship']\n if (relationshipArray.constructor !== Array) relationshipArray = [relationshipArray]\n\n for (const relationshipArrayItem of relationshipArray) {\n const relType = relationshipArrayItem['attrs']['Type'].replace('http://schemas.openxmlformats.org/officeDocument/2006/relationships/', '')\n let relTarget = relationshipArrayItem['attrs']['Target']\n if (relTarget.indexOf('../') !== -1) relTarget = relTarget.replace('../', 'ppt/')\n else relTarget = 'ppt/slideLayouts/' + relTarget\n\n switch (relationshipArrayItem['attrs']['Type']) {\n case 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster':\n masterFilename = relTarget\n break\n default:\n layoutResObj[relationshipArrayItem['attrs']['Id']] = {\n type: relType,\n target: relTarget,\n }\n }\n }\n\n const slideMasterContent = await readXmlFile(zip, masterFilename)\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 readXmlFile(zip, slideMasterResFilename)\n relationshipArray = slideMasterResContent['Relationships']['Relationship']\n if (relationshipArray.constructor !== Array) relationshipArray = [relationshipArray]\n\n for (const relationshipArrayItem of relationshipArray) {\n const relType = relationshipArrayItem['attrs']['Type'].replace('http://schemas.openxmlformats.org/officeDocument/2006/relationships/', '')\n let relTarget = relationshipArrayItem['attrs']['Target']\n if (relTarget.indexOf('../') !== -1) relTarget = relTarget.replace('../', 'ppt/')\n else relTarget = 'ppt/slideMasters/' + relTarget\n\n switch (relationshipArrayItem['attrs']['Type']) {\n case 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme':\n themeFilename = relTarget\n break\n default:\n masterResObj[relationshipArrayItem['attrs']['Id']] = {\n type: relType,\n target: relTarget,\n }\n }\n }\n\n if (themeFilename) {\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 themeResObj[relationshipArrayItem['attrs']['Id']] = {\n 'type': relationshipArrayItem['attrs']['Type'].replace('http://schemas.openxmlformats.org/officeDocument/2006/relationships/', ''),\n 'target': relationshipArrayItem['attrs']['Target'].replace('../', 'ppt/')\n }\n }\n }\n }\n }\n\n const diagramContent = {\n data: null,\n layout: null,\n quickStyle: null,\n colors: null,\n drawing: null\n }\n let digramFileContent = {}\n if (diagramFilename) {\n const diagName = diagramFilename.split('/').pop()\n const diagramResFileName = diagramFilename.replace(diagName, '_rels/' + diagName) + '.rels'\n digramFileContent = await readXmlFile(zip, diagramFilename)\n if (digramFileContent) {\n const digramFileContentObjToStr = JSON.stringify(digramFileContent).replace(/dsp:/g, 'p:')\n digramFileContent = JSON.parse(digramFileContentObjToStr)\n }\n const digramResContent = await readXmlFile(zip, diagramResFileName)\n if (digramResContent) {\n relationshipArray = digramResContent['Relationships']['Relationship']\n if (relationshipArray.constructor !== Array) relationshipArray = [relationshipArray]\n for (const relationshipArrayItem of relationshipArray) {\n diagramResObj[relationshipArrayItem['attrs']['Id']] = {\n 'type': relationshipArrayItem['attrs']['Type'].replace('http://schemas.openxmlformats.org/officeDocument/2006/relationships/', ''),\n 'target': relationshipArrayItem['attrs']['Target'].replace('../', 'ppt/')\n }\n }\n }\n }\n\n if (Object.values(diagramFiles).length > 0) {\n for (const filePath of Object.values(diagramFiles)) {\n const content = await readXmlFile(zip, filePath)\n if (filePath.includes('/data')) diagramContent.data = content\n else if (filePath.includes('/layout')) diagramContent.layout = content\n else if (filePath.includes('/quickStyle')) diagramContent.quickStyle = content\n else if (filePath.includes('/colors')) diagramContent.colors = content\n }\n }\n\n const tableStyles = await readXmlFile(zip, 'ppt/tableStyles.xml')\n\n const slideContent = await readXmlFile(zip, sldFileName)\n const nodes = slideContent['p:sld']['p:cSld']['p:spTree']\n const warpObj = {\n zip,\n slideLayoutContent,\n slideLayoutTables,\n slideMasterContent,\n slideMasterTables,\n slideContent,\n tableStyles,\n slideResObj,\n slideMasterTextStyles,\n layoutResObj,\n masterResObj,\n themeContent,\n themeResObj,\n digramFileContent,\n diagramResObj,\n diagramContent,\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, nodes, 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\n return {\n fill,\n elements,\n layoutElements,\n note,\n transition,\n }\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 let rNodes = getTextByPathList(spNode, ['p:txBody', 'a:p', 'a:r'])\n if (!rNodes) continue\n\n if (rNodes.constructor !== Array) rNodes = [rNodes]\n for (const rNode of rNodes) {\n const t = getTextByPathList(rNode, ['a:t'])\n if (t && typeof t === 'string') text += t\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], nodesSldLayout, 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], nodesSldLayout, 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], nodesSldMaster, 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], nodesSldMaster, warpObj, 'slideMasterBg')\n if (ret) elements.push(ret)\n }\n }\n }\n }\n return elements\n}\n\nfunction indexNodes(content) {\n const keys = Object.keys(content)\n const spTreeNode = content[keys[0]]['p:cSld']['p:spTree']\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] = 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] = targetNode\n }\n }\n\n return { idTable, idxTable, typeTable }\n}\n\nasync function processNodesInSlide(nodeKey, nodeValue, nodes, warpObj, source, groupHierarchy = []) {\n let json\n\n switch (nodeKey) {\n case 'p:sp': // Shape, Text\n json = await processSpNode(nodeValue, nodes, warpObj, source, groupHierarchy)\n break\n case 'p:cxnSp': // Shape, Text\n json = await processCxnSpNode(nodeValue, nodes, 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 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 const latex = latexFormart(parseOMath(oMath))\n\n const blipFill = getTextByPathList(fallback, ['p:sp', 'p:spPr', 'a:blipFill'])\n const picBase64 = 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 picBase64,\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 = getTextByPathList(xfrmNode, ['attrs', 'flipV']) === '1'\n const isFlipH = getTextByPathList(xfrmNode, ['attrs', 'flipH']) === '1'\n\n let rotate = getTextByPathList(xfrmNode, ['attrs', 'rot']) || 0\n if (rotate) rotate = angleToDegrees(rotate)\n\n // 计算缩放因子\n const ws = cx / chcx\n const hs = 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, node, warpObj, source, currentGroupHierarchy)\n if (ret) elements.push(ret)\n }\n }\n else {\n const ret = await processNodesInSlide(nodeKey, node[nodeKey], node, warpObj, source, currentGroupHierarchy)\n if (ret) elements.push(ret)\n }\n }\n\n const processedElements = elements.map(element => ({\n ...element,\n left: numberToFixed((element.left - chx) * ws),\n top: numberToFixed((element.top - chy) * hs),\n width: numberToFixed(element.width * ws),\n height: numberToFixed(element.height * hs),\n ...(element.type === 'group' && element.elements ? {\n elements: processNestedGroupElements(element.elements, ws, hs)\n } : {})\n }))\n\n function processNestedGroupElements(elements, ws, hs, depth = 0) {\n if (depth > 10) return elements\n\n return elements.map(element => {\n const processed = {\n ...element,\n width: numberToFixed(element.width * ws),\n height: numberToFixed(element.height * hs),\n }\n if (element.type === 'group' && element.elements) {\n processed.elements = processNestedGroupElements(element.elements, ws, hs, 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, pNode, warpObj, source, groupHierarchy = []) {\n const name = getTextByPathList(node, ['p:nvSpPr', 'p: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']['typeTable'][type]\n 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 (txBoxVal === '1') 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\n if (!type) {\n if (source === 'diagramBg') type = 'diagram'\n else type = 'obj'\n }\n\n return await genShape(node, pNode, slideLayoutSpNode, slideMasterSpNode, name, type, order, warpObj, source, groupHierarchy)\n}\n\nasync function processCxnSpNode(node, pNode, warpObj, source) {\n const name = node['p:nvCxnSpPr']['p:cNvPr']['attrs']['name']\n const type = (node['p:nvCxnSpPr']['p:nvPr']['p:ph'] === undefined) ? undefined : node['p:nvSpPr']['p:nvPr']['p:ph']['attrs']['type']\n const order = node['attrs']['order']\n\n return await genShape(node, pNode, undefined, undefined, name, type, order, warpObj, source)\n}\n\nasync function genShape(node, pNode, slideLayoutSpNode, slideMasterSpNode, name, type, order, warpObj, source, 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\n const isFlipV = getTextByPathList(slideXfrmNode, ['attrs', 'flipV']) === '1'\n const isFlipH = getTextByPathList(slideXfrmNode, ['attrs', 'flipH']) === '1'\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 } = getBorder(node, type, warpObj)\n const fill = await getShapeFill(node, pNode, undefined, warpObj, source, groupHierarchy) || ''\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 const isVertical = getTextByPathList(node, ['p:txBody', 'a:bodyPr', 'attrs', 'vert']) === 'eaVert'\n const autoFit = getTextAutoFit(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 name,\n order,\n }\n\n if (shadow) data.shadow = shadow\n if (autoFit) data.autoFit = autoFit\n\n const isHasValidText = data.content && hasValidText(data.content)\n\n if (custShapType && type !== 'diagram') {\n const ext = getTextByPathList(slideXfrmNode, ['a:ext', 'attrs'])\n const w = parseInt(ext['cx']) * RATIO_EMUs_Points\n const h = parseInt(ext['cy']) * RATIO_EMUs_Points\n const d = getCustomShapePath(custShapType, w, h)\n if (!isHasValidText) data.content = ''\n\n return {\n ...data,\n type: 'shape',\n shapType: 'custom',\n path: d,\n }\n }\n\n let shapePath = ''\n if (shapType) shapePath = getShapePath(shapType, width, height, node)\n\n if (shapType && (type === 'obj' || !type || shapType !== 'rect')) {\n if (!isHasValidText) data.content = ''\n return {\n ...data,\n type: 'shape',\n shapType,\n path: shapePath,\n keypoints,\n }\n }\n if (shapType && !isHasValidText && (fill || borderWidth)) {\n return {\n ...data,\n type: 'shape',\n content: '',\n shapType,\n path: shapePath,\n keypoints,\n }\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 order = node['attrs']['order']\n \n const rid = node['p:blipFill']['a:blip']['attrs']['r:embed']\n const imgName = resObj[rid]['target']\n const imgFileExt = extractFileExtension(imgName).toLowerCase()\n const zip = warpObj['zip']\n const imgArrayBuffer = await zip.file(imgName).async('arraybuffer')\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 mimeType = getMimeType(imgFileExt)\n const { top, left } = getPosition(xfrmNode, undefined, undefined)\n const { width, height } = getSize(xfrmNode, undefined, undefined)\n const src = `data:${mimeType};base64,${base64ArrayBuffer(imgArrayBuffer)}`\n\n const isFlipV = getTextByPathList(xfrmNode, ['attrs', 'flipV']) === '1'\n const isFlipH = getTextByPathList(xfrmNode, ['attrs', 'flipH']) === '1'\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, videoMimeType, uInt8ArrayVideo, videoBlob\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 uInt8ArrayVideo = await zip.file(videoFile).async('arraybuffer')\n videoMimeType = getMimeType(videoFileExt)\n videoBlob = URL.createObjectURL(new Blob([uInt8ArrayVideo], {\n type: videoMimeType\n }))\n }\n }\n }\n\n const audioNode = getTextByPathList(node, ['p:nvPicPr', 'p:nvPr', 'a:audioFile'])\n let audioRid, audioFile, audioFileExt, uInt8ArrayAudio, audioBlob\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 uInt8ArrayAudio = await zip.file(audioFile).async('arraybuffer')\n audioBlob = URL.createObjectURL(new Blob([uInt8ArrayAudio]))\n }\n }\n\n if (videoNode && !isVdeoLink) {\n return {\n type: 'video',\n top,\n left,\n width, \n height,\n rotate,\n blob: videoBlob,\n order,\n }\n } \n if (videoNode && isVdeoLink) {\n return {\n type: 'video',\n top,\n left,\n width, \n height,\n rotate,\n src: videoFile,\n order,\n }\n }\n if (audioNode) {\n return {\n type: 'audio',\n top,\n left,\n width, \n height,\n rotate,\n blob: audioBlob,\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 let geom = 'rect'\n const prstGeom = getTextByPathList(node, ['p:spPr', 'a:prstGeom', 'attrs', 'prst'])\n const custGeom = getTextByPathList(node, ['p:spPr', 'a:custGeom'])\n\n if (prstGeom) {\n geom = prstGeom\n }\n else if (custGeom) {\n geom = identifyShape(custGeom)\n if (geom !== 'custom') geom = `custom:${geom}`\n }\n\n const { borderColor, borderWidth, borderType, strokeDasharray } = getBorder(node, undefined, warpObj)\n\n const filters = getPicFilters(node['p:blipFill'])\n\n const imageData = {\n type: 'image',\n top,\n left,\n width,\n height,\n rotate,\n src,\n isFlipV,\n isFlipH,\n order,\n rect,\n geom,\n borderColor,\n borderWidth,\n borderType,\n borderStrokeDasharray: strokeDasharray,\n }\n\n if (filters) imageData.filters = filters\n\n return imageData\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: (firstRowAttr && firstRowAttr === '1') ? 1 : 0,\n isFrstColAttr: (firstColAttr && firstColAttr === '1') ? 1 : 0,\n isLstRowAttr: (lastRowAttr && lastRowAttr === '1') ? 1 : 0,\n isLstColAttr: (lastColAttr && lastColAttr === '1') ? 1 : 0,\n isBandRowAttr: (bandRowAttr && bandRowAttr === '1') ? 1 : 0,\n isBandColAttr: (bandColAttr && bandColAttr === '1') ? 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.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.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 {}\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 {}\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 dgmDrwSpArray = getTextByPathList(warpObj['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, node, warpObj, 'diagramBg')\n if (el) elements.push(el)\n }\n }\n else if (warpObj.diagramContent && warpObj.diagramContent.data) {\n textList = getSmartArtTextData(warpObj.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}","// ==ClosureCompiler==\n// @output_file_name default.js\n// @compilation_level SIMPLE_OPTIMIZATIONS\n// ==/ClosureCompiler==\n// module.exports = {\n// parse: parse,\n// simplify: simplify,\n// simplifyLostLess: simplifyLostLess,\n// filter: filter,\n// stringify: stringify,\n// toContentString: toContentString,\n// getElementById: getElementById,\n// getElementsByClassName: getElementsByClassName,\n// transformStream: transformStream,\n// };\n\n/**\n * @author: Tobias Nickel\n * @created: 06.04.2015\n * I needed a small xmlparser chat can be used in a worker.\n */\n\n/**\n * @typedef tNode \n * @property {string} tagName \n * @property {object} attributes\n * @property {(tNode|string)[]} children \n **/\n\n/**\n * @typedef TParseOptions\n * @property {number} [pos]\n * @property {string[]} [noChildNodes]\n * @property {boolean} [setPos]\n * @property {boolean} [keepComments] \n * @property {boolean} [keepWhitespace]\n * @property {boolean} [simplify]\n * @property {(a: tNode, b: tNode) => boolean} [filter]\n */\n\n/**\n * parseXML / html into a DOM Object. with no validation and some failur tolerance\n * @param {string} S your XML to parse\n * @param {TParseOptions} [options] all other options:\n * @return {(tNode | string)[]}\n */\nfunction parse(S, options) {\n \"txml\";\n options = options || {};\n\n var pos = options.pos || 0;\n var keepComments = !!options.keepComments;\n var keepWhitespace = !!options.keepWhitespace;\n\n var openBracket = \"<\";\n var openBracketCC = \"<\".charCodeAt(0);\n var closeBracket = \">\";\n var closeBracketCC = \">\".charCodeAt(0);\n var minusCC = \"-\".charCodeAt(0);\n var slashCC = \"/\".charCodeAt(0);\n var exclamationCC = '!'.charCodeAt(0);\n var singleQuoteCC = \"'\".charCodeAt(0);\n var doubleQuoteCC = '\"'.charCodeAt(0);\n var openCornerBracketCC = '['.charCodeAt(0);\n var closeCornerBracketCC = ']'.charCodeAt(0);\n\n\n /**\n * parsing a list of entries\n */\n function parseChildren(tagName) {\n var children = [];\n while (S[pos]) {\n if (S.charCodeAt(pos) == openBracketCC) {\n if (S.charCodeAt(pos + 1) === slashCC) {\n var closeStart = pos + 2;\n pos = S.indexOf(closeBracket, pos);\n\n var closeTag = S.substring(closeStart, pos);\n if (closeTag.indexOf(tagName) == -1) {\n var parsedText = S.substring(0, pos).split('\\n');\n throw new Error(\n 'Unexpected close tag\\nLine: ' + (parsedText.length - 1) +\n '\\nColumn: ' + (parsedText[parsedText.length - 1].length + 1) +\n '\\nChar: ' + S[pos]\n );\n }\n\n if (pos + 1) pos += 1;\n\n return children;\n } else if (S.charCodeAt(pos + 1) === exclamationCC) {\n if (S.charCodeAt(pos + 2) == minusCC) {\n //comment support\n const startCommentPos = pos;\n while (pos !== -1 && !(S.charCodeAt(pos) === closeBracketCC && S.charCodeAt(pos - 1) == minusCC && S.charCodeAt(pos - 2) == minusCC && pos != -1)) {\n pos = S.indexOf(closeBracket, pos + 1);\n }\n if (pos === -1) {\n pos = S.length;\n }\n if (keepComments) {\n children.push(S.substring(startCommentPos, pos + 1));\n }\n } else if (\n S.charCodeAt(pos + 2) === openCornerBracketCC &&\n S.charCodeAt(pos + 8) === openCornerBracketCC &&\n S.substr(pos + 3, 5).toLowerCase() === 'cdata'\n ) {\n // cdata\n var cdataEndIndex = S.indexOf(']]>', pos);\n if (cdataEndIndex == -1) {\n children.push(S.substr(pos + 9));\n pos = S.length;\n } else {\n children.push(S.substring(pos + 9, cdataEndIndex));\n pos = cdataEndIndex + 3;\n }\n continue;\n } else {\n // doctypesupport\n const startDoctype = pos + 1;\n pos += 2;\n var encapsuled = false;\n while ((S.charCodeAt(pos) !== closeBracketCC || encapsuled === true) && S[pos]) {\n if (S.charCodeAt(pos) === openCornerBracketCC) {\n encapsuled = true;\n } else if (encapsuled === true && S.charCodeAt(pos) === closeCornerBracketCC) {\n encapsuled = false;\n }\n pos++;\n }\n children.push(S.substring(startDoctype, pos));\n }\n pos++;\n continue;\n }\n var node = parseNode();\n children.push(node);\n if (node.tagName[0] === '?') {\n children.push(...node.children);\n node.children = [];\n }\n } else {\n var text = parseText();\n if (keepWhitespace) {\n if (text.length > 0) {\n children.push(text);\n }\n } else {\n var trimmed = text.trim();\n if (trimmed.length > 0) {\n children.push(trimmed);\n }\n }\n pos++;\n }\n }\n return children;\n }\n\n /**\n * returns the text outside of texts until the first '<'\n */\n function parseText() {\n var start = pos;\n pos = S.indexOf(openBracket, pos) - 1;\n if (pos === -2)\n pos = S.length;\n return S.slice(start, pos + 1);\n }\n /**\n * returns text until the first nonAlphabetic letter\n */\n var nameSpacer = '\\r\\n\\t>/= ';\n\n function parseName() {\n var start = pos;\n while (nameSpacer.indexOf(S[pos]) === -1 && S[pos]) {\n pos++;\n }\n return S.slice(start, pos);\n }\n /**\n * is parsing a node, including tagName, Attributes and its children,\n * to parse children it uses the parseChildren again, that makes the parsing recursive\n */\n var NoChildNodes = options.noChildNodes || ['img', 'br', 'input', 'meta', 'link', 'hr'];\n\n function parseNode() {\n pos++;\n const tagName = parseName();\n const attributes = {};\n let children = [];\n\n // parsing attributes\n while (S.charCodeAt(pos) !== closeBracketCC && S[pos]) {\n var c = S.charCodeAt(pos);\n if ((c > 64 && c < 91) || (c > 96 && c < 123)) {\n //if('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.indexOf(S[pos])!==-1 ){\n var name = parseName();\n // search beginning of the string\n var code = S.charCodeAt(pos);\n while (code && code !== singleQuoteCC && code !== doubleQuoteCC && !((code > 64 && code < 91) || (code > 96 && code < 123)) && code !== closeBracketCC) {\n pos++;\n code = S.charCodeAt(pos);\n }\n if (code === singleQuoteCC || code === doubleQuoteCC) {\n var value = parseString();\n if (pos === -1) {\n return {\n tagName,\n attributes,\n children,\n };\n }\n } else {\n value = null;\n pos--;\n }\n attributes[name] = value;\n }\n pos++;\n }\n // optional parsing of children\n if (S.charCodeAt(pos - 1) !== slashCC) {\n if (tagName == \"script\") {\n var start = pos + 1;\n pos = S.indexOf('</script>', pos);\n children = [S.slice(start, pos)];\n pos += 9;\n } else if (tagName == \"style\") {\n var start = pos + 1;\n pos = S.indexOf('</style>', pos);\n children = [S.slice(start, pos)];\n pos += 8;\n } else if (NoChildNodes.indexOf(tagName) === -1) {\n pos++;\n children = parseChildren(tagName);\n } else {\n pos++;\n }\n } else {\n pos++;\n }\n return {\n tagName,\n attributes,\n children,\n };\n }\n\n /**\n * is parsing a string, that starts with a char and with the same usually ' or \"\n */\n\n function parseString() {\n var startChar = S[pos];\n var startpos = pos + 1;\n pos = S.indexOf(startChar, startpos);\n return S.slice(startpos, pos);\n }\n\n /**\n *\n */\n function findElements() {\n var r = new RegExp('\\\\s' + options.attrName + '\\\\s*=[\\'\"]' + options.attrValue + '[\\'\"]').exec(S);\n if (r) {\n return r.index;\n } else {\n return -1;\n }\n }\n\n var out = null;\n if (options.attrValue !== undefined) {\n options.attrName = options.attrName || 'id';\n var out = [];\n\n while ((pos = findElements()) !== -1) {\n pos = S.lastIndexOf('<', pos);\n if (pos !== -1) {\n out.push(parseNode());\n }\n S = S.substr(pos);\n pos = 0;\n }\n } else if (options.parseNode) {\n out = parseNode();\n } else {\n out = parseChildren('');\n }\n\n if (options.filter) {\n out = filter(out, options.filter);\n }\n\n if (options.simplify) {\n return simplify(Array.isArray(out) ? out : [out]);\n }\n\n if (options.setPos) {\n out.pos = pos;\n }\n\n return out;\n}\n\n/**\n * transform the DomObject to an object that is like the object of PHP`s simple_xmp_load_*() methods.\n * this format helps you to write that is more likely to keep your program working, even if there a small changes in the XML schema.\n * be aware, that it is not possible to reproduce the original xml from a simplified version, because the order of elements is not saved.\n * therefore your program will be more flexible and easier to read.\n *\n * @param {tNode[]} children the childrenList\n */\nfunction simplify(children) {\n var out = {};\n if (!children.length) {\n return '';\n }\n\n if (children.length === 1 && typeof children[0] == 'string') {\n return children[0];\n }\n // map each object\n children.forEach(function(child) {\n if (typeof child !== 'object') {\n return;\n }\n if (!out[child.tagName])\n out[child.tagName] = [];\n var kids = simplify(child.children);\n out[child.tagName].push(kids);\n if (Object.keys(child.attributes).length && typeof kids !== 'string') {\n kids._attributes = child.attributes;\n }\n });\n\n for (var i in out) {\n if (out[i].length == 1) {\n out[i] = out[i][0];\n }\n }\n\n return out;\n}\n\n/**\n * similar to simplify, but lost less\n *\n * @param {tNode[]} children the childrenList\n */\nfunction simplifyLostLess(children, parentAttributes = {}) {\n var out = {};\n if (!children.length) {\n return out;\n }\n\n if (children.length === 1 && typeof children[0] == 'string') {\n return Object.keys(parentAttributes).length ? {\n _attributes: parentAttributes,\n value: children[0]\n } : children[0];\n }\n // map each object\n children.forEach(function(child) {\n if (typeof child !== 'object') {\n return;\n }\n if (!out[child.tagName])\n out[child.tagName] = [];\n var kids = simplifyLostLess(child.children || [], child.attributes);\n out[child.tagName].push(kids);\n if (Object.keys(child.attributes).length) {\n kids._attributes = child.attributes;\n }\n });\n\n return out;\n}\n/**\n * behaves the same way as Array.filter, if the filter method return true, the element is in the resultList\n * @params children{Array} the children of a node\n * @param f{function} the filter method\n */\nfunction filter(children, f, dept = 0, path = '') {\n var out = [];\n children.forEach(function(child, i) {\n if (typeof(child) === 'object' && f(child, i, dept, path)) out.push(child);\n if (child.children) {\n var kids = filter(child.children, f, dept + 1, (path ? path + '.' : '') + i + '.' + child.tagName);\n out = out.concat(kids);\n }\n });\n return out;\n}\n/**\n * stringify a previously parsed string object.\n * this is useful,\n * 1. to remove whitespace\n * 2. to recreate xml data, with some changed data.\n * @param {tNode} O the object to Stringify\n */\nfunction stringify(O) {\n var out = '';\n\n function writeChildren(O) {\n if (O) {\n for (var i = 0; i < O.length; i++) {\n if (typeof O[i] == 'string') {\n out += O[i].trim();\n } else {\n writeNode(O[i]);\n }\n }\n }\n }\n\n function writeNode(N) {\n out += \"<\" + N.tagName;\n for (var i in N.attributes) {\n if (N.attributes[i] === null) {\n out += ' ' + i;\n } else if (N.attributes[i].indexOf('\"') === -1) {\n out += ' ' + i + '=\"' + N.attributes[i].trim() + '\"';\n } else {\n out += ' ' + i + \"='\" + N.attributes[i].trim() + \"'\";\n }\n }\n if (N.tagName[0] === '?') {\n out += '?>';\n return;\n }\n out += '>';\n writeChildren(N.children);\n out += '</' + N.tagName + '>';\n }\n writeChildren(O);\n\n return out;\n}\n\n/**\n * use this method to read the text content, of some node.\n * It is great if you have mixed content like:\n * this text has some <b>big</b> text and a <a href=''>link</a>\n * @return {string}\n */\nfunction toContentString(tDom) {\n if (Array.isArray(tDom)) {\n var out = '';\n tDom.forEach(function(e) {\n out += ' ' + toContentString(e);\n out = out.trim();\n });\n return out;\n } else if (typeof tDom === 'object') {\n return toContentString(tDom.children)\n } else {\n return ' ' + tDom;\n }\n}\nfunction getElementById(S, id, simplified) {\n var out = parse(S, {\n attrValue: id\n });\n return simplified ? tXml.simplify(out) : out[0];\n}\nfunction getElementsByClassName(S, classname, simplified) {\n const out = parse(S, {\n attrName: 'class',\n attrValue: '[a-zA-Z0-9- ]*' + classname + '[a-zA-Z0-9- ]*'\n });\n return simplified ? tXml.simplify(out) : out;\n}\n\nexport { filter, getElementById, getElementsByClassName, parse, simplify, simplifyLostLess, stringify, toContentString };\n","import { parse as parseXml } from 'txml/txml'\nimport type { AnyRecord, XmlNode } from './types'\n\nlet cust_attr_order = 0\n\ntype TxmlChild = {\n tagName?: string\n children?: Array<unknown>\n attributes?: AnyRecord\n}\n\nexport function simplifyLostLess(children: Array<unknown>, parentAttributes: AnyRecord = {}): XmlNode {\n const out: AnyRecord = {}\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 (typeof child !== 'object' || child === null) return\n const typed = child as TxmlChild\n if (typed.tagName === '?xml') continue\n\n if (!typed.tagName) continue\n if (!out[typed.tagName]) out[typed.tagName] = []\n\n const kids = simplifyLostLess(typed.children || [], typed.attributes || {})\n \n if (typeof kids === 'object' && kids !== null) {\n const kidsObj = kids as AnyRecord\n if (!kidsObj.attrs) kidsObj.attrs = { order: cust_attr_order++ }\n else (kidsObj.attrs as AnyRecord).order = cust_attr_order++\n }\n if (Object.keys(typed.attributes || {}).length) {\n const kidsObj = kids as AnyRecord\n kidsObj.attrs = { ...(kidsObj.attrs as AnyRecord), ...(typed.attributes || {}) }\n }\n out[typed.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: AnyRecord, filename: string): Promise<XmlNode | null> {\n try {\n const data = await (zip.file(filename) as AnyRecord).async('string')\n return simplifyLostLess(parseXml(data) as Array<unknown>)\n }\n catch {\n return null\n }\n}\n","// This file is autogenerated. It's used to publish ESM to npm.\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\nvar trimLeft = /^\\s+/;\nvar trimRight = /\\s+$/;\nfunction tinycolor(color, opts) {\n color = color ? color : \"\";\n opts = opts || {};\n\n // If input is already a tinycolor, return itself\n if (color instanceof tinycolor) {\n return color;\n }\n // If we are called as a function, call using new instead\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n var rgb = inputToRGB(color);\n this._originalInput = color, this._r = rgb.r, this._g = rgb.g, this._b = rgb.b, this._a = rgb.a, this._roundA = Math.round(100 * this._a) / 100, this._format = opts.format || rgb.format;\n this._gradientType = opts.gradientType;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this._r < 1) this._r = Math.round(this._r);\n if (this._g < 1) this._g = Math.round(this._g);\n if (this._b < 1) this._b = Math.round(this._b);\n this._ok = rgb.ok;\n}\ntinycolor.prototype = {\n isDark: function isDark() {\n return this.getBrightness() < 128;\n },\n isLight: function isLight() {\n return !this.isDark();\n },\n isValid: function isValid() {\n return this._ok;\n },\n getOriginalInput: function getOriginalInput() {\n return this._originalInput;\n },\n getFormat: function getFormat() {\n return this._format;\n },\n getAlpha: function getAlpha() {\n return this._a;\n },\n getBrightness: function getBrightness() {\n //http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n },\n getLuminance: function getLuminance() {\n //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var RsRGB, GsRGB, BsRGB, R, G, B;\n RsRGB = rgb.r / 255;\n GsRGB = rgb.g / 255;\n BsRGB = rgb.b / 255;\n if (RsRGB <= 0.03928) R = RsRGB / 12.92;else R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n if (GsRGB <= 0.03928) G = GsRGB / 12.92;else G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n if (BsRGB <= 0.03928) B = BsRGB / 12.92;else B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n },\n setAlpha: function setAlpha(value) {\n this._a = boundAlpha(value);\n this._roundA = Math.round(100 * this._a) / 100;\n return this;\n },\n toHsv: function toHsv() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return {\n h: hsv.h * 360,\n s: hsv.s,\n v: hsv.v,\n a: this._a\n };\n },\n toHsvString: function toHsvString() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = Math.round(hsv.h * 360),\n s = Math.round(hsv.s * 100),\n v = Math.round(hsv.v * 100);\n return this._a == 1 ? \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" : \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \" + this._roundA + \")\";\n },\n toHsl: function toHsl() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return {\n h: hsl.h * 360,\n s: hsl.s,\n l: hsl.l,\n a: this._a\n };\n },\n toHslString: function toHslString() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = Math.round(hsl.h * 360),\n s = Math.round(hsl.s * 100),\n l = Math.round(hsl.l * 100);\n return this._a == 1 ? \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" : \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \" + this._roundA + \")\";\n },\n toHex: function toHex(allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function toHexString(allow3Char) {\n return \"#\" + this.toHex(allow3Char);\n },\n toHex8: function toHex8(allow4Char) {\n return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n },\n toHex8String: function toHex8String(allow4Char) {\n return \"#\" + this.toHex8(allow4Char);\n },\n toRgb: function toRgb() {\n return {\n r: Math.round(this._r),\n g: Math.round(this._g),\n b: Math.round(this._b),\n a: this._a\n };\n },\n toRgbString: function toRgbString() {\n return this._a == 1 ? \"rgb(\" + Math.round(this._r) + \", \" + Math.round(this._g) + \", \" + Math.round(this._b) + \")\" : \"rgba(\" + Math.round(this._r) + \", \" + Math.round(this._g) + \", \" + Math.round(this._b) + \", \" + this._roundA + \")\";\n },\n toPercentageRgb: function toPercentageRgb() {\n return {\n r: Math.round(bound01(this._r, 255) * 100) + \"%\",\n g: Math.round(bound01(this._g, 255) * 100) + \"%\",\n b: Math.round(bound01(this._b, 255) * 100) + \"%\",\n a: this._a\n };\n },\n toPercentageRgbString: function toPercentageRgbString() {\n return this._a == 1 ? \"rgb(\" + Math.round(bound01(this._r, 255) * 100) + \"%, \" + Math.round(bound01(this._g, 255) * 100) + \"%, \" + Math.round(bound01(this._b, 255) * 100) + \"%)\" : \"rgba(\" + Math.round(bound01(this._r, 255) * 100) + \"%, \" + Math.round(bound01(this._g, 255) * 100) + \"%, \" + Math.round(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n },\n toName: function toName() {\n if (this._a === 0) {\n return \"transparent\";\n }\n if (this._a < 1) {\n return false;\n }\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function toFilter(secondColor) {\n var hex8String = \"#\" + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = \"#\" + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n }\n return \"progid:DXImageTransform.Microsoft.gradient(\" + gradientType + \"startColorstr=\" + hex8String + \",endColorstr=\" + secondHex8String + \")\";\n },\n toString: function toString(format) {\n var formatSet = !!format;\n format = format || this._format;\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === \"name\" && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"hex4\") {\n formattedString = this.toHex8String(true);\n }\n if (format === \"hex8\") {\n formattedString = this.toHex8String();\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n return formattedString || this.toHexString();\n },\n clone: function clone() {\n return tinycolor(this.toString());\n },\n _applyModification: function _applyModification(fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function lighten() {\n return this._applyModification(_lighten, arguments);\n },\n brighten: function brighten() {\n return this._applyModification(_brighten, arguments);\n },\n darken: function darken() {\n return this._applyModification(_darken, arguments);\n },\n desaturate: function desaturate() {\n return this._applyModification(_desaturate, arguments);\n },\n saturate: function saturate() {\n return this._applyModification(_saturate, arguments);\n },\n greyscale: function greyscale() {\n return this._applyModification(_greyscale, arguments);\n },\n spin: function spin() {\n return this._applyModification(_spin, arguments);\n },\n _applyCombination: function _applyCombination(fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function analogous() {\n return this._applyCombination(_analogous, arguments);\n },\n complement: function complement() {\n return this._applyCombination(_complement, arguments);\n },\n monochromatic: function monochromatic() {\n return this._applyCombination(_monochromatic, arguments);\n },\n splitcomplement: function splitcomplement() {\n return this._applyCombination(_splitcomplement, arguments);\n },\n // Disabled until https://github.com/bgrins/TinyColor/issues/254\n // polyad: function (number) {\n // return this._applyCombination(polyad, [number]);\n // },\n triad: function triad() {\n return this._applyCombination(polyad, [3]);\n },\n tetrad: function tetrad() {\n return this._applyCombination(polyad, [4]);\n }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function (color, opts) {\n if (_typeof(color) == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n } else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n// \"red\"\n// \"#f00\" or \"f00\"\n// \"#ff0000\" or \"ff0000\"\n// \"#ff000000\" or \"ff000000\"\n// \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n// \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n// \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n// \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n// \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n// \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n// \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n var rgb = {\n r: 0,\n g: 0,\n b: 0\n };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n if (_typeof(color) == \"object\") {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = \"hsv\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = \"hsl\";\n }\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n a = boundAlpha(a);\n return {\n ok: ok,\n format: color.format || format,\n r: Math.min(255, Math.max(rgb.r, 0)),\n g: Math.min(255, Math.max(rgb.g, 0)),\n b: Math.min(255, Math.max(rgb.b, 0)),\n a: a\n };\n}\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// <http://www.w3.org/TR/css3-color/>\n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255\n };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h,\n s,\n l = (max + min) / 2;\n if (max == min) {\n h = s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n l: l\n };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n var r, g, b;\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h,\n s,\n v = max;\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n if (max == min) {\n h = 0; // achromatic\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n v: v\n };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n var i = Math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];\n\n // Return a 3 character hex if possible\n if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16)), pad2(convertDecimalToHex(a))];\n\n // Return a 4 character hex if possible\n if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n var hex = [pad2(convertDecimalToHex(a)), pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];\n return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) return false;\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\ntinycolor.random = function () {\n return tinycolor.fromRatio({\n r: Math.random(),\n g: Math.random(),\n b: Math.random()\n });\n};\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>\n\nfunction _desaturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\nfunction _saturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\nfunction _greyscale(color) {\n return tinycolor(color).desaturate(100);\n}\nfunction _lighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\nfunction _brighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var rgb = tinycolor(color).toRgb();\n rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));\n rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));\n rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));\n return tinycolor(rgb);\n}\nfunction _darken(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction _spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>\n\nfunction _complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n}\nfunction polyad(color, number) {\n if (isNaN(number) || number <= 0) {\n throw new Error(\"Argument to polyad must be a positive number\");\n }\n var hsl = tinycolor(color).toHsl();\n var result = [tinycolor(color)];\n var step = 360 / number;\n for (var i = 1; i < number; i++) {\n result.push(tinycolor({\n h: (hsl.h + i * step) % 360,\n s: hsl.s,\n l: hsl.l\n }));\n }\n return result;\n}\nfunction _splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [tinycolor(color), tinycolor({\n h: (h + 72) % 360,\n s: hsl.s,\n l: hsl.l\n }), tinycolor({\n h: (h + 216) % 360,\n s: hsl.s,\n l: hsl.l\n })];\n}\nfunction _analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results;) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n}\nfunction _monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h,\n s = hsv.s,\n v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n while (results--) {\n ret.push(tinycolor({\n h: h,\n s: s,\n v: v\n }));\n v = (v + modification) % 1;\n }\n return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function (color1, color2, amount) {\n amount = amount === 0 ? 0 : amount || 50;\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n var p = amount / 100;\n var rgba = {\n r: (rgb2.r - rgb1.r) * p + rgb1.r,\n g: (rgb2.g - rgb1.g) * p + rgb1.g,\n b: (rgb2.b - rgb1.b) * p + rgb1.b,\n a: (rgb2.a - rgb1.a) * p + rgb1.a\n };\n return tinycolor(rgba);\n};\n\n// Readability Functions\n// ---------------------\n// <http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef (WCAG Version 2)\n\n// `contrast`\n// Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)\ntinycolor.readability = function (color1, color2) {\n var c1 = tinycolor(color1);\n var c2 = tinycolor(color2);\n return (Math.max(c1.getLuminance(), c2.getLuminance()) + 0.05) / (Math.min(c1.getLuminance(), c2.getLuminance()) + 0.05);\n};\n\n// `isReadable`\n// Ensure that foreground and background color combinations meet WCAG2 guidelines.\n// The third argument is an optional Object.\n// the 'level' property states 'AA' or 'AAA' - if missing or invalid, it defaults to 'AA';\n// the 'size' property states 'large' or 'small' - if missing or invalid, it defaults to 'small'.\n// If the entire object is absent, isReadable defaults to {level:\"AA\",size:\"small\"}.\n\n// *Example*\n// tinycolor.isReadable(\"#000\", \"#111\") => false\n// tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function (color1, color2, wcag2) {\n var readability = tinycolor.readability(color1, color2);\n var wcag2Parms, out;\n out = false;\n wcag2Parms = validateWCAG2Parms(wcag2);\n switch (wcag2Parms.level + wcag2Parms.size) {\n case \"AAsmall\":\n case \"AAAlarge\":\n out = readability >= 4.5;\n break;\n case \"AAlarge\":\n out = readability >= 3;\n break;\n case \"AAAsmall\":\n out = readability >= 7;\n break;\n }\n return out;\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString(); // \"#ffffff\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function (baseColor, colorList, args) {\n var bestColor = null;\n var bestScore = 0;\n var readability;\n var includeFallbackColors, level, size;\n args = args || {};\n includeFallbackColors = args.includeFallbackColors;\n level = args.level;\n size = args.size;\n for (var i = 0; i < colorList.length; i++) {\n readability = tinycolor.readability(baseColor, colorList[i]);\n if (readability > bestScore) {\n bestScore = readability;\n bestColor = tinycolor(colorList[i]);\n }\n }\n if (tinycolor.isReadable(baseColor, bestColor, {\n level: level,\n size: size\n }) || !includeFallbackColors) {\n return bestColor;\n } else {\n args.includeFallbackColors = false;\n return tinycolor.mostReadable(baseColor, [\"#fff\", \"#000\"], args);\n }\n};\n\n// Big List of Colors\n// ------------------\n// <https://www.w3.org/TR/css-color-4/#named-colors>\nvar names = tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"663399\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n var flipped = {};\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n a = parseFloat(a);\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n if (isOnePointZero(n)) n = \"100%\";\n var processPercent = isPercentage(n);\n n = Math.min(max, Math.max(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if (Math.abs(n - max) < 0.000001) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return n % max / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n return Math.min(1, Math.max(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\nfunction isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf(\".\") != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n return typeof n === \"string\" && n.indexOf(\"%\") != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n return c.length == 1 ? \"0\" + c : \"\" + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n if (n <= 1) {\n n = n * 100 + \"%\";\n }\n return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n}\nvar matchers = function () {\n // <http://www.w3.org/TR/css3-values/#integers>\n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n // <http://www.w3.org/TR/css3-values/#number-value>\n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n return {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n };\n}();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing. Take in a number of formats, and output an object\n// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n color = color.replace(trimLeft, \"\").replace(trimRight, \"\").toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n } else if (color == \"transparent\") {\n return {\n r: 0,\n g: 0,\n b: 0,\n a: 0,\n format: \"name\"\n };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if (match = matchers.rgb.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3]\n };\n }\n if (match = matchers.rgba.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsl.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3]\n };\n }\n if (match = matchers.hsla.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsv.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3]\n };\n }\n if (match = matchers.hsva.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hex8.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex6.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n if (match = matchers.hex4.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n a: convertHexToDecimal(match[4] + \"\" + match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex3.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n return false;\n}\nfunction validateWCAG2Parms(parms) {\n // return valid WCAG2 parms for isReadable.\n // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n var level, size;\n parms = parms || {\n level: \"AA\",\n size: \"small\"\n };\n level = (parms.level || \"AA\").toUpperCase();\n size = (parms.size || \"small\").toLowerCase();\n if (level !== \"AA\" && level !== \"AAA\") {\n level = \"AA\";\n }\n if (size !== \"small\" && size !== \"large\") {\n size = \"small\";\n }\n return {\n level: level,\n size: size\n };\n}\n\nexport { tinycolor as default };\n","import type { XmlNode } from './types'\n\nexport function base64ArrayBuffer(arrayBuffer: ArrayBuffer): string {\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: string): string {\n return filename.substr((~-filename.lastIndexOf('.') >>> 0) + 2)\n}\n\nexport function eachElement<T>(\n node: XmlNode,\n func: (value: XmlNode, index: number) => T\n): string {\n if (!node) return ''\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: XmlNode, path: Array<string>): XmlNode {\n let current: XmlNode = node\n if (!current) return current\n\n for (const key of path) {\n if (typeof current !== 'object' || current === null || Array.isArray(current)) {\n return undefined\n }\n current = (current as Record<string, XmlNode>)[key]\n if (!current) return current\n }\n\n return current\n}\n\nexport function angleToDegrees(angle?: number | string | null): number {\n if (!angle) return 0\n return Math.round(Number(angle) / 60000)\n}\n\nexport function escapeHtml(text: string): string {\n const map: Record<string, string> = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n }\n return text.replace(/[&<>\"']/g, m => map[m] || m)\n}\n\nexport function getMimeType(imgFileExt: string): string {\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: any) {\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-Z0-9-]+\\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\\/($|[a-zA-Z0-9.,?'\\\\+&%$#=~_-]+))*$/\n return urlRegex.test(vdoFile)\n}\n\nexport function toHex(n: any) {\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: any) {\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: any, fractionDigits: any = 4) {\n return parseFloat(num.toFixed(fractionDigits))\n}\n","import { getTextByPathList } from './utils'\nimport type { AnyRecord } from './types'\n\nexport function getSchemeColorFromTheme(schemeClr: string, warpObj: AnyRecord, clrMap?: AnyRecord, phClr?: string): string | undefined {\n let color\n let slideLayoutClrOvride\n if (clrMap) slideLayoutClrOvride = clrMap\n else {\n let sldClrMapOvr = getTextByPathList(warpObj['slideContent'] as AnyRecord, ['p:sld', 'p:clrMapOvr', 'a:overrideClrMapping', 'attrs'])\n if (sldClrMapOvr) slideLayoutClrOvride = sldClrMapOvr\n else {\n sldClrMapOvr = getTextByPathList(warpObj['slideLayoutContent'] as AnyRecord, ['p:sldLayout', 'p:clrMapOvr', 'a:overrideClrMapping', 'attrs'])\n if (sldClrMapOvr) slideLayoutClrOvride = sldClrMapOvr\n else {\n slideLayoutClrOvride = getTextByPathList(warpObj['slideMasterContent'] as AnyRecord, ['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:' + String((slideLayoutClrOvride as AnyRecord)[schmClrName])\n break\n default:\n break\n }\n }\n else {\n switch (schemeClr) {\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'] as AnyRecord, ['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 ? String(color) : undefined\n}\n","import tinycolor from 'tinycolor2'\nimport { getSchemeColorFromTheme } from './schemeColor'\nimport { getTextByPathList } from './utils'\nimport type { AnyRecord, XmlNode } from './types'\n\ntype BorderResult = {\n borderColor: string\n borderWidth: number\n borderType: string\n strokeDasharray: string\n}\n\nexport function getBorder(node: XmlNode, elType?: string, warpObj: AnyRecord = {} as AnyRecord): BorderResult {\n let lineNode = getTextByPathList(node, ['p:spPr', 'a:ln'])\n if (!lineNode) {\n const lnRefNode = getTextByPathList(node, ['p:style', 'a:lnRef'])\n if (lnRefNode) {\n const lnIdx = getTextByPathList(lnRefNode, ['attrs', 'idx'])\n lineNode = (warpObj['themeContent'] as AnyRecord)?.['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\n let borderWidth = isNoFill ? 0 : (parseInt(String(getTextByPathList(lineNode, ['attrs', 'w']))) / 12700)\n if (isNaN(borderWidth)) {\n if (lineNode) borderWidth = 0\n else if (elType !== 'obj') borderWidth = 0\n else borderWidth = 1\n }\n\n let borderColorNode = getTextByPathList(lineNode, ['a:solidFill', 'a:srgbClr', 'attrs', 'val'])\n let borderColor = (typeof borderColorNode === 'string') ? borderColorNode : undefined\n if (!borderColor) {\n const schemeClrNode = getTextByPathList(lineNode, ['a:solidFill', 'a:schemeClr'])\n const schemeClr = 'a:' + String(getTextByPathList(schemeClrNode, ['attrs', 'val']))\n borderColor = getSchemeColorFromTheme(schemeClr, warpObj)\n }\n\n if (!borderColor) {\n const schemeClrNode = getTextByPathList(node, ['p:style', 'a:lnRef', 'a:schemeClr'])\n const schemeClr = 'a:' + String(getTextByPathList(schemeClrNode, ['attrs', 'val']))\n borderColor = getSchemeColorFromTheme(schemeClr, warpObj)\n\n if (borderColor) {\n let shade = getTextByPathList(schemeClrNode, ['a:shade', 'attrs', 'val'])\n\n if (shade) {\n shade = parseInt(String(shade)) / 100000\n \n const color = tinycolor('#' + borderColor).toHsl()\n borderColor = tinycolor({ h: color.h, s: color.s, l: color.l * shade, a: color.a }).toHex()\n }\n }\n }\n\n if (!borderColor) borderColor = '#000000'\n else borderColor = `#${borderColor}`\n\n const typeNode = getTextByPathList(lineNode, ['a:prstDash', 'attrs', 'val'])\n const type = (typeof typeNode === 'string') ? typeNode : undefined\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 return {\n borderColor,\n borderWidth,\n borderType,\n strokeDasharray,\n }\n}\n","import tinycolor from 'tinycolor2'\n\nexport function hueToRgb(t1: number, t2: number, hue: number): number {\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: number, sat: number, light: number): { r: number; g: number; b: number } {\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: string, shadeValue: number, isAlpha?: boolean): string {\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: string, tintValue: number, isAlpha?: boolean): string {\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: string, offset: number, isAlpha?: boolean): string {\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: string, multiplier: number, isAlpha?: boolean): string {\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: string, multiplier: number, isAlpha?: boolean): string {\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: string, multiplier: number, isAlpha?: boolean): string {\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: string): string | undefined {\n let hex\n const colorName = ['white', '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 = ['ffffff', '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 findIndx = colorName.indexOf(name)\n if (findIndx !== -1) hex = colorHex[findIndx]\n return hex\n}\n","import tinycolor from 'tinycolor2'\nimport { getSchemeColorFromTheme } from './schemeColor'\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: any) {\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\nexport async function getPicFill(type: any, node: any, warpObj: any) {\n if (!node) return ''\n\n let img\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 imgPath\n\n img = getTextByPathList(warpObj, ['loaded-images', imgPath])\n if (!img) {\n imgPath = escapeHtml(imgPath)\n\n const imgExt = imgPath.split('.').pop()\n if (imgExt === 'xml') return ''\n\n const imgArrayBuffer = await warpObj['zip'].file(imgPath).async('arraybuffer')\n const imgMimeType = getMimeType(imgExt || '')\n img = `data:${imgMimeType};base64,${base64ArrayBuffer(imgArrayBuffer)}`\n\n const loadedImages = warpObj['loaded-images'] || {}\n loadedImages[imgPath] = img\n warpObj['loaded-images'] = loadedImages\n }\n return img\n}\n\nexport function getPicFillOpacity(node: any) {\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: any) {\n if (!node) return null\n\n const aBlipNode = node['a:blip']\n if (!aBlipNode) return null\n\n const filters: Record<string, number> = {}\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(String(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(String(brightAttr)) / 100000\n }\n if (contrastAttr) {\n filters.contrast = parseInt(String(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(String(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(String(tempAttr))\n }\n }\n }\n }\n }\n\n return Object.keys(filters).length > 0 ? filters : null\n}\n\nexport async function getBgPicFill(bgPr: any, sorce: any, warpObj: any) {\n const picBase64 = 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 picBase64,\n opacity,\n }\n}\n\nexport function getGradientFill(node: any, warpObj: any) {\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: any, warpObj: any) {\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: any, phClr: any, slideMasterContent: any, warpObj: any) {\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: any) {\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: any = '#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: any[] = []\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: any = {}\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: any = {}\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, undefined, 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: any[] = []\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: any = {}\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: any = {}\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, undefined, 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: any[] = []\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: any = {}\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: any = {}\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, undefined, 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\nexport async function getShapeFill(node: any, pNode: any, isSvgMode: any, warpObj: any, source: any, groupHierarchy: any = []) {\n const fillType = getFillType(getTextByPathList(node, ['p:spPr']))\n let type = 'color'\n let fillValue: any = ''\n if (fillType === 'NO_FILL') {\n return isSvgMode ? 'none' : ''\n } \n else if (fillType === 'SOLID_FILL') {\n const shpFill = node['p:spPr']['a:solidFill']\n fillValue = getSolidFill(shpFill, undefined, undefined, warpObj)\n type = 'color'\n }\n else if (fillType === 'GRADIENT_FILL') {\n const shpFill = node['p:spPr']['a:gradFill']\n fillValue = getGradientFill(shpFill, warpObj)\n type = 'gradient'\n }\n else if (fillType === 'PIC_FILL') {\n const shpFill = node['p:spPr']['a:blipFill']\n const picBase64 = await getPicFill(source, shpFill, warpObj)\n const opacity = getPicFillOpacity(shpFill)\n fillValue = {\n picBase64,\n opacity,\n }\n type = 'image'\n }\n else if (fillType === 'PATTERN_FILL') {\n const shpFill = node['p:spPr']['a:pattFill']\n fillValue = getPatternFill({ 'a:pattFill': shpFill }, warpObj)\n type = 'pattern'\n }\n else if (fillType === 'GROUP_FILL') {\n return findFillInGroupHierarchy(groupHierarchy, warpObj, source)\n }\n if (!fillValue) {\n const clrName = getTextByPathList(node, ['p:style', 'a:fillRef'])\n fillValue = getSolidFill(clrName, undefined, undefined, warpObj)\n type = 'color'\n }\n if (!fillValue && pNode && fillType === 'NO_FILL') {\n return isSvgMode ? 'none' : ''\n }\n\n return {\n type,\n value: fillValue,\n }\n}\n\nasync function findFillInGroupHierarchy(groupHierarchy: any, warpObj: any, source: any) {\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 picBase64 = await getPicFill(source, shpFill, warpObj)\n const opacity = getPicFillOpacity(shpFill)\n if (picBase64) {\n return {\n type: 'image',\n value: {\n picBase64,\n opacity,\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 }\n\n return null\n}\n\nexport function getSolidFill(solidFill: any, clrMap: any, phClr: any, warpObj: any) {\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 { eachElement, getTextByPathList } from './utils'\nimport { applyTint } from './color'\nimport type { AnyRecord, XmlNode } from './types'\n\nfunction extractChartColors(serNode: XmlNode, warpObj: AnyRecord): Array<string | null> {\n let series = serNode as any\n if (series && (series as any).constructor !== Array) series = [series]\n const schemeClrs: Array<string | null> = []\n for (const node of series as AnyRecord[]) {\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'] as AnyRecord, ['a:theme', 'a:themeElements', 'a:clrScheme', `a:${clr}`, 'a:srgbClr', 'attrs', 'val'])\n const tint = Number(getTextByPathList(schemeClr, ['a:tint', 'attrs', 'val'])) / 100000\n if (clr && !isNaN(tint)) {\n clr = applyTint(String(clr), tint)\n }\n }\n else clr = getTextByPathList(node, ['c:spPr', 'a:solidFill', 'a:srgbClr', 'attrs', 'val'])\n\n if (clr) schemeClrs.push('#' + String(clr))\n else schemeClrs.push(null)\n }\n return schemeClrs\n}\n\nfunction extractChartData(serNode: AnyRecord): AnyRecord[] {\n const dataMat: AnyRecord[] = []\n if (!serNode) return dataMat\n\n if (serNode['c:xVal']) {\n let dataRow: number[] = []\n eachElement(serNode['c:xVal']['c:numRef']['c:numCache']['c:pt'], (innerNode) => {\n dataRow.push(parseFloat(String((innerNode as AnyRecord)['c:v'])))\n return ''\n })\n dataMat.push(dataRow)\n dataRow = []\n eachElement(serNode['c:yVal']['c:numRef']['c:numCache']['c:pt'], (innerNode) => {\n dataRow.push(parseFloat(String((innerNode as AnyRecord)['c:v'])))\n return ''\n })\n dataMat.push(dataRow)\n } \n else {\n eachElement(serNode, (innerNode, index) => {\n const dataRow: AnyRecord[] = []\n const colName = getTextByPathList(innerNode, ['c:tx', 'c:strRef', 'c:strCache', 'c:pt', 'c:v']) || index\n\n const rowNames: AnyRecord = {}\n if (getTextByPathList(innerNode, ['c:cat', 'c:strRef', 'c:strCache', 'c:pt'])) {\n eachElement((innerNode as AnyRecord)['c:cat']['c:strRef']['c:strCache']['c:pt'], (innerNode) => {\n rowNames[(innerNode as AnyRecord)['attrs']['idx']] = (innerNode as AnyRecord)['c:v']\n return ''\n })\n } \n else if (getTextByPathList(innerNode, ['c:cat', 'c:numRef', 'c:numCache', 'c:pt'])) {\n eachElement((innerNode as AnyRecord)['c:cat']['c:numRef']['c:numCache']['c:pt'], (innerNode) => {\n rowNames[(innerNode as AnyRecord)['attrs']['idx']] = (innerNode as AnyRecord)['c:v']\n return ''\n })\n }\n\n if (getTextByPathList(innerNode, ['c:val', 'c:numRef', 'c:numCache', 'c:pt'])) {\n eachElement((innerNode as AnyRecord)['c:val']['c:numRef']['c:numCache']['c:pt'], (innerNode) => {\n dataRow.push({\n x: (innerNode as AnyRecord)['attrs']['idx'],\n y: parseFloat(String((innerNode as AnyRecord)['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\n return dataMat\n}\n\nexport function getChartInfo(plotArea: AnyRecord, warpObj: AnyRecord): AnyRecord | null {\n let chart = null\n for (const key in plotArea) {\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: extractChartData(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: extractChartData(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","import { getTextByPathList } from './utils'\nimport type { AnyRecord, XmlNode } from './types'\n\nexport function getHorizontalAlign(node: XmlNode, pNode: XmlNode, type: string, warpObj: AnyRecord): string {\n let algn = getTextByPathList(node, ['a:pPr', 'attrs', 'algn'])\n if (!algn) algn = getTextByPathList(pNode, ['a:pPr', 'attrs', 'algn'])\n\n if (!algn) {\n if (type === 'title' || type === 'ctrTitle' || type === 'subTitle') {\n let lvlIdx = 1\n const lvlNode = getTextByPathList(pNode, ['a:pPr', 'attrs', 'lvl'])\n if (lvlNode) {\n lvlIdx = parseInt(String(lvlNode)) + 1\n }\n const lvlStr = 'a:lvl' + lvlIdx + 'pPr'\n algn = getTextByPathList(warpObj, ['slideLayoutTables', 'typeTable', type, 'p:txBody', 'a:lstStyle', lvlStr, 'attrs', 'algn'])\n if (!algn) algn = getTextByPathList(warpObj, ['slideMasterTables', 'typeTable', type, 'p:txBody', 'a:lstStyle', lvlStr, 'attrs', 'algn'])\n if (!algn) 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 (type === 'body') {\n algn = getTextByPathList(warpObj, ['slideMasterTextStyles', 'p:bodyStyle', 'a:lvl1pPr', 'attrs', 'algn'])\n } \n else {\n algn = getTextByPathList(warpObj, ['slideMasterTables', 'typeTable', type, 'p:txBody', 'a:lstStyle', 'a:lvl1pPr', 'attrs', 'algn'])\n }\n }\n\n let align = 'left'\n const algnValue = (typeof algn === 'string') ? algn : undefined\n if (algnValue) {\n switch (algnValue) {\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 = 'justify'\n break\n default:\n align = 'inherit'\n }\n }\n return align\n}\n\nexport function getVerticalAlign(node: XmlNode, slideLayoutSpNode: XmlNode, slideMasterSpNode: XmlNode): string {\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 const anchorValue = (typeof anchor === 'string') ? anchor : 't'\n return (anchorValue === 'ctr') ? 'mid' : ((anchorValue === 'b') ? 'down' : 'up')\n}\n\ntype AutoFitResult =\n | { type: 'shape' }\n | { type: 'text'; fontScale?: number }\n | null\n\nexport function getTextAutoFit(node: XmlNode, slideLayoutSpNode: XmlNode, slideMasterSpNode: XmlNode): AutoFitResult {\n function checkBodyPr(bodyPr: XmlNode): { result: AutoFitResult } | null {\n if (!bodyPr) return null\n\n const body = bodyPr as AnyRecord\n if (body['a:noAutofit']) return { result: null }\n else if (body['a:spAutoFit']) return { result: { type: 'shape' } }\n else if (body['a:normAutofit']) {\n const fontScale = getTextByPathList(body['a:normAutofit'] as XmlNode, ['attrs', 'fontScale'])\n if (fontScale) {\n const scalePercent = parseInt(String(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\nexport function getParagraphSpacing(pNode: XmlNode): AnyRecord | null {\n if (!pNode) return null\n\n const pPrNode = (pNode as AnyRecord)['a:pPr'] as XmlNode\n if (!pPrNode) return null\n\n const spacing: AnyRecord = {}\n\n const lnSpcNode = (pPrNode as AnyRecord)['a:lnSpc'] as XmlNode\n if (lnSpcNode) {\n const spcPct = getTextByPathList(lnSpcNode, ['a:spcPct', 'attrs', 'val'])\n const spcPts = getTextByPathList(lnSpcNode, ['a:spcPts', 'attrs', 'val'])\n\n if (spcPct) {\n spacing.lineSpacing = parseInt(String(spcPct)) / 1000 / 100\n } \n else if (spcPts) {\n spacing.lineSpacing = parseInt(String(spcPts)) / 100 + 'pt'\n }\n }\n\n const spcBefNode = pPrNode['a:spcBef']\n if (spcBefNode) {\n const spcPct = getTextByPathList(spcBefNode, ['a:spcPct', 'attrs', 'val'])\n const spcPts = getTextByPathList(spcBefNode, ['a:spcPts', 'attrs', 'val'])\n\n if (spcPct) {\n spacing.spaceBefore = parseInt(String(spcPct)) / 1000 + 'em'\n } \n else if (spcPts) {\n spacing.spaceBefore = parseInt(String(spcPts)) / 100 + 'pt'\n }\n }\n\n const spcAftNode = pPrNode['a:spcAft']\n if (spcAftNode) {\n const spcPct = getTextByPathList(spcAftNode, ['a:spcPct', 'attrs', 'val'])\n const spcPts = getTextByPathList(spcAftNode, ['a:spcPts', 'attrs', 'val'])\n\n if (spcPct) {\n spacing.spaceAfter = parseInt(String(spcPct)) / 1000 + 'em'\n } \n else if (spcPts) {\n spacing.spaceAfter = parseInt(String(spcPts)) / 100 + 'pt'\n }\n }\n\n return Object.keys(spacing).length > 0 ? spacing : null\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 { numberToFixed } from './utils'\nimport type { AnyRecord, XmlNode } from './types'\n\ntype Position = { top: number; left: number }\ntype Size = { width: number; height: number }\n\nexport function getPosition(slideSpNode: XmlNode, slideLayoutSpNode: XmlNode, slideMasterSpNode: XmlNode): Position {\n let off: AnyRecord | undefined\n\n if (slideSpNode) off = (slideSpNode as AnyRecord)?.['a:off']?.['attrs'] as AnyRecord\n else if (slideLayoutSpNode) off = (slideLayoutSpNode as AnyRecord)?.['a:off']?.['attrs'] as AnyRecord\n else if (slideMasterSpNode) off = (slideMasterSpNode as AnyRecord)?.['a:off']?.['attrs'] as AnyRecord\n\n if (!off) return { top: 0, left: 0 }\n\n return {\n top: numberToFixed(parseInt(String(off['y'])) * RATIO_EMUs_Points),\n left: numberToFixed(parseInt(String(off['x'])) * RATIO_EMUs_Points),\n }\n}\n\nexport function getSize(slideSpNode: XmlNode, slideLayoutSpNode: XmlNode, slideMasterSpNode: XmlNode): Size {\n let ext: AnyRecord | undefined\n\n if (slideSpNode) ext = (slideSpNode as AnyRecord)?.['a:ext']?.['attrs'] as AnyRecord\n else if (slideLayoutSpNode) ext = (slideLayoutSpNode as AnyRecord)?.['a:ext']?.['attrs'] as AnyRecord\n else if (slideMasterSpNode) ext = (slideMasterSpNode as AnyRecord)?.['a:ext']?.['attrs'] as AnyRecord\n\n if (!ext) return { width: 0, height: 0 }\n\n return {\n width: numberToFixed(parseInt(String(ext['cx'])) * RATIO_EMUs_Points),\n height: numberToFixed(parseInt(String(ext['cy'])) * RATIO_EMUs_Points),\n }\n}\n","import { getSolidFill } from './fill'\nimport { RATIO_EMUs_Points } from './constants'\nimport type { AnyRecord, XmlNode } from './types'\n\ntype ShadowResult = {\n h: number\n v: number\n blur: number | ''\n color: string | undefined\n}\n\nexport function getShadow(node: XmlNode, warpObj: AnyRecord): ShadowResult {\n const chdwClrNode = getSolidFill(node, undefined, undefined, warpObj) as string | undefined\n const outerShdwAttrs = (node as AnyRecord)['attrs'] as AnyRecord\n const dir = outerShdwAttrs['dir'] ? (parseInt(String(outerShdwAttrs['dir'])) / 60000) : 0\n const dist = outerShdwAttrs['dist'] ? parseInt(String(outerShdwAttrs['dist'])) * RATIO_EMUs_Points : 0\n const blurRad = outerShdwAttrs['blurRad'] ? parseInt(String(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}\n","import { getTextByPathList } from './utils'\nimport { getShadow } from './shadow'\nimport { getFillType, getGradientFill, getSolidFill } from './fill'\nimport type { AnyRecord } from './types'\n\nexport function getFontType(node: AnyRecord, type: string, warpObj: AnyRecord, slideLayoutSpNode: AnyRecord, slideMasterSpNode: AnyRecord, slideMasterTextStyles: AnyRecord): string {\n const extractFont = (targetNode: AnyRecord, isDirectRun = false): any => {\n if (!targetNode) return null\n \n let rPr\n if (isDirectRun) rPr = getTextByPathList(targetNode, ['a:rPr']) \n else {\n rPr = getTextByPathList(targetNode, ['p:txBody', 'a:lstStyle', 'a:lvl1pPr', 'a:defRPr'])\n if (!rPr) rPr = getTextByPathList(targetNode, ['p:txBody', 'a:p', 'a:pPr', 'a:defRPr'])\n }\n\n if (!rPr) return null\n\n return getTextByPathList(rPr, ['a:latin', 'attrs', 'typeface']) || getTextByPathList(rPr, ['a:ea', 'attrs', 'typeface'])\n }\n\n let typeface = extractFont(node, true)\n\n if (!typeface) typeface = extractFont(slideLayoutSpNode)\n if (!typeface) typeface = extractFont(slideMasterSpNode)\n\n if (!typeface) {\n let stylePath = []\n if (type === 'title' || type === 'ctrTitle' || type === 'subTitle') {\n stylePath = ['p:titleStyle', 'a:lvl1pPr', 'a:defRPr']\n } \n else if (type === 'body') {\n stylePath = ['p:bodyStyle', 'a:lvl1pPr', 'a:defRPr']\n } \n else {\n stylePath = ['p:otherStyle', 'a:lvl1pPr', 'a:defRPr']\n }\n const masterGlobalRPr = getTextByPathList(slideMasterTextStyles, stylePath)\n if (masterGlobalRPr) {\n typeface = getTextByPathList(masterGlobalRPr, ['a:latin', 'attrs', 'typeface']) || getTextByPathList(masterGlobalRPr, ['a:ea', 'attrs', 'typeface'])\n }\n }\n\n if (!typeface || typeface.startsWith('+')) {\n const fontSchemeNode = getTextByPathList(warpObj['themeContent'] as AnyRecord, ['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 default: \n return String(typeface).replace(/^\\+/, '')\n }\n }\n }\n\n if (type === 'title' || type === 'subTitle' || type === 'ctrTitle') {\n typeface = getTextByPathList(fontSchemeNode, ['a:majorFont', 'a:latin', 'attrs', 'typeface']) || getTextByPathList(fontSchemeNode, ['a:majorFont', 'a:ea', 'attrs', 'typeface'])\n }\n else {\n typeface = getTextByPathList(fontSchemeNode, ['a:minorFont', 'a:latin', 'attrs', 'typeface'])\n }\n }\n\n return typeface ? String(typeface) : ''\n}\n\nexport function getFontColor(node: AnyRecord, pNode: AnyRecord, lstStyle: AnyRecord, pFontStyle: AnyRecord, lvl: number, warpObj: AnyRecord): any {\n const rPrNode = getTextByPathList(node, ['a:rPr'])\n let filTyp, color\n if (rPrNode) {\n filTyp = getFillType(rPrNode)\n if (filTyp === 'SOLID_FILL') {\n const solidFillNode = rPrNode['a:solidFill']\n color = getSolidFill(solidFillNode, undefined, undefined, warpObj)\n }\n if (filTyp === 'GRADIENT_FILL') {\n const gradientFillNode = rPrNode['a:gradFill']\n const gradient = getGradientFill(gradientFillNode, warpObj)\n return gradient\n }\n }\n if (!color && getTextByPathList(lstStyle, ['a:lvl' + lvl + 'pPr', 'a:defRPr'])) {\n const lstStyledefRPr = getTextByPathList(lstStyle, ['a:lvl' + lvl + 'pPr', 'a:defRPr'])\n filTyp = getFillType(lstStyledefRPr)\n if (filTyp === 'SOLID_FILL') {\n const solidFillNode = lstStyledefRPr['a:solidFill']\n color = getSolidFill(solidFillNode, undefined, undefined, warpObj)\n }\n }\n if (!color) {\n const sPstyle = getTextByPathList(pNode, ['p:style', 'a:fontRef'])\n if (sPstyle) color = getSolidFill(sPstyle, undefined, undefined, warpObj)\n if (!color && pFontStyle) color = getSolidFill(pFontStyle, undefined, undefined, warpObj)\n }\n return color || ''\n}\n\nexport function getFontSize(node: AnyRecord, slideLayoutSpNode: AnyRecord, type: string, slideMasterTextStyles: AnyRecord, textBodyNode: AnyRecord, pNode: AnyRecord): string {\n let fontSize: any\n\n if (getTextByPathList(node, ['a:rPr', 'attrs', 'sz'])) fontSize = getTextByPathList(node, ['a:rPr', 'attrs', 'sz']) / 100\n\n if ((isNaN(fontSize) || !fontSize) && pNode) {\n if (getTextByPathList(pNode, ['a:endParaRPr', 'attrs', 'sz'])) {\n fontSize = getTextByPathList(pNode, ['a:endParaRPr', 'attrs', 'sz']) / 100\n }\n }\n\n if ((isNaN(fontSize) || !fontSize) && textBodyNode) {\n const lstStyle = getTextByPathList(textBodyNode, ['a:lstStyle'])\n if (lstStyle) {\n let lvl = 1\n if (pNode) {\n const lvlNode = getTextByPathList(pNode, ['a:pPr', 'attrs', 'lvl'])\n if (lvlNode !== undefined) lvl = parseInt(String(lvlNode)) + 1\n }\n\n const sz = getTextByPathList(lstStyle, [`a:lvl${lvl}pPr`, 'a:defRPr', 'attrs', 'sz'])\n if (sz) fontSize = parseInt(String(sz)) / 100\n }\n }\n\n if ((isNaN(fontSize) || !fontSize)) {\n const sz = getTextByPathList(slideLayoutSpNode, ['p:txBody', 'a:lstStyle', 'a:lvl1pPr', 'a:defRPr', 'attrs', 'sz'])\n if (sz) fontSize = parseInt(String(sz)) / 100\n }\n\n if ((isNaN(fontSize) || !fontSize) && slideLayoutSpNode) {\n let lvl = 1\n if (pNode) {\n const lvlNode = getTextByPathList(pNode, ['a:pPr', 'attrs', 'lvl'])\n if (lvlNode !== undefined) lvl = parseInt(String(lvlNode)) + 1\n }\n const layoutSz = getTextByPathList(slideLayoutSpNode, ['p:txBody', 'a:lstStyle', `a:lvl${lvl}pPr`, 'a:defRPr', 'attrs', 'sz'])\n if (layoutSz) fontSize = parseInt(String(layoutSz)) / 100\n }\n\n if ((isNaN(fontSize) || !fontSize) && pNode) {\n const paraSz = getTextByPathList(pNode, ['a:pPr', 'a:defRPr', 'attrs', 'sz'])\n if (paraSz) fontSize = parseInt(String(paraSz)) / 100\n }\n\n if (isNaN(fontSize) || !fontSize) {\n let sz\n if (type === 'title' || type === 'subTitle' || type === 'ctrTitle') {\n sz = getTextByPathList(slideMasterTextStyles, ['p:titleStyle', 'a:lvl1pPr', 'a:defRPr', 'attrs', 'sz'])\n } \n else if (type === 'body') {\n sz = getTextByPathList(slideMasterTextStyles, ['p:bodyStyle', 'a:lvl1pPr', 'a:defRPr', 'attrs', 'sz'])\n } \n else if (type === 'dt' || type === 'sldNum') {\n sz = '1200'\n } \n else if (!type) {\n sz = getTextByPathList(slideMasterTextStyles, ['p:otherStyle', 'a:lvl1pPr', 'a:defRPr', 'attrs', 'sz'])\n }\n if (sz) fontSize = parseInt(String(sz)) / 100\n }\n\n const baseline = getTextByPathList(node, ['a:rPr', 'attrs', 'baseline'])\n if (baseline && !isNaN(fontSize)) fontSize -= 10\n\n fontSize = (isNaN(fontSize) || !fontSize) ? 18 : fontSize\n\n return fontSize + 'pt'\n}\n\nexport function getFontBold(node: AnyRecord): string {\n return getTextByPathList(node, ['a:rPr', 'attrs', 'b']) === '1' ? 'bold' : ''\n}\n\nexport function getFontItalic(node: AnyRecord): string {\n return getTextByPathList(node, ['a:rPr', 'attrs', 'i']) === '1' ? 'italic' : ''\n}\n\nexport function getFontDecoration(node: AnyRecord): string {\n return getTextByPathList(node, ['a:rPr', 'attrs', 'u']) === 'sng' ? 'underline' : ''\n}\n\nexport function getFontDecorationLine(node: AnyRecord): string {\n return getTextByPathList(node, ['a:rPr', 'attrs', 'strike']) === 'sngStrike' ? 'line-through' : ''\n}\n\nexport function getFontSpace(node: AnyRecord): string {\n const spc = getTextByPathList(node, ['a:rPr', 'attrs', 'spc'])\n return spc ? (parseInt(String(spc)) / 100 + 'pt') : ''\n}\n\nexport function getFontSubscript(node: AnyRecord): string {\n const baseline = getTextByPathList(node, ['a:rPr', 'attrs', 'baseline'])\n if (!baseline) return ''\n return parseInt(String(baseline)) > 0 ? 'super' : 'sub'\n}\n\nexport function getFontShadow(node: AnyRecord, warpObj: AnyRecord): string {\n const txtShadow = getTextByPathList(node, ['a:rPr', 'a:effectLst', 'a:outerShdw'])\n if (txtShadow) {\n const shadow = getShadow(txtShadow, 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 }\n return ''\n}\n","import { getHorizontalAlign, getParagraphSpacing } from './align'\nimport { getTextByPathList } from './utils'\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 genTextBody(textBodyNode: any, spNode: any, slideLayoutSpNode: any, slideMasterSpNode: any, type: any, warpObj: any) {\n if (!textBodyNode) return ''\n\n let text = ''\n\n const pFontStyle = getTextByPathList(spNode, ['p:style', 'a:fontRef'])\n\n const pNode = textBodyNode['a:p']\n const pNodes = pNode.constructor === Array ? pNode : [pNode]\n\n const listTypes: string[] = []\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: any) => item.type = 'br')\n \n if (brNode.length > 1) brNode.shift()\n rNode = rNode.concat(brNode)\n rNode.sort((a: any, b: any) => {\n if (!a.attrs || !b.attrs) return true\n return a.attrs.order - b.attrs.order\n })\n }\n }\n\n const align = getHorizontalAlign(pNode, spNode, type, warpObj)\n const spacing = getParagraphSpacing(pNode)\n\n let styleText = `text-align: ${align};`\n if (spacing) {\n if (spacing.lineSpacing) styleText += `line-height: ${spacing.lineSpacing};`\n if (spacing.spaceBefore) styleText += `margin-top: ${spacing.spaceBefore};`\n if (spacing.spaceAfter) styleText += `margin-bottom: ${spacing.spaceAfter};`\n }\n\n const listType = getListType(pNode)\n const listLevel = getListLevel(pNode)\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 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, warpObj)\n } \n else {\n let prevStyleInfo: any = null\n let accumulatedText = ''\n\n for (const rNodeItem of rNode) {\n const styleInfo = getSpanStyleInfo(rNodeItem, pNode, textBodyNode, pFontStyle, slideLayoutSpNode, slideMasterSpNode, type, 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 += '</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\nexport function getListType(node: any) {\n const pPrNode = node['a:pPr']\n if (!pPrNode) return ''\n\n if (pPrNode['a:buChar']) return 'ul'\n if (pPrNode['a:buAutoNum']) return 'ol'\n \n return ''\n}\nexport function getListLevel(node: any) {\n const pPrNode = node['a:pPr']\n if (!pPrNode) return -1\n\n const lvlNode = getTextByPathList(pPrNode, ['attrs', 'lvl'])\n if (lvlNode !== undefined) return parseInt(String(lvlNode))\n\n return 0\n}\n\nexport function genSpanElement(node: any, pNode: any, textBodyNode: any, pFontStyle: any, slideLayoutSpNode: any, slideMasterSpNode: any, type: any, warpObj: any) {\n const { styleText, text, hasLink, linkURL } = getSpanStyleInfo(node, pNode, textBodyNode, pFontStyle, slideLayoutSpNode, slideMasterSpNode, type, 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: any, pNode: any, textBodyNode: any, pFontStyle: any, slideLayoutSpNode: any, slideMasterSpNode: any, type: any, warpObj: any) {\n const lstStyle = textBodyNode['a:lstStyle']\n const slideMasterTextStyles = warpObj['slideMasterTextStyles']\n\n let lvl = 1\n const pPrNode = pNode['a:pPr']\n const lvlNode = getTextByPathList(pPrNode, ['attrs', 'lvl'])\n if (lvlNode !== undefined) lvl = parseInt(String(lvlNode)) + 1\n\n let text = node['a:t']\n if (typeof text !== 'string') text = getTextByPathList(node, ['a:fld', 'a:t'])\n if (typeof text !== 'string') text = ' '\n\n let styleText = ''\n const fontColor = getFontColor(node, pNode, lstStyle, pFontStyle, lvl, warpObj)\n const fontSize = getFontSize(node, slideLayoutSpNode, type, slideMasterTextStyles, textBodyNode, pNode)\n const fontType = getFontType(node, type, warpObj, slideLayoutSpNode, slideMasterSpNode, slideMasterTextStyles)\n const fontBold = getFontBold(node)\n const fontItalic = getFontItalic(node)\n const fontDecoration = getFontDecoration(node)\n const fontDecorationLine = getFontDecorationLine(node)\n const fontSpace = getFontSpace(node)\n const shadow = getFontShadow(node, warpObj)\n const subscript = getFontSubscript(node)\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: any) => `${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\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: any, cY: any, rX: any, rY: any, stAng: any, endAng: any, isClose: any) {\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: any, w: any, h: any) {\n const pathLstNode = getTextByPathList(custShapType, ['a:pathLst'])\n const pathNodes = normalizeToArray(getTextByPathList(pathLstNode, ['a:path']))\n\n return pathNodes\n .map(pathNode => buildCustomShapeSegment(pathNode, w, h))\n .filter(Boolean)\n .join(' ')\n}\n\nexport function identifyShape(shapeData: any) {\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: any) {\n const commands: any[] = []\n \n const moveToList = normalizeToArray(path['a:moveTo'])\n moveToList.forEach(moveTo => {\n const pt = Array.isArray(moveTo?.['a:pt']) ? moveTo['a:pt'][0] : 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: any) {\n if (!value) return []\n return Array.isArray(value) ? value : [value]\n}\n\nfunction buildCustomShapeSegment(pathNode: any, w: number, h: number) {\n if (!pathNode || typeof pathNode !== 'object') return ''\n\n const maxX = parseInt(pathNode.attrs?.w) || 0\n const maxY = parseInt(pathNode.attrs?.h) || 0\n const scaleX = maxX === 0 ? 0 : w / maxX\n const scaleY = maxY === 0 ? 0 : h / maxY\n const commands = extractPathCommands(pathNode)\n\n if (!commands.length) return ''\n\n return commands\n .map((command: any) => mapCommandToPath(command, scaleX, scaleY))\n .filter(Boolean)\n .join(' ')\n}\n\nfunction mapCommandToPath(command: any, scaleX: number, scaleY: number) {\n switch (command.type) {\n case 'moveTo': {\n const point = command.points?.[0]\n return `M${scaleValue(point?.x, scaleX)},${scaleValue(point?.y, scaleY)}`\n }\n case 'lineTo': {\n const point = command.points?.[0]\n return `L${scaleValue(point?.x, scaleX)},${scaleValue(point?.y, scaleY)}`\n }\n case 'cubicBezTo': {\n if (!Array.isArray(command.points) || command.points.length < 3) return ''\n const [p1, p2, p3] = command.points\n return `C${scaleValue(p1?.x, scaleX)},${scaleValue(p1?.y, scaleY)} ` +\n `${scaleValue(p2?.x, scaleX)},${scaleValue(p2?.y, scaleY)} ` +\n `${scaleValue(p3?.x, scaleX)},${scaleValue(p3?.y, scaleY)}`\n }\n case 'quadBezTo': {\n if (!Array.isArray(command.points) || command.points.length < 2) return ''\n const [p1, p2] = command.points\n return `Q${scaleValue(p1?.x, scaleX)},${scaleValue(p1?.y, scaleY)} ` +\n `${scaleValue(p2?.x, scaleX)},${scaleValue(p2?.y, scaleY)}`\n }\n case 'arcTo': {\n const startAngle = (parseInt(command.stAng) || 0) / 60000\n const sweepAngle = (parseInt(command.swAng) || 0) / 60000\n const endAngle = startAngle + sweepAngle\n const radiusX = scaleValue(command.wR, scaleX)\n const radiusY = scaleValue(command.hR, scaleY)\n return shapeArc(radiusX, radiusY, radiusX, radiusY, startAngle, endAngle, false).trim()\n }\n case 'close':\n return 'z'\n default:\n return ''\n }\n}\n\nfunction scaleValue(value: unknown, scale: number) {\n const numeric = typeof value === 'number' ? value : parseFloat(String(value ?? 0))\n if (!Number.isFinite(numeric) || !Number.isFinite(scale)) return 0\n return numeric * scale\n}\n\nfunction analyzePathCommands(commands: any, pathWidth: any, pathHeight: any) {\n const analysis = {\n lineCount: 0,\n curveCount: 0,\n arcCount: 0,\n isClosed: false,\n vertices: [] as any[],\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: any) => {\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: any, width: any, height: any) {\n const bezierCommands = commands.filter((c: any) => c.type === 'cubicBezTo')\n if (bezierCommands.length !== 4) return false\n\n const endpoints = bezierCommands.map((cmd: any) => cmd.points[2])\n \n const hasTop = endpoints.some((p: any) => Math.abs(p.y) < height * 0.1)\n const hasBottom = endpoints.some((p: any) => Math.abs(p.y - height) < height * 0.1)\n const hasLeft = endpoints.some((p: any) => Math.abs(p.x) < width * 0.1)\n const hasRight = endpoints.some((p: any) => Math.abs(p.x - width) < width * 0.1)\n\n return (hasTop || hasBottom) && (hasLeft || hasRight)\n}\n\nfunction matchShape(analysis: any) {\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: any, width: any, height: any) {\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: any) {\n const threshold = 100\n const unique: any[] = []\n \n vertices.forEach((v: any) => {\n const isDuplicate = unique.some((u: any) => \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: any, _width?: any, _height?: any) {\n if (vertices.length !== 4) return 'custom'\n\n const edges: any[] = []\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: any) {\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: any) {\n const tolerance = 0.1\n const avgLength = edges.reduce((sum: number, e: any) => sum + e.length, 0) / 4\n \n return edges.every((e: any) => Math.abs(e.length - avgLength) / avgLength < tolerance)\n}\n\nfunction isParallelogram(edges: any) {\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: any) {\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: any) {\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","import { getShapeFill, getSolidFill } from './fill'\nimport { getTextByPathList } from './utils'\nimport { getBorder } from './border'\n\nexport function getTableBorders(node: any, warpObj: any) {\n const borders: any = {}\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: any, thisTblStyle: any, cellSource: any, warpObj: any) {\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 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, undefined, false, warpObj, 'slide') as any\n\n if (fill && typeof fill === 'object' && 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 = getSolidFill(rowTxtStyl, undefined, undefined, 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[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[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[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[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: any = {}\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 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: any, i: any, tblStylAttrObj: any, thisTblStyle: any, warpObj: any) {\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 = getSolidFill(rowTxtStyl, undefined, undefined, 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 = getSolidFill(rowTxtStyl, undefined, undefined, 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 = getSolidFill(rowTxtStyl, undefined, undefined, 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 = getSolidFill(rowTxtStyl, undefined, undefined, 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 = getSolidFill(rowTxtStyl, undefined, undefined, 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","import { getTextByPathList } from './utils'\n\nexport function findOMath(obj: any): any[] {\n let results: any[] = []\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: any) => {\n if (Array.isArray(value) || typeof value === 'object') {\n results = results.concat(findOMath(value))\n }\n })\n return results\n}\n\nexport function parseFraction(fraction: any): string {\n const numerator = parseOMath(fraction['m:num'])\n const denominator = parseOMath(fraction['m:den'])\n return `\\\\frac{${numerator}}{${denominator}}`\n}\nexport function parseSuperscript(superscript: any): string {\n const base = parseOMath(superscript['m:e'])\n const sup = parseOMath(superscript['m:sup'])\n return `${base}^{${sup}}`\n}\nexport function parseSubscript(subscript: any): string {\n const base = parseOMath(subscript['m:e'])\n const sub = parseOMath(subscript['m:sub'])\n return `${base}_{${sub}}`\n}\nexport function parseRadical(radical: any): string {\n const degree = parseOMath(radical['m:deg'])\n const expression = parseOMath(radical['m:e'])\n return degree ? `\\\\sqrt[${degree}]{${expression}}` : `\\\\sqrt{${expression}}`\n}\nexport function parseMatrix(matrix: any): string {\n const rows = matrix['m:mr']\n const matrixRows = rows.map((row: any) => {\n return row['m:e'].map((element: any) => parseOMath(element)).join(' & ')\n })\n return `\\\\begin{matrix} ${matrixRows.join(' \\\\\\\\ ')} \\\\end{matrix}`\n}\nexport function parseNary(nary: any): string {\n const op = getTextByPathList(nary, ['m:naryPr', 'm:chr', 'attrs', 'm:val']) || '∫'\n const sub = parseOMath(nary['m:sub'])\n const sup = parseOMath(nary['m:sup'])\n const e = parseOMath(nary['m:e'])\n return `${op}_{${sub}}^{${sup}}{${e}}`\n}\nexport function parseLimit(limit: any, type: any): string {\n const base = parseOMath(limit['m:e'])\n const lim = parseOMath(limit['m:lim'])\n return type === 'low' ? `${base}_{${lim}}` : `${base}^{${lim}}`\n}\nexport function parseDelimiter(delimiter: any): string {\n let left = getTextByPathList(delimiter, ['m:dPr', 'm:begChr', 'attrs', 'm:val'])\n let right = getTextByPathList(delimiter, ['m:dPr', 'm:endChr', 'attrs', 'm:val'])\n if (!left && !right) {\n left = '('\n right = ')'\n }\n if (left && right) {\n left = `\\\\left${left}`\n right = `\\\\right${right}`\n }\n const e = parseOMath(delimiter['m:e'])\n return `${left}${e}${right}`\n}\nexport function parseFunction(func: any): string {\n const name = parseOMath(func['m:fName'])\n const arg = parseOMath(func['m:e'])\n return `\\\\${name}{${arg}}`\n}\nexport function parseGroupChr(groupChr: any): string {\n const chr = getTextByPathList(groupChr, ['m:groupChrPr', 'm:chr', 'attrs', 'm:val'])\n const e = parseOMath(groupChr['m:e'])\n return `${chr}${e}${chr}`\n}\nexport function parseEqArr(eqArr: any): string {\n const equations = eqArr['m:e'].map((eq: any) => parseOMath(eq)).join(' \\\\\\\\ ')\n return `\\\\begin{cases} ${equations} \\\\end{cases}`\n}\nexport function parseBar(bar: any): string {\n const e = parseOMath(bar['m:e'])\n const pos = getTextByPathList(bar, ['m:barPr', 'm:pos', 'attrs', 'm:val'])\n return pos === 'top' ? `\\\\overline{${e}}` : `\\\\underline{${e}}`\n}\nexport function parseAccent(accent: any): string {\n const chr = getTextByPathList(accent, ['m:accPr', 'm:chr', 'attrs', 'm:val']) || '^'\n const e = parseOMath(accent['m:e'])\n switch (chr) {\n case '\\u0301':\n return `\\\\acute{${e}}`\n case '\\u0300':\n return `\\\\grave{${e}}`\n case '\\u0302':\n return `\\\\hat{${e}}`\n case '\\u0303':\n return `\\\\tilde{${e}}`\n case '\\u0304':\n return `\\\\bar{${e}}`\n case '\\u0306':\n return `\\\\breve{${e}}`\n case '\\u0307':\n return `\\\\dot{${e}}`\n case '\\u0308':\n return `\\\\ddot{${e}}`\n case '\\u030A':\n return `\\\\mathring{${e}}`\n case '\\u030B':\n return `\\\\H{${e}}`\n case '\\u030C':\n return `\\\\check{${e}}`\n case '\\u0327':\n return `\\\\c{${e}}`\n default:\n return `\\\\${chr}{${e}}`\n }\n}\nexport function parseBox(box: any): string {\n const e = parseOMath(box['m:e'])\n return `\\\\boxed{${e}}`\n}\n\n\nexport function parseOMath(oMath: any): string {\n if (!oMath) return ''\n\n if (Array.isArray(oMath)) {\n return oMath.map((item: any) => parseOMath(item)).join('')\n }\n\n const oMathList: any[] = []\n const keys = Object.keys(oMath)\n for (const key of keys) {\n if (Array.isArray(oMath[key])) {\n oMathList.push(...oMath[key].map((item: any) => ({ key, value: item })))\n }\n else oMathList.push({ key, value: oMath[key] })\n }\n\n oMathList.sort((a: any, b: any) => {\n let oA = 0\n if (a.key === 'm:r' && a.value && a.value['a:rPr']) oA = a.value['a:rPr']['attrs']['order']\n else if (a.value[`${a.key}Pr`] && a.value[`${a.key}Pr`]['m:ctrlPr'] && a.value[`${a.key}Pr`]['m:ctrlPr']['a:rPr']) {\n oA = a.value[`${a.key}Pr`] && a.value[`${a.key}Pr`]['m:ctrlPr'] && a.value[`${a.key}Pr`]['m:ctrlPr']['a:rPr'] && a.value[`${a.key}Pr`]['m:ctrlPr']['a:rPr']['attrs']['order']\n }\n let oB = 0\n if (b.key === 'm:r' && b.value && b.value['a:rPr']) oB = b.value['a:rPr']['attrs']['order']\n else if (b.value[`${b.key}Pr`] && b.value[`${b.key}Pr`]['m:ctrlPr'] && b.value[`${b.key}Pr`]['m:ctrlPr']['a:rPr']) {\n oB = b.value[`${b.key}Pr`] && b.value[`${b.key}Pr`]['m:ctrlPr'] && b.value[`${b.key}Pr`]['m:ctrlPr']['a:rPr'] && b.value[`${b.key}Pr`]['m:ctrlPr']['a:rPr']['attrs']['order']\n }\n return oA - oB\n })\n\n return oMathList.map(({ key, value }: any) => {\n if (key === 'm:f') return parseFraction(value)\n if (key === 'm:sSup') return parseSuperscript(value)\n if (key === 'm:sSub') return parseSubscript(value)\n if (key === 'm:rad') return parseRadical(value)\n if (key === 'm:nary') return parseNary(value)\n if (key === 'm:limLow') return parseLimit(value, 'low')\n if (key === 'm:limUpp') return parseLimit(value, 'upp')\n if (key === 'm:d') return parseDelimiter(value)\n if (key === 'm:func') return parseFunction(value)\n if (key === 'm:groupChr') return parseGroupChr(value)\n if (key === 'm:eqArr') return parseEqArr(value)\n if (key === 'm:bar') return parseBar(value)\n if (key === 'm:acc') return parseAccent(value)\n if (key === 'm:borderBox') return parseBox(value)\n if (key === 'm:m') return parseMatrix(value)\n if (key === 'm:r') return parseOMath(value)\n if (key === 'm:t') return value\n return ''\n }).join('')\n}\n\nexport function latexFormart(latex: any): string {\n return latex.replaceAll(/</g, '<')\n .replaceAll(/>/g, '>')\n .replaceAll(/&/g, '&')\n .replaceAll(/'/g, \"'\")\n .replaceAll(/"/g, '\"')\n}\n","/* eslint-disable max-lines */\n\nimport { RATIO_EMUs_Points } from './constants'\nimport { getTextByPathList } from './utils'\n\nfunction shapePie(H: any, w: any, adj1: any, adj2: any, isClose: any) {\n const pieVal = parseInt(adj2)\n const piAngle = parseInt(adj1)\n const size = parseInt(H)\n const radius = size / 2\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 x = Math.cos((2 * Math.PI) / (360 / value))\n const y = Math.sin((2 * Math.PI) / (360 / value))\n\n let longArc, d\n if (isClose) {\n longArc = (value <= 180) ? 0 : 1\n d = `M${radius},${radius} L${radius},0 A${radius},${radius} 0 ${longArc},1 ${radius + y * radius},${radius - x * radius} z`\n } \n else {\n longArc = (value <= 180) ? 0 : 1\n const radius1 = radius\n const radius2 = w / 2\n d = `M${radius1},0 A${radius2},${radius1} 0 ${longArc},1 ${radius2 + y * radius2},${radius1 - x * radius1}`\n }\n\n return d\n}\nfunction shapeGear(_w: any, h: any, points: any) {\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: any, cY: any, rX: any, rY: any, stAng: any, endAng: any, isClose: any) {\n let dData = ''\n const increment = (endAng >= stAng) ? 1 : -1\n let angle = stAng\n\n const condition = (a: any) => (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: any, h: any, adj1: any, adj2: any, shapeType: any, adjType: any) {\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 if (shapeType === 'round') {\n return `M0,${h / 2 + (1 - adjB) * (h / 2)} Q0,${h} ${adjB * (w / 2)},${h} L${w / 2 + (1 - adjC) * (w / 2)},${h} Q${w},${h} ${w},${h / 2 + (h / 2) * (1 - adjC)} L${w},${(h / 2) * adjD} Q${w},0 ${w / 2 + (w / 2) * (1 - adjD)},0 L${(w / 2) * adjA},0 Q0,0 0,${(h / 2) * (adjA)} z`\n } \n else if (shapeType === 'snip') {\n return `M0,${adjA * (h / 2)} L0,${h / 2 + (h / 2) * (1 - adjB)} L${adjB * (w / 2)},${h} L${w / 2 + (w / 2) * (1 - adjC)},${h} L${w},${h / 2 + (h / 2) * (1 - adjC)} L${w},${adjD * (h / 2)} L${w / 2 + (w / 2) * (1 - adjD)},0 L${(w / 2) * adjA},0 z`\n }\n return ''\n}\n\nexport function getShapePath(shapType: any, w: any, h: any, node: any) {\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 const max_adj_const = 0.7407\n if (shapAdjst) {\n const adjst = parseInt(shapAdjst.substring(4)) * RATIO_EMUs_Points\n adjst_val = (adjst * 0.5) / max_adj_const\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 const max_adj_const = w > h ? w / h : h / w\n const adjst = parseInt(shapAdjst.substring(4)) / 100000\n adjst_val = adjst / max_adj_const\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 let shapAdjst1 = getTextByPathList(shapAdjst, ['attrs', 'fmla'])\n let shapAdjst2 = shapAdjst1\n if (shapAdjst1 === undefined) {\n shapAdjst1 = shapAdjst[0]['attrs']['fmla']\n shapAdjst2 = shapAdjst[1]['attrs']['fmla']\n }\n if (shapAdjst1) {\n adj1 = parseInt(shapAdjst1.substring(4)) / 60000\n }\n if (shapAdjst2) {\n adj2 = parseInt(shapAdjst2.substring(4)) / 60000\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: any, startY: any, rX: any, rY: any, sA: any, wA: any) => {\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 [rX, rY, sA, wA] = arcParams as [any, any, any, any]\n const arcPath = getArc(lastPoint[0], lastPoint[1], rX, rY, sA, wA)\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'\nimport type { AnyRecord, XmlNode } from './types'\n\nexport function findTransitionNode(content: XmlNode, rootElement: string): XmlNode | null {\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\ntype TransitionResult = {\n type: string\n duration: number\n direction: string | null\n autoNextAfter?: number\n}\n\nexport function parseTransition(transitionNode: XmlNode): TransitionResult | null {\n if (!transitionNode) return null\n\n const transition: TransitionResult = {\n type: 'none',\n duration: 1000,\n direction: null,\n }\n\n const attrs = ((transitionNode as AnyRecord).attrs || {}) as AnyRecord\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 as AnyRecord) {\n if (key !== 'attrs' && effectRegex.test(key)) {\n const effectNode = (transitionNode as AnyRecord)[key] as AnyRecord\n transition.type = key.substring(key.indexOf(':') + 1)\n\n if (effectNode && effectNode.attrs) {\n const effectAttrs = effectNode.attrs as AnyRecord\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","import { getTextByPathList } from './utils'\n\nexport function getSmartArtTextData(dataContent: any) {\n const result: string[] = []\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: any) => {\n let runs = getTextByPathList(p, ['a:r'])\n if (runs) {\n if (!Array.isArray(runs)) runs = [runs]\n\n runs.forEach((r: any) => {\n const t = 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 type { ElementFill, FillGradient } from './types'\n\nconst PT_TO_PX = 96 / 72;\nconst EXPORTED_OBJECT_NAME_RE = /^(shape-text|shape|text)-(\\d+)-(.+)$/\n\nexport type ExportedObjectMeta = {\n kind: 'shape-text' | 'shape' | 'text'\n slideIndex: number\n refId: string\n}\n\nexport function toPx(value?: number | null): number | undefined {\n if (value === undefined || value === null) return undefined;\n return value * PT_TO_PX;\n}\n\nexport function toPxPair(value?: [number, number] | null): [number, number] | undefined {\n if (!value) return undefined;\n return [toPx(value[0]) ?? 0, toPx(value[1]) ?? 0];\n}\n\nexport function mapColor(value?: string | null): string | undefined {\n if (!value) return undefined;\n const normalized = value.startsWith(\"#\") ? value : `#${value}`;\n return normalized.toUpperCase();\n}\n\nexport function mapFillColor(value?: string | null): string | undefined {\n if (!value) return undefined;\n return value.startsWith(\"#\") ? value : `#${value}`;\n}\n\nexport function parseExportedObjectName(name?: string | null): ExportedObjectMeta | undefined {\n if (!name) return undefined\n\n const match = name.match(EXPORTED_OBJECT_NAME_RE)\n if (!match) return undefined\n\n const slideIndex = Number.parseInt(match[2], 10)\n if (!Number.isFinite(slideIndex)) return undefined\n\n return {\n kind: match[1] as ExportedObjectMeta['kind'],\n slideIndex,\n refId: match[3]\n }\n}\n\nfunction parseGradientPosition(value: unknown): number {\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value > 100 ? value / 1000 : value\n }\n\n if (typeof value !== 'string') return 0\n const numeric = Number.parseFloat(value)\n if (!Number.isFinite(numeric)) return 0\n if (value.trim().endsWith('%')) return numeric\n return numeric > 100 ? numeric / 1000 : numeric\n}\n\nfunction mapGradient(value: any): FillGradient | undefined {\n if (!value || typeof value !== 'object') return undefined\n\n const colors = Array.isArray(value.colors)\n ? value.colors\n .filter((stop) => stop && typeof stop === 'object')\n .map((stop) => ({\n pos: parseGradientPosition(stop.pos),\n color: mapFillColor(stop.color) ?? '#FFFFFF'\n }))\n : []\n\n return {\n type:\n typeof value.type === 'string'\n ? value.type === 'line'\n ? 'linear'\n : value.type\n : typeof value.path === 'string'\n ? value.path === 'line'\n ? 'linear'\n : value.path\n : 'linear',\n rotate: typeof value.rotate === 'number' ? value.rotate : typeof value.rot === 'number' ? value.rot : 0,\n colors\n }\n}\n\nexport function mapFill(fill: any): ElementFill | undefined {\n if (!fill) return undefined\n if (typeof fill === 'string') {\n const color = mapFillColor(fill)\n return color ? { type: 'solid', color } : undefined\n }\n\n if (typeof fill !== 'object') {\n return undefined\n }\n\n if (fill.type === 'color' && typeof fill.value === 'string') {\n const color = mapFillColor(fill.value)\n return color ? { type: 'solid', color } : undefined\n }\n\n if (fill.type === 'solid' || (fill.type === undefined && typeof fill.color === 'string')) {\n const color = mapFillColor(fill.color)\n return color ? { type: 'solid', color } : undefined\n }\n\n if (fill.type === 'gradient') {\n const gradient = mapGradient(fill.value ?? fill.gradient ?? fill)\n return gradient ? { type: 'gradient', gradient } : undefined\n }\n\n if ((fill.type === 'image' || fill.type === 'pattern') && fill.value?.picBase64) {\n return {\n type: 'image',\n src: fill.value.picBase64,\n ...(typeof fill.value.opacity === 'number' ? { opacity: fill.value.opacity } : {})\n }\n }\n\n if (fill.type === 'image' && typeof fill.src === 'string') {\n return {\n type: 'image',\n src: fill.src,\n ...(typeof fill.opacity === 'number' ? { opacity: fill.opacity } : {})\n }\n }\n\n if (fill.gradient || fill.colors) {\n const gradient = mapGradient(fill.gradient ?? fill)\n return gradient ? { type: 'gradient', gradient } : undefined\n }\n\n return undefined\n}\n\nfunction convertFontSizeToPx(content: string): string {\n return content.replace(/font-size:\\s*([0-9.]+)pt/gi, (_, size) => {\n const px = Math.floor(Number.parseFloat(size) * PT_TO_PX);\n return `font-size: ${px}px`;\n });\n}\n\nexport function normalizeTextContent(content: string): string {\n return convertFontSizeToPx(content).replace(/ /g, \" \");\n}\n\nexport function normalizeVAlign(value?: string): string | undefined {\n if (!value) return undefined;\n if (value === \"mid\") return \"middle\";\n if (value === \"up\") return \"top\";\n if (value === \"down\") return \"bottom\";\n return value;\n}\n\nexport function roundTo(value?: number | null, digits = 2): number | undefined {\n if (value === undefined || value === null) return undefined;\n const factor = 10 ** digits;\n return Math.round(value * factor) / factor;\n}\n\nexport function normalizeColor(value?: string | null): string | undefined {\n if (!value) return undefined;\n return value.startsWith(\"#\") ? value.toUpperCase() : `#${value}`.toUpperCase();\n}\n\nfunction extractFirstFontSizePx(content?: string): number | undefined {\n if (!content) return undefined;\n const match = content.match(/font-size:\\s*([0-9.]+)px/i);\n if (!match) return undefined;\n const size = Number.parseFloat(match[1]);\n return Number.isFinite(size) ? size : undefined;\n}\n\nexport function normalizeTextHeight(\n height?: number,\n content?: string,\n lineHeight?: number\n): number | undefined {\n if (height === undefined) return height;\n const fontSize = extractFirstFontSizePx(content);\n if (!fontSize) return height;\n const lh = lineHeight ?? 1;\n const base = fontSize * lh;\n const padding = fontSize < 40 ? 21 : 20.5;\n const target = Math.round((base + padding) * 2) / 2;\n if (height > base * 2) return height;\n return target;\n}\n\nexport function hasMultiLineText(content?: string): boolean {\n if (!content) return false;\n if (content.includes(\"<br\")) return true;\n const paragraphs = content.match(/<p\\b/gi);\n return (paragraphs?.length ?? 0) > 1;\n}\n\nexport function getPathBounds(path?: string): [number, number] | undefined {\n if (!path) return undefined;\n const nums = path.match(/-?\\d+\\.?\\d*/g);\n if (!nums || nums.length < 2) return undefined;\n const values = nums.map((value) => Number.parseFloat(value)).filter(Number.isFinite);\n if (!values.length) return undefined;\n let maxX = 0;\n let maxY = 0;\n for (let index = 0; index < values.length; index += 2) {\n const x = values[index];\n const y = values[index + 1];\n if (Number.isFinite(x)) maxX = Math.max(maxX, x);\n if (Number.isFinite(y)) maxY = Math.max(maxY, y);\n }\n if (maxX === 0 && maxY === 0) return undefined;\n return [maxX, maxY];\n}\n\nexport function buildEllipsePath(): string {\n return \"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z\";\n}\n\nexport function buildRoundRectPath(width: number, height: number, radius: number): string {\n const r = Math.max(0, Math.min(radius, Math.min(width, height)));\n return `M ${r} 0 L ${width - r} 0 Q ${width} 0 ${width} ${r} ` +\n `L ${width} ${height - r} Q ${width} ${height} ${width - r} ${height} ` +\n `L ${r} ${height} Q 0 ${height} 0 ${height - r} ` +\n `L 0 ${r} Q 0 0 ${r} 0 Z`;\n}\n\nexport function buildRectPath(): string {\n return \"M 0 0 L 200 0 L 200 200 L 0 200 Z\";\n}\n\nexport function buildCutRectDiagonalPath(\n width: number,\n height: number,\n adj: number\n): string {\n const cut = height * adj;\n return `M 0 ${height - cut} L 0 0 L ${width - cut} 0 L ${width} ${cut} L ${width} ${height} L ${cut} ${height} Z`;\n}\n\nexport function mapPathFormula(\n shapeType?: string\n): \"roundRect\" | \"triangle\" | \"cutRectDiagonal\" | undefined {\n switch (shapeType) {\n case \"roundRect\":\n return \"roundRect\";\n case \"triangle\":\n return \"triangle\";\n case \"snip2DiagRect\":\n return \"cutRectDiagonal\";\n default:\n return undefined;\n }\n}\n\nfunction parseKeypoints(raw: any): any | undefined {\n if (!raw) return undefined;\n if (typeof raw === \"string\") {\n try {\n return JSON.parse(raw);\n } catch {\n return undefined;\n }\n }\n return raw;\n}\n\nexport function mapKeypoints(pathFormula: string, raw: any): number[] | undefined {\n const keypoints = parseKeypoints(raw);\n if (!keypoints) return undefined;\n if (pathFormula === \"roundRect\") {\n const adj = typeof keypoints.adj === \"number\" ? keypoints.adj : 0.5;\n return [Math.min(0.5, Math.max(0, adj))];\n }\n if (pathFormula === \"triangle\") {\n return [typeof keypoints.adj === \"number\" ? keypoints.adj : 0];\n }\n if (pathFormula === \"cutRectDiagonal\") {\n const adj2 = typeof keypoints.adj2 === \"number\" ? keypoints.adj2 : 0.62602;\n return [Number((adj2 / 2).toFixed(5))];\n }\n return undefined;\n}\n","import type { SlideElement } from './types'\nimport {\n buildCutRectDiagonalPath,\n buildEllipsePath,\n buildRectPath,\n buildRoundRectPath,\n getPathBounds,\n hasMultiLineText,\n mapColor,\n mapFill,\n mapKeypoints,\n mapPathFormula,\n normalizeColor,\n normalizeTextContent,\n normalizeTextHeight,\n normalizeVAlign,\n parseExportedObjectName,\n roundTo,\n toPx,\n toPxPair\n} from \"./utils\";\n\nexport function mapElement(raw: any): SlideElement | null {\n if (!raw || !raw.type) return null;\n const exportedMeta = parseExportedObjectName(raw.name);\n const base = mapBaseElement(raw, exportedMeta);\n\n if (raw.type === \"text\" || isExportedTextShape(raw, exportedMeta)) {\n const content =\n raw.content !== undefined ? normalizeTextContent(raw.content) : raw.content;\n const fallbackLineHeight = hasMultiLineText(content) ? 1.5 : 1;\n const lineHeight = raw.lineHeight ?? fallbackLineHeight;\n const normalizedHeight = normalizeTextHeight(base.height, content, lineHeight);\n return {\n ...base,\n type: \"text\",\n height: normalizedHeight,\n rotate: base.rotate ?? 0,\n flipH: undefined,\n flipV: undefined,\n content,\n defaultColor: normalizeColor(raw.defaultColor) ?? normalizeColor(raw.color) ?? \"#333\",\n defaultFontName: raw.fontName ?? \"\",\n wordSpace: raw.wordSpace,\n lineHeight,\n paragraphSpace: raw.paragraphSpace,\n vertical: raw.isVertical,\n fill: mapFill(raw.fill)\n };\n }\n\n if (raw.type === \"image\") {\n const rect = raw.rect ?? {};\n const clipRange: [[number, number], [number, number]] = [\n [rect.l ?? 0, rect.t ?? 0],\n [rect.r ?? 100, rect.b ?? 100]\n ];\n if (rect.r !== undefined || rect.b !== undefined) {\n clipRange[1][0] = 100 - (rect.r ?? 0);\n clipRange[1][1] = 100 - (rect.b ?? 0);\n }\n return {\n ...base,\n rotate: base.rotate ?? 0,\n fixedRatio: true,\n src: raw.src,\n clip: {\n shape: raw.geom === \"ellipse\" ? \"ellipse\" : \"rect\",\n range: clipRange\n }\n };\n }\n\n if (raw.type === \"shape\") {\n const fill = mapFill(raw.fill) ?? { type: \"solid\", color: \"rgba(255,255,255,0)\" };\n const pathFormula = mapPathFormula(raw.shapType);\n const keypoints = pathFormula ? mapKeypoints(pathFormula, raw.keypoints) : undefined;\n const normalizedShapeText =\n raw.content !== undefined ? normalizeTextContent(raw.content) : undefined;\n const hasText = hasRenderableText(normalizedShapeText);\n let path = raw.path;\n let viewBox = raw.viewBox ?? [raw.width ?? 0, raw.height ?? 0];\n let special = false;\n\n if (raw.shapType === \"rect\") {\n path = buildRectPath();\n viewBox = [200, 200];\n }\n\n if (pathFormula && base.width && base.height) {\n if (pathFormula === \"roundRect\") {\n const radius = (keypoints?.[0] ?? 0.5) * Math.min(base.width, base.height);\n path = buildRoundRectPath(base.width, base.height, radius);\n viewBox = [base.width, base.height];\n } else if (pathFormula === \"cutRectDiagonal\") {\n const adj = keypoints?.[0] ?? 0.31301;\n path = buildCutRectDiagonalPath(base.width, base.height, adj);\n viewBox = [base.width, base.height];\n }\n } else if (raw.shapType === \"ellipse\") {\n path = buildEllipsePath();\n viewBox = [200, 200];\n } else if (raw.path) {\n const bounds = getPathBounds(raw.path);\n if (bounds) {\n const rectPath = buildRectPath();\n if (raw.path.trim() === rectPath) {\n viewBox = [200, 200];\n } else if (bounds[0] > viewBox[0] || bounds[1] > viewBox[1]) {\n const ratio = base.width ? bounds[0] / base.width : undefined;\n const nextHeight =\n ratio && base.height ? base.height * ratio : bounds[1];\n viewBox = [bounds[0], nextHeight];\n if (raw.shapType === \"custom\" && raw.path.length > 200) {\n special = true;\n }\n }\n }\n }\n\n return {\n ...base,\n type: \"shape\",\n rotate: base.rotate ?? 0,\n fixedRatio: false,\n path,\n viewBox,\n pathFormula: pathFormula ?? undefined,\n keypoints: keypoints ?? undefined,\n fill,\n ...(special ? { special: true } : {}),\n text: hasText\n ? {\n content: normalizedShapeText,\n align: normalizeVAlign(raw.vAlign) ?? \"middle\",\n defaultColor: normalizeColor(raw.defaultColor) ?? normalizeColor(raw.color) ?? \"#333\",\n defaultFontName: raw.fontName ?? \"\",\n lineHeight: raw.lineHeight ?? 1\n }\n : undefined\n };\n }\n\n if (raw.type === \"line\") {\n return {\n ...base,\n type: \"line\",\n start: toPxPair(raw.start),\n end: toPxPair(raw.end),\n broken: toPxPair(raw.broken),\n broken2: toPxPair(raw.broken2),\n curve: toPxPair(raw.curve),\n cubic: raw.cubic\n ? (raw.cubic.map((point: [number, number]) => toPxPair(point)) as [\n [number, number],\n [number, number]\n ])\n : undefined,\n color: mapColor(raw.color),\n points: raw.points,\n style: raw.style\n };\n }\n\n return {\n ...base,\n content: raw.content,\n path: raw.path,\n viewBox: raw.viewBox,\n text: raw.text\n };\n}\n\nexport function normalizeElement(element: SlideElement): SlideElement {\n if (\n element.type === \"shape\" &&\n element.outline &&\n ((element.height === 0 && element.width) || (element.width === 0 && element.height))\n ) {\n const isVertical = element.width === 0;\n return {\n type: \"line\",\n id: element.id,\n groupId: element.groupId,\n left: element.left,\n top: element.top,\n width: element.outline.width,\n start: [0, 0],\n end: isVertical ? [0, element.height ?? 0] : [element.width ?? 0, 0],\n style: element.outline.style,\n color: element.outline.color,\n points: [\"\", \"\"]\n };\n }\n\n if (element.type === \"text\" && element.content) {\n element.content = normalizeTextContent(element.content);\n }\n\n if (element.type === \"shape\" && element.text?.content) {\n element.text.content = normalizeTextContent(element.text.content);\n }\n\n if (element.type === \"image\") {\n delete element.filters;\n delete element.imageType;\n delete element.outline;\n }\n\n return element;\n}\n\nexport function flattenElements(\n elements: any[],\n offsetX = 0,\n offsetY = 0\n): SlideElement[] {\n const result: SlideElement[] = [];\n\n for (const element of elements) {\n if (element?.type === \"group\" && Array.isArray(element.elements)) {\n const groupLeft = toPx(element.left) ?? 0;\n const groupTop = toPx(element.top) ?? 0;\n result.push(...flattenElements(element.elements, offsetX + groupLeft, offsetY + groupTop));\n continue;\n }\n\n const mapped = mapElement(element);\n if (!mapped) continue;\n\n if (offsetX || offsetY) {\n if (mapped.left !== undefined) mapped.left = mapped.left + offsetX;\n if (mapped.top !== undefined) mapped.top = mapped.top + offsetY;\n }\n\n result.push(mapped);\n }\n\n return result;\n}\n\nfunction mapShadow(shadow: any): SlideElement[\"shadow\"] | undefined {\n if (!shadow) return undefined;\n return {\n h: toPx(shadow.h),\n v: toPx(shadow.v),\n blur: toPx(shadow.blur),\n color: mapColor(shadow.color) ?? shadow.color\n };\n}\n\nfunction mapOutline(raw: any): SlideElement[\"outline\"] | undefined {\n if (!raw) return undefined;\n if (!raw.borderColor && !raw.borderWidth && !raw.borderType) return undefined;\n return {\n width: roundTo(toPx(raw.borderWidth)) ?? undefined,\n color: normalizeColor(raw.borderColor),\n style: raw.borderType\n };\n}\n\nfunction mapBaseElement(raw: any, exportedMeta?: ReturnType<typeof parseExportedObjectName>): SlideElement {\n const outline = mapOutline(raw);\n const shadow = mapShadow(raw.shadow);\n const fill = mapFill(raw.fill);\n const exportedId =\n exportedMeta?.kind === \"shape-text\" ? `${exportedMeta.refId}__text` : exportedMeta?.refId;\n\n return {\n type: raw.type,\n id: exportedId ?? raw.id,\n groupId: raw.groupId,\n left: toPx(raw.left),\n top: toPx(raw.top),\n width: toPx(raw.width),\n height: toPx(raw.height),\n rotate: raw.rotate,\n fill,\n opacity: raw.opacity,\n outline: outline ?? undefined,\n shadow: shadow ?? undefined,\n flipH: raw.isFlipH,\n flipV: raw.isFlipV\n };\n}\n\nfunction isExportedTextShape(\n raw: any,\n exportedMeta?: ReturnType<typeof parseExportedObjectName>\n): boolean {\n if (raw?.type !== \"shape\" || !raw?.content) return false;\n return exportedMeta?.kind === \"text\" || exportedMeta?.kind === \"shape-text\";\n}\n\nfunction hasRenderableText(content?: string): boolean {\n if (!content) return false;\n const plainText = content.replace(/<[^>]*>/g, \" \").replace(/\\s+/g, \" \").trim();\n return plainText.length > 0;\n}\n","import type { Slide } from './types'\nimport { flattenElements, normalizeElement } from './element-mapper'\nimport { mapFill, parseExportedObjectName } from './utils'\n\nconst ID_ALPHABET = \"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_\";\n\nexport function normalizeSlide(slide: any, index: number): Slide {\n const backgroundFill = mapFill(slide?.fill);\n const rawElements = [\n ...(Array.isArray(slide?.layoutElements) ? slide.layoutElements : []),\n ...(Array.isArray(slide?.elements) ? slide.elements : [])\n ];\n\n const orderedElements = rawElements.slice().sort((a, b) => {\n const orderA = typeof a?.order === \"number\" ? a.order : 0;\n const orderB = typeof b?.order === \"number\" ? b.order : 0;\n return orderA - orderB;\n });\n\n const restoredElements = restoreExportedRoundTripElements(orderedElements);\n\n const elements = flattenElements(restoredElements).map((element, elementIndex) => {\n if (!element.id) {\n element.id = makeId(`slide-${index}-element-${elementIndex}-${element.type}`);\n }\n return normalizeElement(element);\n });\n\n return {\n id: slide?.id ?? slide?.slideId ?? makeId(`slide-${index}`),\n background: backgroundFill,\n elements,\n remark: slide?.remark ?? \"\"\n };\n}\n\nfunction makeId(seed: string): string {\n const next = hashSeed(seed);\n let state = next();\n let id = \"\";\n for (let index = 0; index < 10; index += 1) {\n state = Math.imul(state ^ (state >>> 15), state | 1);\n state ^= state + Math.imul(state ^ (state >>> 7), state | 61);\n const value = ((state ^ (state >>> 14)) >>> 0) / 4294967296;\n id += ID_ALPHABET[Math.floor(value * ID_ALPHABET.length)];\n }\n return id;\n}\n\nfunction restoreExportedRoundTripElements(elements: any[]): any[] {\n const restored = elements.map((element) => {\n if (element?.type === 'group' && Array.isArray(element.elements)) {\n return {\n ...element,\n elements: restoreExportedRoundTripElements(element.elements)\n }\n }\n return element\n })\n\n const shapesByRefId = new Map<string, any>()\n for (const element of restored) {\n const meta = parseExportedObjectName(element?.name)\n if (meta?.kind === 'shape') {\n shapesByRefId.set(meta.refId, element)\n }\n }\n\n return restored.filter((element) => {\n const meta = parseExportedObjectName(element?.name)\n if (meta?.kind !== 'shape-text') {\n return true\n }\n\n const targetShape = shapesByRefId.get(meta.refId)\n if (!targetShape || targetShape.type !== 'shape') {\n return true\n }\n\n mergeShapeText(targetShape, element)\n return false\n })\n}\n\nfunction mergeShapeText(targetShape: any, textShape: any) {\n if (!targetShape.content && textShape?.content) {\n targetShape.content = textShape.content\n }\n if (textShape?.vAlign) {\n targetShape.vAlign = textShape.vAlign\n }\n}\n\nfunction hashSeed(value: string): () => number {\n let hash = 1779033703 ^ value.length;\n for (let index = 0; index < value.length; index += 1) {\n hash = Math.imul(hash ^ value.charCodeAt(index), 3432918353);\n hash = (hash << 13) | (hash >>> 19);\n }\n return () => {\n hash = Math.imul(hash ^ (hash >>> 16), 2246822507);\n hash = Math.imul(hash ^ (hash >>> 13), 3266489909);\n return (hash ^= hash >>> 16) >>> 0;\n };\n}\n"],"mappings":"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","names":["obj","p","q","toHex","text","hslToRgb","sldClrMapOvr","toHex","hslToRgb","innerNode","pNode","shapeArc","parse","elements","ws","hs","name","width","parse"]}
|