Make short ppt on gluconeogenesis

Reading File
Reading File
Reading File
Finding Sources
Reading File
Reading File
Reading File
Searching Images

gluconeogenesis pathway diagram metabolic

Reading File
Reading File
Reading File
Running Command

ls /home/daytona/workspace/ && mkdir -p /home/daytona/workspace/gluconeogenesis-ppt

Running Command

mkdir -p /home/daytona/gluconeogenesis-ppt && ls /home/daytona/

Writing File

/home/daytona/gluconeogenesis-ppt/build.js

const pptxgen = require("pptxgenjs");

let pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
pres.title = "Gluconeogenesis";

// ─── THEME ───────────────────────────────────────────────────────────────────
const BG_DARK   = "0B1D2E";   // deep navy
const BG_MID    = "102840";   // slightly lighter navy
const ACCENT    = "3EC6B0";   // teal
const ACCENT2   = "F5A623";   // amber
const WHITE     = "FFFFFF";
const LIGHT_TXT = "C8DCE8";
const GRAY_BOX  = "163350";

// Helper: add slide background rectangle
function darkSlide(pres) {
  let s = pres.addSlide();
  s.background = { color: BG_DARK };
  return s;
}

// ─── SLIDE 1: TITLE ──────────────────────────────────────────────────────────
{
  let s = pres.addSlide();
  s.background = { color: BG_DARK };

  // Accent bar
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.12, fill: { color: ACCENT }, line: { color: ACCENT } });
  s.addShape(pres.ShapeType.rect, { x: 0, y: 5.505, w: 10, h: 0.12, fill: { color: ACCENT2 }, line: { color: ACCENT2 } });

  // Big title
  s.addText("GLUCONEOGENESIS", {
    x: 0.5, y: 1.2, w: 9, h: 1.2,
    fontSize: 52, bold: true, color: WHITE, align: "center",
    fontFace: "Calibri", charSpacing: 4
  });

  // Subtitle
  s.addText("Synthesis of Glucose from Non-Carbohydrate Precursors", {
    x: 0.8, y: 2.5, w: 8.4, h: 0.6,
    fontSize: 20, color: ACCENT, align: "center", fontFace: "Calibri"
  });

  // Divider line
  s.addShape(pres.ShapeType.line, {
    x: 2, y: 3.25, w: 6, h: 0,
    line: { color: ACCENT2, width: 1.5 }
  });

  // Sub-labels
  s.addText([
    { text: "Basic Medical Biochemistry", options: { bold: true, color: ACCENT2 } },
    { text: "  •  Lippincott Illustrated Reviews Biochemistry", options: { color: LIGHT_TXT } }
  ], {
    x: 0.5, y: 3.5, w: 9, h: 0.45, fontSize: 14, align: "center", fontFace: "Calibri"
  });

  s.addText("Medical Biochemistry Overview", {
    x: 0.5, y: 4.85, w: 9, h: 0.35,
    fontSize: 13, color: LIGHT_TXT, align: "center", italic: true, fontFace: "Calibri"
  });
}

// ─── SLIDE 2: WHAT IS GLUCONEOGENESIS? ───────────────────────────────────────
{
  let s = darkSlide(pres);
  // Header bar
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.7, fill: { color: GRAY_BOX }, line: { color: GRAY_BOX } });
  s.addText("What is Gluconeogenesis?", {
    x: 0.3, y: 0.1, w: 9.4, h: 0.5,
    fontSize: 24, bold: true, color: ACCENT, fontFace: "Calibri"
  });

  // Definition card
  s.addShape(pres.ShapeType.rect, { x: 0.4, y: 0.85, w: 9.2, h: 1.1, fill: { color: GRAY_BOX }, line: { color: ACCENT, width: 1 } });
  s.addText("Gluconeogenesis is the synthesis of glucose from non-carbohydrate precursors — primarily in the liver — to maintain blood glucose during fasting or starvation.", {
    x: 0.55, y: 0.92, w: 8.9, h: 0.95,
    fontSize: 16, color: WHITE, fontFace: "Calibri", valign: "middle"
  });

  // Key facts
  const facts = [
    ["Primary site", "Liver (~90% overnight fast); kidney cortex (~10%)"],
    ["During prolonged starvation (>48 h)", "Kidney contributes up to 40% of glucose output"],
    ["Small intestine", "Can also produce glucose"],
    ["Trigger", "Glycogen depletion, fasting, low blood glucose"],
  ];

  facts.forEach(([label, text], i) => {
    let yy = 2.15 + i * 0.72;
    s.addShape(pres.ShapeType.rect, { x: 0.4, y: yy, w: 3.0, h: 0.58, fill: { color: ACCENT }, line: { color: ACCENT } });
    s.addText(label, { x: 0.42, y: yy, w: 2.96, h: 0.58, fontSize: 13, bold: true, color: BG_DARK, valign: "middle", fontFace: "Calibri" });
    s.addShape(pres.ShapeType.rect, { x: 3.42, y: yy, w: 6.15, h: 0.58, fill: { color: BG_MID }, line: { color: ACCENT } });
    s.addText(text, { x: 3.5, y: yy, w: 6.0, h: 0.58, fontSize: 13, color: LIGHT_TXT, valign: "middle", fontFace: "Calibri" });
  });
}

// ─── SLIDE 3: SUBSTRATES (PRECURSORS) ─────────────────────────────────────────
{
  let s = darkSlide(pres);
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.7, fill: { color: GRAY_BOX }, line: { color: GRAY_BOX } });
  s.addText("Gluconeogenic Substrates (Precursors)", {
    x: 0.3, y: 0.1, w: 9.4, h: 0.5,
    fontSize: 24, bold: true, color: ACCENT, fontFace: "Calibri"
  });

  const substrates = [
    {
      title: "Lactate",
      color: "1A7FB8",
      text: "From anaerobic glycolysis in RBCs & exercising muscle. Oxidized to pyruvate in liver → glucose (Cori cycle)."
    },
    {
      title: "Amino Acids",
      color: "2BA888",
      text: "Major source during fasting. Hydrolysis of tissue proteins → α-keto acids (e.g., pyruvate, OAA). All except Leu & Lys are glucogenic."
    },
    {
      title: "Glycerol",
      color: ACCENT2,
      text: "Released from lipolysis of TAGs in adipose tissue. Phosphorylated → glycerol-3-P → DHAP (enters gluconeogenesis)."
    },
    {
      title: "Propionate",
      color: "8B5CF6",
      text: "From odd-chain fatty acid oxidation. Enters via succinyl-CoA → OAA → glucose (minor contributor)."
    }
  ];

  substrates.forEach((sub, i) => {
    let col = i < 2 ? 0 : 1;
    let row = i % 2;
    let x = col === 0 ? 0.35 : 5.2;
    let y = 0.9 + row * 2.2;
    s.addShape(pres.ShapeType.rect, { x, y, w: 4.5, h: 2.0, fill: { color: BG_MID }, line: { color: sub.color, width: 1.5 } });
    s.addShape(pres.ShapeType.rect, { x, y, w: 4.5, h: 0.45, fill: { color: sub.color }, line: { color: sub.color } });
    s.addText(sub.title, { x: x + 0.1, y: y, w: 4.3, h: 0.45, fontSize: 16, bold: true, color: WHITE, valign: "middle", fontFace: "Calibri" });
    s.addText(sub.text, { x: x + 0.15, y: y + 0.5, w: 4.2, h: 1.4, fontSize: 13, color: LIGHT_TXT, valign: "top", fontFace: "Calibri" });
  });
}

// ─── SLIDE 4: KEY REACTIONS (BYPASS STEPS) ────────────────────────────────────
{
  let s = darkSlide(pres);
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.7, fill: { color: GRAY_BOX }, line: { color: GRAY_BOX } });
  s.addText("Key Reactions: The 3 Bypass Steps", {
    x: 0.3, y: 0.1, w: 9.4, h: 0.5,
    fontSize: 24, bold: true, color: ACCENT, fontFace: "Calibri"
  });

  s.addText("7 glycolytic reactions are reversible. Three irreversible glycolytic steps must be bypassed by unique gluconeogenic reactions:", {
    x: 0.4, y: 0.8, w: 9.2, h: 0.5, fontSize: 14, color: LIGHT_TXT, fontFace: "Calibri"
  });

  const bypasses = [
    {
      glycolysis: "Pyruvate Kinase\n(PEP → Pyruvate)",
      gng: "Pyruvate Carboxylase + PEPCK\n(Pyruvate → OAA → PEP)",
      cofactor: "Biotin; requires ATP + GTP",
      color: "1A7FB8"
    },
    {
      glycolysis: "Phosphofructokinase-1\n(F6P → F1,6BP)",
      gng: "Fructose-1,6-bisphosphatase\n(F1,6BP → F6P)",
      cofactor: "Inhibited by AMP; activated by citrate",
      color: "2BA888"
    },
    {
      glycolysis: "Hexokinase / Glucokinase\n(Glucose → G6P)",
      gng: "Glucose-6-phosphatase\n(G6P → Glucose)",
      cofactor: "Located in ER membrane; absent in muscle",
      color: ACCENT2
    }
  ];

  bypasses.forEach((b, i) => {
    let y = 1.45 + i * 1.32;
    // Glycolysis box
    s.addShape(pres.ShapeType.rect, { x: 0.3, y, w: 3.0, h: 1.1, fill: { color: BG_MID }, line: { color: b.color, width: 1 } });
    s.addText([
      { text: "Glycolysis:\n", options: { bold: true, color: ACCENT2, breakLine: true } },
      { text: b.glycolysis, options: { color: LIGHT_TXT } }
    ], { x: 0.38, y: y + 0.05, w: 2.85, h: 1.0, fontSize: 12, fontFace: "Calibri", valign: "top" });

    // Arrow
    s.addShape(pres.ShapeType.rightArrow, { x: 3.38, y: y + 0.3, w: 0.65, h: 0.5, fill: { color: b.color }, line: { color: b.color } });

    // GNG box
    s.addShape(pres.ShapeType.rect, { x: 4.1, y, w: 3.2, h: 1.1, fill: { color: BG_MID }, line: { color: b.color, width: 1 } });
    s.addText([
      { text: "Gluconeogenesis:\n", options: { bold: true, color: ACCENT, breakLine: true } },
      { text: b.gng, options: { color: LIGHT_TXT } }
    ], { x: 4.18, y: y + 0.05, w: 3.04, h: 1.0, fontSize: 12, fontFace: "Calibri", valign: "top" });

    // Note box
    s.addShape(pres.ShapeType.rect, { x: 7.38, y, w: 2.3, h: 1.1, fill: { color: "1C2F42" }, line: { color: b.color, width: 1 } });
    s.addText([
      { text: "Note: ", options: { bold: true, color: b.color } },
      { text: b.cofactor, options: { color: LIGHT_TXT } }
    ], { x: 7.44, y: y + 0.05, w: 2.2, h: 1.0, fontSize: 11, fontFace: "Calibri", valign: "top" });
  });
}

// ─── SLIDE 5: THE CORI CYCLE ──────────────────────────────────────────────────
{
  let s = darkSlide(pres);
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.7, fill: { color: GRAY_BOX }, line: { color: GRAY_BOX } });
  s.addText("The Cori Cycle", {
    x: 0.3, y: 0.1, w: 9.4, h: 0.5,
    fontSize: 24, bold: true, color: ACCENT, fontFace: "Calibri"
  });

  // Use textbook image for Cori cycle
  s.addText("A key inter-organ cycle linking gluconeogenesis (liver) with glycolysis (muscle/RBCs):", {
    x: 0.4, y: 0.8, w: 9.2, h: 0.4, fontSize: 14, color: LIGHT_TXT, fontFace: "Calibri"
  });

  // Diagram using shapes
  // Liver box
  s.addShape(pres.ShapeType.rect, { x: 0.5, y: 1.4, w: 3.2, h: 3.5, fill: { color: GRAY_BOX }, line: { color: ACCENT, width: 1.5 } });
  s.addText("LIVER", { x: 0.55, y: 1.45, w: 3.1, h: 0.4, fontSize: 16, bold: true, color: ACCENT, align: "center", fontFace: "Calibri" });
  s.addText([
    { text: "Lactate\n", options: { color: ACCENT2, bold: true, breakLine: true } },
    { text: "↓  LDH\n", options: { color: LIGHT_TXT, breakLine: true } },
    { text: "Pyruvate\n", options: { color: ACCENT2, bold: true, breakLine: true } },
    { text: "↓  PC / PEPCK\n", options: { color: LIGHT_TXT, breakLine: true } },
    { text: "PEP\n", options: { color: ACCENT2, bold: true, breakLine: true } },
    { text: "↓  (7 reversible steps)\n", options: { color: LIGHT_TXT, breakLine: true } },
    { text: "Glucose", options: { color: ACCENT, bold: true } }
  ], { x: 0.6, y: 1.95, w: 3.0, h: 2.7, fontSize: 13, fontFace: "Calibri", valign: "top" });

  // Blood/arrows
  s.addShape(pres.ShapeType.rect, { x: 3.9, y: 1.4, w: 2.2, h: 3.5, fill: { color: BG_MID }, line: { color: GRAY_BOX } });
  s.addText("BLOOD", { x: 3.9, y: 1.45, w: 2.2, h: 0.4, fontSize: 14, bold: true, color: WHITE, align: "center", fontFace: "Calibri" });
  s.addShape(pres.ShapeType.rightArrow, { x: 4.0, y: 2.1, w: 1.9, h: 0.45, fill: { color: ACCENT }, line: { color: ACCENT } });
  s.addText("Glucose →", { x: 4.0, y: 2.12, w: 1.9, h: 0.45, fontSize: 12, color: BG_DARK, bold: true, align: "center", valign: "middle", fontFace: "Calibri" });
  s.addShape(pres.ShapeType.leftArrow, { x: 4.0, y: 3.3, w: 1.9, h: 0.45, fill: { color: ACCENT2 }, line: { color: ACCENT2 } });
  s.addText("← Lactate", { x: 4.0, y: 3.32, w: 1.9, h: 0.45, fontSize: 12, color: BG_DARK, bold: true, align: "center", valign: "middle", fontFace: "Calibri" });

  // Muscle box
  s.addShape(pres.ShapeType.rect, { x: 6.28, y: 1.4, w: 3.2, h: 3.5, fill: { color: GRAY_BOX }, line: { color: ACCENT2, width: 1.5 } });
  s.addText("MUSCLE / RBCs", { x: 6.33, y: 1.45, w: 3.1, h: 0.4, fontSize: 15, bold: true, color: ACCENT2, align: "center", fontFace: "Calibri" });
  s.addText([
    { text: "Glucose\n", options: { color: ACCENT, bold: true, breakLine: true } },
    { text: "↓  Glycolysis (anaerobic)\n", options: { color: LIGHT_TXT, breakLine: true } },
    { text: "Pyruvate\n", options: { color: ACCENT2, bold: true, breakLine: true } },
    { text: "↓  LDH\n", options: { color: LIGHT_TXT, breakLine: true } },
    { text: "Lactate", options: { color: ACCENT2, bold: true } }
  ], { x: 6.38, y: 1.95, w: 3.0, h: 2.7, fontSize: 13, fontFace: "Calibri", valign: "top" });
}

// ─── SLIDE 6: REGULATION ──────────────────────────────────────────────────────
{
  let s = darkSlide(pres);
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.7, fill: { color: GRAY_BOX }, line: { color: GRAY_BOX } });
  s.addText("Regulation of Gluconeogenesis", {
    x: 0.3, y: 0.1, w: 9.4, h: 0.5,
    fontSize: 24, bold: true, color: ACCENT, fontFace: "Calibri"
  });

  const regs = [
    {
      agent: "Glucagon ↑",
      color: ACCENT,
      effects: [
        "Lowers fructose-2,6-bisphosphate → activates FBPase-1, inhibits PFK-1",
        "Induces PEPCK gene expression via cAMP",
        "Promotes phosphorylation of pyruvate kinase (inactivates it)"
      ]
    },
    {
      agent: "Insulin ↓",
      color: "E05C5C",
      effects: [
        "Opposes glucagon; inhibits PEPCK transcription",
        "Activates PFK-2 → raises fructose-2,6-BP → inhibits gluconeogenesis",
        "Stimulates glycogen synthesis instead"
      ]
    },
    {
      agent: "Cortisol ↑",
      color: ACCENT2,
      effects: [
        "Mobilizes protein from tissues → releases amino acids",
        "Provides gluconeogenic substrates (via ACTH stimulation)",
        "Key in stress-induced hyperglycemia"
      ]
    },
    {
      agent: "Allosteric Effectors",
      color: "8B5CF6",
      effects: [
        "Acetyl-CoA activates pyruvate carboxylase",
        "AMP inhibits fructose-1,6-bisphosphatase (favors glycolysis)",
        "Citrate activates FBPase-1 (favors gluconeogenesis)"
      ]
    }
  ];

  regs.forEach((r, i) => {
    let col = i % 2;
    let row = Math.floor(i / 2);
    let x = col === 0 ? 0.35 : 5.2;
    let y = 0.85 + row * 2.3;

    s.addShape(pres.ShapeType.rect, { x, y, w: 4.5, h: 2.1, fill: { color: BG_MID }, line: { color: r.color, width: 1.5 } });
    s.addShape(pres.ShapeType.rect, { x, y, w: 4.5, h: 0.45, fill: { color: r.color }, line: { color: r.color } });
    s.addText(r.agent, { x: x + 0.1, y, w: 4.3, h: 0.45, fontSize: 15, bold: true, color: BG_DARK, valign: "middle", fontFace: "Calibri" });

    const bullets = r.effects.map((e, idx) => ({
      text: e,
      options: { bullet: { type: "bullet" }, color: LIGHT_TXT, breakLine: idx < r.effects.length - 1 }
    }));
    s.addText(bullets, { x: x + 0.15, y: y + 0.5, w: 4.2, h: 1.55, fontSize: 12, fontFace: "Calibri", valign: "top" });
  });
}

// ─── SLIDE 7: ENERGY COST + CLINICAL RELEVANCE ────────────────────────────────
{
  let s = darkSlide(pres);
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.7, fill: { color: GRAY_BOX }, line: { color: GRAY_BOX } });
  s.addText("Energy Cost & Clinical Relevance", {
    x: 0.3, y: 0.1, w: 9.4, h: 0.5,
    fontSize: 24, bold: true, color: ACCENT, fontFace: "Calibri"
  });

  // Energy cost box
  s.addShape(pres.ShapeType.rect, { x: 0.35, y: 0.82, w: 4.3, h: 2.1, fill: { color: GRAY_BOX }, line: { color: ACCENT, width: 1 } });
  s.addText("Energy Cost", { x: 0.45, y: 0.87, w: 4.1, h: 0.4, fontSize: 16, bold: true, color: ACCENT, fontFace: "Calibri" });
  s.addText([
    { text: "2 Pyruvate → 1 Glucose requires:\n", options: { bold: true, color: WHITE, breakLine: true } },
    { text: "• 6 ATP equivalents hydrolyzed\n", options: { color: LIGHT_TXT, breakLine: true } },
    { text: "• 2 NADH oxidized\n", options: { color: LIGHT_TXT, breakLine: true } },
    { text: "• 2 GTP consumed (PEPCK step)\n", options: { color: LIGHT_TXT, breakLine: true } },
    { text: "\nMuch more costly than glycolysis!", options: { color: ACCENT2, bold: true } }
  ], { x: 0.5, y: 1.3, w: 4.05, h: 1.55, fontSize: 13, fontFace: "Calibri", valign: "top" });

  // Clinical conditions
  s.addShape(pres.ShapeType.rect, { x: 4.85, y: 0.82, w: 4.8, h: 2.1, fill: { color: GRAY_BOX }, line: { color: ACCENT2, width: 1 } });
  s.addText("Clinical Disorders", { x: 4.95, y: 0.87, w: 4.6, h: 0.4, fontSize: 16, bold: true, color: ACCENT2, fontFace: "Calibri" });
  s.addText([
    { text: "Deficiency of gluconeogenic enzymes\n", options: { bold: true, color: WHITE, breakLine: true } },
    { text: "→ Fasting hypoglycemia\n\n", options: { color: LIGHT_TXT, breakLine: true } },
    { text: "Glucose-6-phosphatase deficiency\n", options: { bold: true, color: WHITE, breakLine: true } },
    { text: "→ von Gierke disease (GSD Ia/Ib)\n\n", options: { color: LIGHT_TXT, breakLine: true } },
    { text: "Metformin → inhibits complex I\n", options: { bold: true, color: WHITE, breakLine: true } },
    { text: "→ Reduces hepatic gluconeogenesis", options: { color: LIGHT_TXT } }
  ], { x: 5.0, y: 1.3, w: 4.55, h: 1.55, fontSize: 12, fontFace: "Calibri", valign: "top" });

  // Hormonal states
  s.addShape(pres.ShapeType.rect, { x: 0.35, y: 3.12, w: 9.3, h: 2.1, fill: { color: GRAY_BOX }, line: { color: "8B5CF6", width: 1 } });
  s.addText("Physiological States with High Gluconeogenesis", {
    x: 0.45, y: 3.17, w: 9.1, h: 0.4, fontSize: 15, bold: true, color: "B48FFF", fontFace: "Calibri"
  });

  const states = [
    ["Overnight Fast", "Liver glycogen depleted; GNG supplies ~100% of blood glucose"],
    ["Prolonged Starvation", "Kidney joins liver; muscle protein breakdown accelerates"],
    ["Intense Exercise", "Cori cycle active; lactate from muscle → liver glucose"],
    ["Uncontrolled DM", "Excess glucagon + low insulin → unrestrained GNG → hyperglycemia"],
  ];

  states.forEach(([label, text], i) => {
    let x = 0.5 + i * 2.35;
    s.addShape(pres.ShapeType.rect, { x, y: 3.65, w: 2.2, h: 0.38, fill: { color: "8B5CF6" }, line: { color: "8B5CF6" } });
    s.addText(label, { x, y: 3.65, w: 2.2, h: 0.38, fontSize: 11, bold: true, color: WHITE, align: "center", valign: "middle", fontFace: "Calibri" });
    s.addText(text, { x, y: 4.05, w: 2.2, h: 1.0, fontSize: 11, color: LIGHT_TXT, fontFace: "Calibri", valign: "top" });
  });
}

// ─── SLIDE 8: SUMMARY ────────────────────────────────────────────────────────
{
  let s = darkSlide(pres);
  s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.7, fill: { color: GRAY_BOX }, line: { color: GRAY_BOX } });
  s.addText("Summary", {
    x: 0.3, y: 0.1, w: 9.4, h: 0.5,
    fontSize: 24, bold: true, color: ACCENT, fontFace: "Calibri"
  });

  const points = [
    { icon: "01", color: ACCENT,    text: "Gluconeogenesis synthesizes glucose from lactate, amino acids, and glycerol — primarily in the liver." },
    { icon: "02", color: ACCENT2,   text: "Not a simple reversal of glycolysis — 3 irreversible steps bypassed by PC, PEPCK, FBPase-1, and G6Pase." },
    { icon: "03", color: "1A7FB8",  text: "Glucagon (via cAMP) activates; insulin and AMP inhibit gluconeogenesis." },
    { icon: "04", color: "2BA888",  text: "Expensive: requires 6 ATP equivalents to produce 1 glucose from 2 pyruvate." },
    { icon: "05", color: "E05C5C",  text: "Enzyme deficiencies → fasting hypoglycemia (e.g., G6Pase defect in von Gierke disease)." },
    { icon: "06", color: "8B5CF6",  text: "Metformin reduces hepatic gluconeogenesis via AMPK activation — key mechanism in T2DM management." },
  ];

  points.forEach((p, i) => {
    let col = i % 2;
    let row = Math.floor(i / 2);
    let x = col === 0 ? 0.35 : 5.2;
    let y = 0.85 + row * 1.55;

    s.addShape(pres.ShapeType.rect, { x, y, w: 0.55, h: 1.3, fill: { color: p.color }, line: { color: p.color } });
    s.addText(p.icon, { x, y, w: 0.55, h: 1.3, fontSize: 18, bold: true, color: WHITE, align: "center", valign: "middle", fontFace: "Calibri" });
    s.addShape(pres.ShapeType.rect, { x: x + 0.57, y, w: 3.95, h: 1.3, fill: { color: BG_MID }, line: { color: p.color } });
    s.addText(p.text, { x: x + 0.67, y: y + 0.1, w: 3.75, h: 1.1, fontSize: 13, color: LIGHT_TXT, fontFace: "Calibri", valign: "middle" });
  });
}

// ─── WRITE ────────────────────────────────────────────────────────────────────
pres.writeFile({ fileName: "/home/daytona/gluconeogenesis-ppt/Gluconeogenesis.pptx" })
  .then(() => console.log("Done: Gluconeogenesis.pptx"))
  .catch(e => { console.error(e); process.exit(1); });
You've run out of free credits. Sign up for a free account to continue using Orris.
This is a shared conversation. Sign in to Orris to start your own chat.