@gpichot/spectacle-deck 1.2.9 → 1.2.11

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/colors.d.ts CHANGED
@@ -5,7 +5,7 @@ export declare function extractColors(color: string): {
5
5
  r: number;
6
6
  g: number;
7
7
  b: number;
8
- };
8
+ } | null;
9
9
  /**
10
10
  * Create vars for css colors
11
11
  */
package/index.cjs CHANGED
@@ -1331,12 +1331,14 @@ function extractColors(color) {
1331
1331
  const b = parseInt(hex.substring(4, 6), 16);
1332
1332
  return { r, g, b };
1333
1333
  }
1334
- throw new Error(`Invalid color format: ${color}`);
1334
+ return null;
1335
1335
  }
1336
1336
  function createCssVariables(colors) {
1337
1337
  const base = Object.entries(colors).map(([key, value]) => `--color-${key}: ${value};`).join("\n");
1338
1338
  const rgbs = Object.entries(colors).map(([key, value]) => {
1339
- const { r, g, b } = extractColors(value);
1339
+ const color = extractColors(value);
1340
+ if (!color) return "";
1341
+ const { r, g, b } = color;
1340
1342
  return `--color-${key}-rgb: ${r}, ${g}, ${b};`;
1341
1343
  }).join("\n");
1342
1344
  return `${base}
@@ -1779,6 +1781,22 @@ function PassThrough({ children }) {
1779
1781
  return /* @__PURE__ */ import_react24.default.createElement(import_react24.default.Fragment, null, children);
1780
1782
  }
1781
1783
  var layouts = layouts_default;
1784
+ var KEYS = {
1785
+ NextSlide: ["ArrowDown", "ArrowRight", "PageDown"],
1786
+ PreviousSlide: ["ArrowUp", "ArrowLeft", "PageUp"]
1787
+ };
1788
+ function DeckKeyEvents() {
1789
+ const { stepForward, regressSlide } = import_react24.default.useContext(import_spectacle10.DeckContext);
1790
+ import_react24.default.useEffect(() => {
1791
+ const handleKeyDown = (e) => {
1792
+ if (KEYS.NextSlide.includes(e.key)) stepForward();
1793
+ else if (KEYS.PreviousSlide.includes(e.key)) regressSlide();
1794
+ };
1795
+ window.addEventListener("keydown", handleKeyDown);
1796
+ return () => window.removeEventListener("keydown", handleKeyDown);
1797
+ }, [stepForward, regressSlide]);
1798
+ return null;
1799
+ }
1782
1800
  var componentsMap2 = {
1783
1801
  ...map_default,
1784
1802
  wrapper: SlideWrapper
@@ -1806,6 +1824,7 @@ function Deck({
1806
1824
  theme: { ...theme_default, ...theme.themeTokens },
1807
1825
  template
1808
1826
  },
1827
+ /* @__PURE__ */ import_react24.default.createElement(DeckKeyEvents, null),
1809
1828
  deck.slides.map((slide, i) => {
1810
1829
  const Component = slide.slideComponent;
1811
1830
  return /* @__PURE__ */ import_react24.default.createElement(import_spectacle10.Slide, { key: i }, /* @__PURE__ */ import_react24.default.createElement(Component, null));
package/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  // src/index.tsx
2
2
  import React24 from "react";
3
3
  import { MDXProvider } from "@mdx-js/react";
4
- import { Deck as SpectacleDeck, Slide } from "spectacle";
4
+ import { Deck as SpectacleDeck, Slide, DeckContext as DeckContext2 } from "spectacle";
5
5
 
6
6
  // src/layouts/CenteredLayout.tsx
7
7
  import React2 from "react";
@@ -1284,12 +1284,14 @@ function extractColors(color) {
1284
1284
  const b = parseInt(hex.substring(4, 6), 16);
1285
1285
  return { r, g, b };
1286
1286
  }
1287
- throw new Error(`Invalid color format: ${color}`);
1287
+ return null;
1288
1288
  }
1289
1289
  function createCssVariables(colors) {
1290
1290
  const base = Object.entries(colors).map(([key, value]) => `--color-${key}: ${value};`).join("\n");
1291
1291
  const rgbs = Object.entries(colors).map(([key, value]) => {
1292
- const { r, g, b } = extractColors(value);
1292
+ const color = extractColors(value);
1293
+ if (!color) return "";
1294
+ const { r, g, b } = color;
1293
1295
  return `--color-${key}-rgb: ${r}, ${g}, ${b};`;
1294
1296
  }).join("\n");
1295
1297
  return `${base}
@@ -1732,6 +1734,22 @@ function PassThrough({ children }) {
1732
1734
  return /* @__PURE__ */ React24.createElement(React24.Fragment, null, children);
1733
1735
  }
1734
1736
  var layouts = layouts_default;
1737
+ var KEYS = {
1738
+ NextSlide: ["ArrowDown", "ArrowRight", "PageDown"],
1739
+ PreviousSlide: ["ArrowUp", "ArrowLeft", "PageUp"]
1740
+ };
1741
+ function DeckKeyEvents() {
1742
+ const { stepForward, regressSlide } = React24.useContext(DeckContext2);
1743
+ React24.useEffect(() => {
1744
+ const handleKeyDown = (e) => {
1745
+ if (KEYS.NextSlide.includes(e.key)) stepForward();
1746
+ else if (KEYS.PreviousSlide.includes(e.key)) regressSlide();
1747
+ };
1748
+ window.addEventListener("keydown", handleKeyDown);
1749
+ return () => window.removeEventListener("keydown", handleKeyDown);
1750
+ }, [stepForward, regressSlide]);
1751
+ return null;
1752
+ }
1735
1753
  var componentsMap2 = {
1736
1754
  ...map_default,
1737
1755
  wrapper: SlideWrapper
@@ -1759,6 +1777,7 @@ function Deck({
1759
1777
  theme: { ...theme_default, ...theme.themeTokens },
1760
1778
  template
1761
1779
  },
1780
+ /* @__PURE__ */ React24.createElement(DeckKeyEvents, null),
1762
1781
  deck.slides.map((slide, i) => {
1763
1782
  const Component = slide.slideComponent;
1764
1783
  return /* @__PURE__ */ React24.createElement(Slide, { key: i }, /* @__PURE__ */ React24.createElement(Component, null));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gpichot/spectacle-deck",
3
- "version": "1.2.9",
3
+ "version": "1.2.11",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "index.cjs",