pptx-react-viewer 2.5.3 → 2.6.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.
Files changed (106) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/{AiChatPanel-DPMHPOWF.js → AiChatPanel-53W2JG6G.js} +22 -22
  3. package/dist/AiChatPanel-53W2JG6G.js.br +0 -0
  4. package/dist/AiChatPanel-53W2JG6G.js.gz +0 -0
  5. package/dist/{AiChatPanel-OFOOWR4U.mjs → AiChatPanel-L5IOO72H.mjs} +3 -3
  6. package/dist/AiChatPanel-L5IOO72H.mjs.br +0 -0
  7. package/dist/AiChatPanel-L5IOO72H.mjs.gz +0 -0
  8. package/dist/{Model3DScene-PD2MDBIE.js → Model3DScene-E7JGXNJN.js} +2 -2
  9. package/dist/Model3DScene-E7JGXNJN.js.br +0 -0
  10. package/dist/Model3DScene-E7JGXNJN.js.gz +0 -0
  11. package/dist/{Model3DScene-P4OKVQBF.mjs → Model3DScene-EW7OWRJK.mjs} +1 -1
  12. package/dist/Model3DScene-EW7OWRJK.mjs.br +0 -0
  13. package/dist/Model3DScene-EW7OWRJK.mjs.gz +0 -0
  14. package/dist/{SurfaceChart3DScene-FECS3THE.js → SurfaceChart3DScene-3QB6NVKD.js} +2 -2
  15. package/dist/SurfaceChart3DScene-3QB6NVKD.js.br +0 -0
  16. package/dist/SurfaceChart3DScene-3QB6NVKD.js.gz +0 -0
  17. package/dist/{SurfaceChart3DScene-TL4ZIOI4.mjs → SurfaceChart3DScene-64HI3U7Y.mjs} +1 -1
  18. package/dist/{SurfaceChart3DScene-TL4ZIOI4.mjs.br → SurfaceChart3DScene-64HI3U7Y.mjs.br} +0 -0
  19. package/dist/SurfaceChart3DScene-64HI3U7Y.mjs.gz +0 -0
  20. package/dist/{chunk-6KOM27PS.mjs → chunk-34ZW32XK.mjs} +902 -52
  21. package/dist/chunk-34ZW32XK.mjs.br +0 -0
  22. package/dist/chunk-34ZW32XK.mjs.gz +0 -0
  23. package/dist/{chunk-QDIF3ZXF.mjs → chunk-DWQJW3UM.mjs} +19 -4
  24. package/dist/chunk-DWQJW3UM.mjs.br +0 -0
  25. package/dist/chunk-DWQJW3UM.mjs.gz +0 -0
  26. package/dist/{chunk-UUS7QT22.js → chunk-EJ24IFPL.js} +346 -315
  27. package/dist/chunk-EJ24IFPL.js.br +0 -0
  28. package/dist/chunk-EJ24IFPL.js.gz +0 -0
  29. package/dist/{chunk-FFLUALX5.js → chunk-NXSAYLYI.js} +251 -236
  30. package/dist/chunk-NXSAYLYI.js.br +0 -0
  31. package/dist/chunk-NXSAYLYI.js.gz +0 -0
  32. package/dist/{chunk-SAXG53MO.mjs → chunk-PENV7S7Z.mjs} +1 -1
  33. package/dist/chunk-PENV7S7Z.mjs.br +0 -0
  34. package/dist/chunk-PENV7S7Z.mjs.gz +0 -0
  35. package/dist/{chunk-F3JUUSC4.mjs → chunk-UO55N46T.mjs} +91 -13
  36. package/dist/chunk-UO55N46T.mjs.br +0 -0
  37. package/dist/chunk-UO55N46T.mjs.gz +0 -0
  38. package/dist/{chunk-23Q3I2LM.js → chunk-UVA55CRK.js} +904 -51
  39. package/dist/chunk-UVA55CRK.js.br +0 -0
  40. package/dist/chunk-UVA55CRK.js.gz +0 -0
  41. package/dist/{chunk-USHZUHHG.js → chunk-V5XVTKFS.js} +925 -847
  42. package/dist/chunk-V5XVTKFS.js.br +0 -0
  43. package/dist/chunk-V5XVTKFS.js.gz +0 -0
  44. package/dist/{chunk-H2FZ2NJ7.js → chunk-VBWWICDF.js} +3 -3
  45. package/dist/chunk-VBWWICDF.js.br +0 -0
  46. package/dist/chunk-VBWWICDF.js.gz +0 -0
  47. package/dist/{chunk-ZZA62IND.mjs → chunk-WCO3NEH5.mjs} +35 -4
  48. package/dist/chunk-WCO3NEH5.mjs.br +0 -0
  49. package/dist/chunk-WCO3NEH5.mjs.gz +0 -0
  50. package/dist/index.d.ts +15 -0
  51. package/dist/index.js +34 -34
  52. package/dist/index.js.br +0 -0
  53. package/dist/index.js.gz +0 -0
  54. package/dist/index.mjs +5 -5
  55. package/dist/index.mjs.br +0 -0
  56. package/dist/index.mjs.gz +0 -0
  57. package/dist/internals.d.ts +42 -0
  58. package/dist/internals.d.ts.map +1 -1
  59. package/dist/internals.js +78 -78
  60. package/dist/internals.js.br +0 -0
  61. package/dist/internals.js.gz +0 -0
  62. package/dist/internals.mjs +3 -3
  63. package/dist/internals.mjs.br +0 -0
  64. package/dist/internals.mjs.gz +0 -0
  65. package/dist/pptx-viewer.css +1 -1
  66. package/dist/pptx-viewer.css.br +0 -0
  67. package/dist/pptx-viewer.css.gz +0 -0
  68. package/dist/viewer/index.d.ts +15 -0
  69. package/dist/viewer/index.js +21 -21
  70. package/dist/viewer/index.js.br +0 -0
  71. package/dist/viewer/index.js.gz +0 -0
  72. package/dist/viewer/index.mjs +5 -5
  73. package/dist/viewer/index.mjs.br +0 -0
  74. package/dist/viewer/index.mjs.gz +0 -0
  75. package/package.json +1 -1
  76. package/dist/AiChatPanel-DPMHPOWF.js.br +0 -0
  77. package/dist/AiChatPanel-DPMHPOWF.js.gz +0 -0
  78. package/dist/AiChatPanel-OFOOWR4U.mjs.br +0 -0
  79. package/dist/AiChatPanel-OFOOWR4U.mjs.gz +0 -0
  80. package/dist/Model3DScene-P4OKVQBF.mjs.br +0 -0
  81. package/dist/Model3DScene-P4OKVQBF.mjs.gz +0 -0
  82. package/dist/Model3DScene-PD2MDBIE.js.br +0 -0
  83. package/dist/Model3DScene-PD2MDBIE.js.gz +0 -0
  84. package/dist/SurfaceChart3DScene-FECS3THE.js.br +0 -0
  85. package/dist/SurfaceChart3DScene-FECS3THE.js.gz +0 -0
  86. package/dist/SurfaceChart3DScene-TL4ZIOI4.mjs.gz +0 -0
  87. package/dist/chunk-23Q3I2LM.js.br +0 -0
  88. package/dist/chunk-23Q3I2LM.js.gz +0 -0
  89. package/dist/chunk-6KOM27PS.mjs.br +0 -0
  90. package/dist/chunk-6KOM27PS.mjs.gz +0 -0
  91. package/dist/chunk-F3JUUSC4.mjs.br +0 -0
  92. package/dist/chunk-F3JUUSC4.mjs.gz +0 -0
  93. package/dist/chunk-FFLUALX5.js.br +0 -0
  94. package/dist/chunk-FFLUALX5.js.gz +0 -0
  95. package/dist/chunk-H2FZ2NJ7.js.br +0 -0
  96. package/dist/chunk-H2FZ2NJ7.js.gz +0 -0
  97. package/dist/chunk-QDIF3ZXF.mjs.br +0 -0
  98. package/dist/chunk-QDIF3ZXF.mjs.gz +0 -0
  99. package/dist/chunk-SAXG53MO.mjs.br +0 -0
  100. package/dist/chunk-SAXG53MO.mjs.gz +0 -0
  101. package/dist/chunk-USHZUHHG.js.br +0 -0
  102. package/dist/chunk-USHZUHHG.js.gz +0 -0
  103. package/dist/chunk-UUS7QT22.js.br +0 -0
  104. package/dist/chunk-UUS7QT22.js.gz +0 -0
  105. package/dist/chunk-ZZA62IND.mjs.br +0 -0
  106. package/dist/chunk-ZZA62IND.mjs.gz +0 -0
package/CHANGELOG.md CHANGED
@@ -4,6 +4,13 @@ All notable changes to this project are documented here.
4
4
  This file is generated from [Conventional Commits](https://www.conventionalcommits.org)
5
5
  by [git-cliff](https://git-cliff.org); do not edit it by hand.
6
6
 
7
+ ## [2.5.3](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-react-viewer@2.5.3) - 2026-07-27
8
+
9
+ ### Dependencies
10
+
11
+ - **deps:** Update emf-converter requirement from ^2.0.0 to ^2.0.2 ([#122](https://github.com/ChristopherVR/pptx-viewer/issues/122)) (by @dependabot[bot]) ([423034a](https://github.com/ChristopherVR/pptx-viewer/commit/423034ad1e6d48dbb75be17e1915c917c912517b))
12
+ - **deps:** Update html2canvas-pro requirement from ^2.3.1 to ^2.3.2 ([#124](https://github.com/ChristopherVR/pptx-viewer/issues/124)) (by @dependabot[bot]) ([6ad6bce](https://github.com/ChristopherVR/pptx-viewer/commit/6ad6bceecf88670f33e2544dbeb1a98c8b1bf9f6))
13
+
7
14
  ## [2.5.2](https://github.com/ChristopherVR/pptx-viewer/releases/tag/pptx-react-viewer@2.5.2) - 2026-07-27
8
15
 
9
16
  ### Bug Fixes
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var chunkH2FZ2NJ7_js = require('./chunk-H2FZ2NJ7.js');
4
- var chunkFFLUALX5_js = require('./chunk-FFLUALX5.js');
3
+ var chunkVBWWICDF_js = require('./chunk-VBWWICDF.js');
4
+ var chunkNXSAYLYI_js = require('./chunk-NXSAYLYI.js');
5
5
  require('./chunk-25VSL2BB.js');
6
- require('./chunk-23Q3I2LM.js');
6
+ require('./chunk-UVA55CRK.js');
7
7
  require('./chunk-4VNS5WPM.js');
8
8
  var react = require('react');
9
9
  var reactI18next = require('react-i18next');
@@ -30,7 +30,7 @@ function useAiChat(bridge, config) {
30
30
  setInitError(void 0);
31
31
  void (async () => {
32
32
  try {
33
- const available = await chunkH2FZ2NJ7_js.isAiAvailable();
33
+ const available = await chunkVBWWICDF_js.isAiAvailable();
34
34
  if (cancelled) {
35
35
  return;
36
36
  }
@@ -38,7 +38,7 @@ function useAiChat(bridge, config) {
38
38
  setState("unavailable");
39
39
  return;
40
40
  }
41
- const built = await chunkH2FZ2NJ7_js.createAiChatSession(bridge, configRef.current);
41
+ const built = await chunkVBWWICDF_js.createAiChatSession(bridge, configRef.current);
42
42
  if (cancelled) {
43
43
  return;
44
44
  }
@@ -144,7 +144,7 @@ function withDeckContext(inner, bridge, strategy) {
144
144
  }
145
145
  let context = "";
146
146
  try {
147
- context = await chunkH2FZ2NJ7_js.buildDeckContext(bridge, { strategy, focus: {} });
147
+ context = await chunkVBWWICDF_js.buildDeckContext(bridge, { strategy, focus: {} });
148
148
  } catch {
149
149
  context = "";
150
150
  }
@@ -207,7 +207,7 @@ function useAiConversation(session, config, bridge, options = {}) {
207
207
  continue;
208
208
  }
209
209
  seen.add(call.toolCallId);
210
- onToolTargetRef.current?.(chunkH2FZ2NJ7_js.toolCanvasTarget(call.toolName, call.input));
210
+ onToolTargetRef.current?.(chunkVBWWICDF_js.toolCanvasTarget(call.toolName, call.input));
211
211
  }
212
212
  }, [chat.messages]);
213
213
  const send = react.useCallback(
@@ -283,7 +283,7 @@ function deriveTitle(messages) {
283
283
  }
284
284
  function useAiHistory(input) {
285
285
  const { deckId, messages, setMessages } = input;
286
- const store = react.useMemo(() => input.store ?? chunkH2FZ2NJ7_js.createChatHistoryStore(), [input.store]);
286
+ const store = react.useMemo(() => input.store ?? chunkVBWWICDF_js.createChatHistoryStore(), [input.store]);
287
287
  const [activeChatId, setActiveChatId] = react.useState(newChatId);
288
288
  const [chats, setChats] = react.useState([]);
289
289
  const createdAtRef = react.useRef(Date.now());
@@ -426,7 +426,7 @@ function AiComposer({
426
426
  disabled: value.trim().length === 0,
427
427
  title: t("pptx.ai.send"),
428
428
  "aria-label": t("pptx.ai.send"),
429
- className: chunkFFLUALX5_js.cn(
429
+ className: chunkNXSAYLYI_js.cn(
430
430
  "shrink-0 rounded-sm p-1.5 transition-colors",
431
431
  value.trim().length === 0 ? "text-muted-foreground/50" : "bg-primary text-primary-foreground hover:bg-primary/90"
432
432
  ),
@@ -452,15 +452,15 @@ function AiFocusBar({
452
452
  onClearPicks
453
453
  }) {
454
454
  const { t } = reactI18next.useTranslation();
455
- const chips = chunkH2FZ2NJ7_js.focusTargetChips(targets, slides);
456
- const twoTables = chunkH2FZ2NJ7_js.isTwoTableFocus(targets, slides);
455
+ const chips = chunkVBWWICDF_js.focusTargetChips(targets, slides);
456
+ const twoTables = chunkVBWWICDF_js.isTwoTableFocus(targets, slides);
457
457
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-b border-border bg-secondary/30", children: [
458
458
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1 px-2.5 py-1.5", children: [
459
459
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] font-semibold uppercase tracking-wide text-muted-foreground", children: t("pptx.ai.focusScope") }),
460
460
  chips.map((chip) => /* @__PURE__ */ jsxRuntime.jsx(
461
461
  "span",
462
462
  {
463
- className: chunkFFLUALX5_js.cn(
463
+ className: chunkNXSAYLYI_js.cn(
464
464
  "inline-flex max-w-[10rem] items-center rounded-full px-2 py-0.5 text-[11px]",
465
465
  hasPicks || isPinned ? "bg-primary/15 text-primary" : "bg-muted text-muted-foreground"
466
466
  ),
@@ -493,7 +493,7 @@ function AiFocusBar({
493
493
  title: t("pptx.ai.pickElement"),
494
494
  "aria-label": t("pptx.ai.pickAria"),
495
495
  "aria-pressed": pickMode,
496
- className: chunkFFLUALX5_js.cn(
496
+ className: chunkNXSAYLYI_js.cn(
497
497
  "rounded-sm p-1",
498
498
  pickMode ? "bg-primary text-primary-foreground" : "text-muted-foreground hover:bg-accent"
499
499
  ),
@@ -572,7 +572,7 @@ function AiHistoryList({ chats, activeChatId, onResume, onDelete }) {
572
572
  {
573
573
  type: "button",
574
574
  onClick: () => onResume(chat.id),
575
- className: chunkFFLUALX5_js.cn(
575
+ className: chunkNXSAYLYI_js.cn(
576
576
  "flex min-w-0 flex-1 items-start gap-2 rounded-sm px-2 py-1.5 text-left hover:bg-accent",
577
577
  chat.id === activeChatId && "bg-accent/60"
578
578
  ),
@@ -727,26 +727,26 @@ function AiToolCallCard({ part }) {
727
727
  const failed = part.state === "output-error";
728
728
  const done = part.state === "output-available";
729
729
  const running = !failed && !done;
730
- const activity = chunkH2FZ2NJ7_js.describeToolActivity(part.toolName, part.input, running ? "present" : "past");
730
+ const activity = chunkVBWWICDF_js.describeToolActivity(part.toolName, part.input, running ? "present" : "past");
731
731
  const Icon = ICONS[activity.icon] ?? lu.LuWrench;
732
- const rawSummary = chunkH2FZ2NJ7_js.summarizeToolArgs(part.input);
732
+ const rawSummary = chunkVBWWICDF_js.summarizeToolArgs(part.input);
733
733
  const statusLabel = failed ? t("pptx.ai.toolFailed") : done ? t("pptx.ai.toolDone") : t("pptx.ai.toolRunning");
734
734
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[12px]", children: [
735
735
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
736
736
  /* @__PURE__ */ jsxRuntime.jsx(
737
737
  Icon,
738
738
  {
739
- className: chunkFFLUALX5_js.cn(
739
+ className: chunkNXSAYLYI_js.cn(
740
740
  "w-3.5 h-3.5 shrink-0",
741
741
  failed ? "text-destructive" : "text-muted-foreground"
742
742
  )
743
743
  }
744
744
  ),
745
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkFFLUALX5_js.cn("truncate", failed ? "text-destructive" : "text-foreground"), children: activity.label }),
745
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkNXSAYLYI_js.cn("truncate", failed ? "text-destructive" : "text-foreground"), children: activity.label }),
746
746
  /* @__PURE__ */ jsxRuntime.jsxs(
747
747
  "span",
748
748
  {
749
- className: chunkFFLUALX5_js.cn(
749
+ className: chunkNXSAYLYI_js.cn(
750
750
  "ml-auto inline-flex items-center gap-1 rounded-sm px-1.5 py-0.5 text-[10px]",
751
751
  failed ? "bg-destructive/15 text-destructive" : done ? "bg-primary/10 text-primary" : "bg-muted text-muted-foreground"
752
752
  ),
@@ -763,7 +763,7 @@ function AiToolCallCard({ part }) {
763
763
  rawSummary && /* @__PURE__ */ jsxRuntime.jsxs("details", { className: "group mt-0.5 pl-5", children: [
764
764
  /* @__PURE__ */ jsxRuntime.jsx("summary", { className: "cursor-pointer list-none text-[10px] text-muted-foreground/70 hover:text-muted-foreground", children: t("pptx.ai.toolDetails") }),
765
765
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-0.5 break-words font-mono text-[10px] text-muted-foreground/80", children: [
766
- chunkH2FZ2NJ7_js.toolLabel(part.toolName),
766
+ chunkVBWWICDF_js.toolLabel(part.toolName),
767
767
  ": ",
768
768
  rawSummary
769
769
  ] })
@@ -794,7 +794,7 @@ function AiMessageList({ messages, isStreaming, bridge }) {
794
794
  /* @__PURE__ */ jsxRuntime.jsx(
795
795
  "div",
796
796
  {
797
- className: chunkFFLUALX5_js.cn(
797
+ className: chunkNXSAYLYI_js.cn(
798
798
  "mt-0.5 flex h-6 w-6 shrink-0 items-center justify-center rounded-full",
799
799
  isUser ? "bg-secondary text-muted-foreground" : "bg-primary/15 text-primary"
800
800
  ),
@@ -841,7 +841,7 @@ function AiMessageList({ messages, isStreaming, bridge }) {
841
841
  }
842
842
  function AiProposalCard({ proposal, onAccept, onReject }) {
843
843
  const { t } = reactI18next.useTranslation();
844
- const lines = proposal.summary.map(chunkH2FZ2NJ7_js.humanizeDiffLine);
844
+ const lines = proposal.summary.map(chunkVBWWICDF_js.humanizeDiffLine);
845
845
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-md border border-primary/40 bg-primary/5 p-2.5", children: [
846
846
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-1.5 text-[11px] font-semibold uppercase tracking-wide text-primary", children: t("pptx.ai.proposedChange") }),
847
847
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[12px] font-medium text-foreground", children: proposal.label }),
Binary file
Binary file
@@ -1,7 +1,7 @@
1
- import { isAiAvailable, createAiChatSession, toolCanvasTarget, createChatHistoryStore, focusTargetChips, isTwoTableFocus, humanizeDiffLine, buildDeckContext, describeToolActivity, summarizeToolArgs, toolLabel } from './chunk-SAXG53MO.mjs';
2
- import { cn } from './chunk-QDIF3ZXF.mjs';
1
+ import { isAiAvailable, createAiChatSession, toolCanvasTarget, createChatHistoryStore, focusTargetChips, isTwoTableFocus, humanizeDiffLine, buildDeckContext, describeToolActivity, summarizeToolArgs, toolLabel } from './chunk-PENV7S7Z.mjs';
2
+ import { cn } from './chunk-DWQJW3UM.mjs';
3
3
  import './chunk-Z6HIZWIQ.mjs';
4
- import './chunk-6KOM27PS.mjs';
4
+ import './chunk-34ZW32XK.mjs';
5
5
  import './chunk-XGB3TDIC.mjs';
6
6
  import { useMemo, useRef, useState, useEffect, useReducer, useCallback } from 'react';
7
7
  import { useTranslation } from 'react-i18next';
Binary file
Binary file
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunk23Q3I2LM_js = require('./chunk-23Q3I2LM.js');
3
+ var chunkUVA55CRK_js = require('./chunk-UVA55CRK.js');
4
4
  require('./chunk-4VNS5WPM.js');
5
5
  var react = require('react');
6
6
  var jsxRuntime = require('react/jsx-runtime');
@@ -14,7 +14,7 @@ function Model3DScene({ modelUrl, interactive, width, height }) {
14
14
  return;
15
15
  }
16
16
  let disposed = false;
17
- void chunk23Q3I2LM_js.mountModel3D(container, modelUrl, { width, height, interactive }).then((handle) => {
17
+ void chunkUVA55CRK_js.mountModel3D(container, modelUrl, { width, height, interactive }).then((handle) => {
18
18
  if (disposed) {
19
19
  handle.dispose();
20
20
  } else {
Binary file
Binary file
@@ -1,4 +1,4 @@
1
- import { mountModel3D } from './chunk-6KOM27PS.mjs';
1
+ import { mountModel3D } from './chunk-34ZW32XK.mjs';
2
2
  import './chunk-XGB3TDIC.mjs';
3
3
  import { useRef, useEffect } from 'react';
4
4
  import { jsx } from 'react/jsx-runtime';
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunk23Q3I2LM_js = require('./chunk-23Q3I2LM.js');
3
+ var chunkUVA55CRK_js = require('./chunk-UVA55CRK.js');
4
4
  require('./chunk-4VNS5WPM.js');
5
5
  var react = require('react');
6
6
  var jsxRuntime = require('react/jsx-runtime');
@@ -25,7 +25,7 @@ function SurfaceChart3DScene({
25
25
  return;
26
26
  }
27
27
  let disposed = false;
28
- void chunk23Q3I2LM_js.mountSurfaceChart3D(container, {
28
+ void chunkUVA55CRK_js.mountSurfaceChart3D(container, {
29
29
  cols,
30
30
  rows,
31
31
  heightMap,
@@ -1,4 +1,4 @@
1
- import { mountSurfaceChart3D } from './chunk-6KOM27PS.mjs';
1
+ import { mountSurfaceChart3D } from './chunk-34ZW32XK.mjs';
2
2
  import './chunk-XGB3TDIC.mjs';
3
3
  import { useRef, useEffect } from 'react';
4
4
  import { jsxs, jsx } from 'react/jsx-runtime';