pptx-react-viewer 1.22.1 → 1.22.2

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 (40) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/dist/{chunk-DZUI64SO.mjs → chunk-3MZ7IARF.mjs} +9 -0
  3. package/dist/chunk-3MZ7IARF.mjs.br +0 -0
  4. package/dist/{chunk-DZUI64SO.mjs.gz → chunk-3MZ7IARF.mjs.gz} +0 -0
  5. package/dist/{chunk-YPZV4KJT.js → chunk-JUFGTL2A.js} +398 -395
  6. package/dist/chunk-JUFGTL2A.js.br +0 -0
  7. package/dist/chunk-JUFGTL2A.js.gz +0 -0
  8. package/dist/{chunk-QVQTDWB7.js → chunk-KA7ST7IH.js} +9 -0
  9. package/dist/chunk-KA7ST7IH.js.br +0 -0
  10. package/dist/{chunk-QVQTDWB7.js.gz → chunk-KA7ST7IH.js.gz} +0 -0
  11. package/dist/{chunk-B7JRQB5F.mjs → chunk-OIAKQGMC.mjs} +7 -4
  12. package/dist/chunk-OIAKQGMC.mjs.br +0 -0
  13. package/dist/chunk-OIAKQGMC.mjs.gz +0 -0
  14. package/dist/hooks-unstable.d.ts +3 -0
  15. package/dist/hooks-unstable.d.ts.map +1 -1
  16. package/dist/hooks-unstable.js +71 -71
  17. package/dist/hooks-unstable.js.br +0 -0
  18. package/dist/hooks-unstable.js.gz +0 -0
  19. package/dist/hooks-unstable.mjs +1 -1
  20. package/dist/hooks-unstable.mjs.br +0 -0
  21. package/dist/hooks-unstable.mjs.gz +0 -0
  22. package/dist/index.js +7 -7
  23. package/dist/index.js.br +0 -0
  24. package/dist/index.js.gz +0 -0
  25. package/dist/index.mjs +2 -2
  26. package/dist/index.mjs.br +0 -0
  27. package/dist/index.mjs.gz +0 -0
  28. package/dist/viewer/index.js +18 -18
  29. package/dist/viewer/index.js.br +0 -0
  30. package/dist/viewer/index.js.gz +0 -0
  31. package/dist/viewer/index.mjs +2 -2
  32. package/dist/viewer/index.mjs.br +0 -0
  33. package/dist/viewer/index.mjs.gz +0 -0
  34. package/package.json +1 -1
  35. package/dist/chunk-B7JRQB5F.mjs.br +0 -0
  36. package/dist/chunk-B7JRQB5F.mjs.gz +0 -0
  37. package/dist/chunk-DZUI64SO.mjs.br +0 -0
  38. package/dist/chunk-QVQTDWB7.js.br +0 -0
  39. package/dist/chunk-YPZV4KJT.js.br +0 -0
  40. package/dist/chunk-YPZV4KJT.js.gz +0 -0
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkQVQTDWB7_js = require('./chunk-QVQTDWB7.js');
3
+ var chunkKA7ST7IH_js = require('./chunk-KA7ST7IH.js');
4
4
  var chunkVSNXVKJI_js = require('./chunk-VSNXVKJI.js');
5
5
  var chunkZISXRMDJ_js = require('./chunk-ZISXRMDJ.js');
6
6
  var chunkAD3EAEY6_js = require('./chunk-AD3EAEY6.js');
@@ -42,7 +42,7 @@ function CollaborationProvider({
42
42
  canvasHeight,
43
43
  children
44
44
  }) {
45
- const value = chunkQVQTDWB7_js.useCollaborativeState({
45
+ const value = chunkKA7ST7IH_js.useCollaborativeState({
46
46
  config,
47
47
  canvasWidth,
48
48
  canvasHeight
@@ -474,7 +474,7 @@ function LoadingState({ className }) {
474
474
  role: "status",
475
475
  "aria-live": "polite",
476
476
  "aria-atomic": "true",
477
- className: chunkQVQTDWB7_js.cn(
477
+ className: chunkKA7ST7IH_js.cn(
478
478
  "h-full w-full flex items-center justify-center text-muted-foreground",
479
479
  className
480
480
  ),
@@ -497,7 +497,7 @@ function ErrorState({ className, error }) {
497
497
  {
498
498
  role: "alert",
499
499
  "aria-live": "assertive",
500
- className: chunkQVQTDWB7_js.cn(
500
+ className: chunkKA7ST7IH_js.cn(
501
501
  "h-full w-full flex items-center justify-center p-6 text-center text-red-400",
502
502
  className
503
503
  ),
@@ -528,7 +528,7 @@ function ShortcutPanel({ isOpen, onClose }) {
528
528
  }
529
529
  )
530
530
  ] }),
531
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children: chunkQVQTDWB7_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut) => /* @__PURE__ */ jsxRuntime.jsxs(
531
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children: chunkKA7ST7IH_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut) => /* @__PURE__ */ jsxRuntime.jsxs(
532
532
  "div",
533
533
  {
534
534
  className: "flex items-center justify-between gap-3 rounded bg-muted/80 px-2 py-1.5",
@@ -588,14 +588,14 @@ function AccessibilityPanel({
588
588
  "aria-label": t("pptx.accessibility.reduceMotion"),
589
589
  "aria-checked": reducedMotion ?? false,
590
590
  onClick: onToggleReducedMotion,
591
- className: chunkQVQTDWB7_js.cn(
591
+ className: chunkKA7ST7IH_js.cn(
592
592
  "relative inline-flex h-5 w-9 items-center rounded-full transition-colors",
593
593
  reducedMotion ? "bg-primary" : "bg-muted-foreground/30"
594
594
  ),
595
595
  children: /* @__PURE__ */ jsxRuntime.jsx(
596
596
  "span",
597
597
  {
598
- className: chunkQVQTDWB7_js.cn(
598
+ className: chunkKA7ST7IH_js.cn(
599
599
  "inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform",
600
600
  reducedMotion ? "translate-x-4" : "translate-x-0.5"
601
601
  )
@@ -614,7 +614,7 @@ function AccessibilityPanel({
614
614
  "div",
615
615
  {
616
616
  role: "listitem",
617
- className: chunkQVQTDWB7_js.cn(
617
+ className: chunkKA7ST7IH_js.cn(
618
618
  "flex items-start gap-2 rounded px-2 py-1.5 text-xs",
619
619
  /* Severity-based background and text colouring */
620
620
  issue.severity === "error" ? "bg-red-900/30 text-red-300" : issue.severity === "warning" ? "bg-amber-900/30 text-amber-300" : "bg-muted/50 text-muted-foreground"
@@ -738,7 +738,7 @@ function StatusBar({
738
738
  /* @__PURE__ */ jsxRuntime.jsx(
739
739
  "span",
740
740
  {
741
- className: chunkQVQTDWB7_js.cn(
741
+ className: chunkKA7ST7IH_js.cn(
742
742
  "shrink-0 max-md:hidden",
743
743
  autosaveStatus?.state === "error" ? "text-red-400" : autosaveStatus?.state === "saving" ? "text-yellow-400" : ""
744
744
  ),
@@ -751,7 +751,7 @@ function StatusBar({
751
751
  {
752
752
  type: "button",
753
753
  onClick: onToggleNotes,
754
- className: chunkQVQTDWB7_js.cn(
754
+ className: chunkKA7ST7IH_js.cn(
755
755
  vb,
756
756
  "flex items-center gap-1 text-[10px]",
757
757
  isNotesExpanded && "text-primary"
@@ -771,7 +771,7 @@ function StatusBar({
771
771
  {
772
772
  type: "button",
773
773
  onClick: () => onSetMode("edit"),
774
- className: chunkQVQTDWB7_js.cn(vb, mode === "edit" && "text-primary"),
774
+ className: chunkKA7ST7IH_js.cn(vb, mode === "edit" && "text-primary"),
775
775
  title: t("pptx.statusBar.normalView"),
776
776
  "aria-label": t("pptx.statusBar.normalView"),
777
777
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuMonitor, { className: "w-3.5 h-3.5" })
@@ -793,7 +793,7 @@ function StatusBar({
793
793
  {
794
794
  type: "button",
795
795
  onClick: () => onSetMode("present"),
796
- className: chunkQVQTDWB7_js.cn(vb, mode === "present" && "text-primary"),
796
+ className: chunkKA7ST7IH_js.cn(vb, mode === "present" && "text-primary"),
797
797
  title: t("pptx.statusBar.slideShow"),
798
798
  "aria-label": t("pptx.statusBar.slideShow"),
799
799
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPresentation, { className: "w-3.5 h-3.5" })
@@ -883,7 +883,7 @@ function ResizeHandle({
883
883
  {
884
884
  role: "separator",
885
885
  "aria-orientation": direction,
886
- className: chunkQVQTDWB7_js.cn(
886
+ className: chunkKA7ST7IH_js.cn(
887
887
  // Outer container: generous hit area for easy clicking.
888
888
  // The visible indicator is rendered via the inner pseudo-element (::after).
889
889
  "relative flex-shrink-0 z-20 group",
@@ -894,7 +894,7 @@ function ResizeHandle({
894
894
  children: /* @__PURE__ */ jsxRuntime.jsx(
895
895
  "div",
896
896
  {
897
- className: chunkQVQTDWB7_js.cn(
897
+ className: chunkKA7ST7IH_js.cn(
898
898
  "absolute transition-colors",
899
899
  direction === "horizontal" ? "top-0 bottom-0 left-1/2 -translate-x-1/2 w-0.5 group-hover:w-1 group-hover:bg-primary/40 group-active:w-1 group-active:bg-primary/60" : "left-0 right-0 top-1/2 -translate-y-1/2 h-0.5 group-hover:h-1 group-hover:bg-primary/40 group-active:h-1 group-active:bg-primary/60"
900
900
  )
@@ -961,7 +961,7 @@ function ChartElementView({
961
961
  const selectedPart = selection?.elementId === element.id ? selection.part : null;
962
962
  const canEdit = editable && Boolean(onUpdateElement);
963
963
  const viewModel = React14.useMemo(
964
- () => canEdit ? chunkQVQTDWB7_js.buildReactChartViewModel(element) : null,
964
+ () => canEdit ? chunkKA7ST7IH_js.buildReactChartViewModel(element) : null,
965
965
  [canEdit, element]
966
966
  );
967
967
  React14.useEffect(ensureInteractionStyles, []);
@@ -1107,7 +1107,7 @@ function ChartElementView({
1107
1107
  onPointerUp: handlePointerUp,
1108
1108
  onDoubleClick: handleDoubleClick,
1109
1109
  children: [
1110
- chunkQVQTDWB7_js.renderChartElement(renderedElement),
1110
+ chunkKA7ST7IH_js.renderChartElement(renderedElement),
1111
1111
  dragValue !== null && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-1 right-1 z-10 rounded bg-primary/90 px-1.5 py-0.5 text-[10px] font-medium text-white pointer-events-none", children: chunkVSNXVKJI_js.formatAxisValue(dragValue) }),
1112
1112
  titleDraft !== null && /* @__PURE__ */ jsxRuntime.jsx(
1113
1113
  "input",
@@ -1300,7 +1300,7 @@ function renderImg(el, style, filter, alt, opacity) {
1300
1300
  ...filter ? { filter } : {},
1301
1301
  ...opacity !== void 0 ? { opacity } : {}
1302
1302
  };
1303
- if (chunkQVQTDWB7_js.isImageTiled(el)) {
1303
+ if (chunkKA7ST7IH_js.isImageTiled(el)) {
1304
1304
  const tileSrc = imgSrc(el);
1305
1305
  if (!tileSrc) {
1306
1306
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-gray-500 bg-gray-100", children: "Image" });
@@ -1311,7 +1311,7 @@ function renderImg(el, style, filter, alt, opacity) {
1311
1311
  "div",
1312
1312
  {
1313
1313
  className: "pointer-events-none select-none w-full h-full",
1314
- style: { ...chunkQVQTDWB7_js.getImageTilingStyle(el), ...effectStyles }
1314
+ style: { ...chunkKA7ST7IH_js.getImageTilingStyle(el), ...effectStyles }
1315
1315
  }
1316
1316
  )
1317
1317
  ] });
@@ -1320,7 +1320,7 @@ function renderImg(el, style, filter, alt, opacity) {
1320
1320
  chunkAD3EAEY6_js.isImageLikeElement(el) ? el.imageEffects?.colorWash : void 0
1321
1321
  );
1322
1322
  const clrChange = "imageEffects" in el ? el.imageEffects?.clrChange : void 0;
1323
- const duotoneColors = chunkQVQTDWB7_js.getDuotoneColors(el);
1323
+ const duotoneColors = chunkKA7ST7IH_js.getDuotoneColors(el);
1324
1324
  const useDuotoneCanvas = Boolean(duotoneColors && !clrChange);
1325
1325
  const filterForImg = useDuotoneCanvas ? chunkVSNXVKJI_js.getImageEffectsFilter(el, { excludeDuotone: true }) : filter;
1326
1326
  const canvasEffectStyles = {
@@ -1533,7 +1533,7 @@ function ResizeHandles({
1533
1533
  "button",
1534
1534
  {
1535
1535
  type: "button",
1536
- className: chunkQVQTDWB7_js.cn("absolute z-10 group", posClass, cursor),
1536
+ className: chunkKA7ST7IH_js.cn("absolute z-10 group", posClass, cursor),
1537
1537
  style: peStyle,
1538
1538
  onPointerDown: (e) => handleResizePointer(e, handle),
1539
1539
  onMouseDown: (e) => {
@@ -1551,7 +1551,7 @@ function ResizeHandles({
1551
1551
  "button",
1552
1552
  {
1553
1553
  type: "button",
1554
- className: chunkQVQTDWB7_js.cn("absolute z-10", posClass, cursor),
1554
+ className: chunkKA7ST7IH_js.cn("absolute z-10", posClass, cursor),
1555
1555
  style: peStyle,
1556
1556
  onPointerDown: (e) => handleResizePointer(e, handle),
1557
1557
  onMouseDown: (e) => {
@@ -1559,7 +1559,7 @@ function ResizeHandles({
1559
1559
  onResizePointerDown(elementId, e, handle);
1560
1560
  },
1561
1561
  children: [
1562
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkQVQTDWB7_js.cn(sizeClass, "border border-white bg-primary shadow") }),
1562
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkKA7ST7IH_js.cn(sizeClass, "border border-white bg-primary shadow") }),
1563
1563
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -inset-2 max-md:-inset-1" })
1564
1564
  ]
1565
1565
  },
@@ -1640,7 +1640,7 @@ var ConnectorElementRenderer = React14__default.default.memo(
1640
1640
  const viewHeight = Math.max(el.height, 1);
1641
1641
  const ss = shapeEl?.shapeStyle;
1642
1642
  const strokeWidth = Math.max(0, ss?.strokeWidth ?? 2);
1643
- const strokeColor = chunkVSNXVKJI_js.normalizeHexColor(ss?.strokeColor, chunkQVQTDWB7_js.DEFAULT_STROKE_COLOR);
1643
+ const strokeColor = chunkVSNXVKJI_js.normalizeHexColor(ss?.strokeColor, chunkKA7ST7IH_js.DEFAULT_STROKE_COLOR);
1644
1644
  const strokePaint = chunkVSNXVKJI_js.colorWithOpacity(strokeColor, ss?.strokeOpacity);
1645
1645
  const dashType = chunkVSNXVKJI_js.normalizeStrokeDashType(ss?.strokeDash);
1646
1646
  const dashArray = chunkVSNXVKJI_js.getSvgStrokeDasharray(
@@ -1661,7 +1661,7 @@ var ConnectorElementRenderer = React14__default.default.memo(
1661
1661
  const connectorText = textEl?.text?.trim() ?? "";
1662
1662
  const connectorTextSegments = textEl?.textSegments;
1663
1663
  const connectorTextStyle = textEl?.textStyle;
1664
- const pathGeometry = shapeEl ? chunkQVQTDWB7_js.getConnectorPathGeometry(shapeEl) : {
1664
+ const pathGeometry = shapeEl ? chunkKA7ST7IH_js.getConnectorPathGeometry(shapeEl) : {
1665
1665
  pathData: `M 0 0 L ${viewWidth} ${viewHeight}`,
1666
1666
  startX: 0,
1667
1667
  startY: 0,
@@ -1670,8 +1670,8 @@ var ConnectorElementRenderer = React14__default.default.memo(
1670
1670
  };
1671
1671
  const hitTargetWidth = Math.max(strokeWidth * 3, 14);
1672
1672
  const selColor = selClr === "blue-400" ? "#60a5fa" : "#3b82f6";
1673
- const lineShadow = chunkQVQTDWB7_js.buildLineShadowCss(el);
1674
- const lineGlow = chunkQVQTDWB7_js.buildLineGlowFilter(el);
1673
+ const lineShadow = chunkKA7ST7IH_js.buildLineShadowCss(el);
1674
+ const lineGlow = chunkKA7ST7IH_js.buildLineGlowFilter(el);
1675
1675
  return /* @__PURE__ */ jsxRuntime.jsxs(
1676
1676
  "div",
1677
1677
  {
@@ -1681,8 +1681,8 @@ var ConnectorElementRenderer = React14__default.default.memo(
1681
1681
  style: {
1682
1682
  left: el.x,
1683
1683
  top: el.y,
1684
- width: Math.max(el.width, chunkQVQTDWB7_js.MIN_ELEMENT_SIZE),
1685
- height: Math.max(el.height, chunkQVQTDWB7_js.MIN_ELEMENT_SIZE),
1684
+ width: Math.max(el.width, chunkKA7ST7IH_js.MIN_ELEMENT_SIZE),
1685
+ height: Math.max(el.height, chunkKA7ST7IH_js.MIN_ELEMENT_SIZE),
1686
1686
  transform: chunkVSNXVKJI_js.getElementTransform(el),
1687
1687
  transformOrigin: "center",
1688
1688
  background: "transparent",
@@ -1704,14 +1704,14 @@ var ConnectorElementRenderer = React14__default.default.memo(
1704
1704
  style: { overflow: "visible", pointerEvents: "none" },
1705
1705
  children: [
1706
1706
  /* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
1707
- chunkQVQTDWB7_js.renderConnectorMarker(
1707
+ chunkKA7ST7IH_js.renderConnectorMarker(
1708
1708
  startMarkerId,
1709
1709
  startArrow,
1710
1710
  strokePaint,
1711
1711
  ss?.connectorStartArrowWidth,
1712
1712
  ss?.connectorStartArrowLength
1713
1713
  ),
1714
- chunkQVQTDWB7_js.renderConnectorMarker(
1714
+ chunkKA7ST7IH_js.renderConnectorMarker(
1715
1715
  endMarkerId,
1716
1716
  endArrow,
1717
1717
  strokePaint,
@@ -1923,14 +1923,14 @@ function elementHasTextHyperlink(el) {
1923
1923
  return Boolean(el.textSegments?.some((segment) => Boolean(segment.style?.hyperlink)));
1924
1924
  }
1925
1925
  function renderDagDuotoneFilterForElement(el) {
1926
- if (!chunkQVQTDWB7_js.hasDagDuotoneEffect(el)) {
1926
+ if (!chunkKA7ST7IH_js.hasDagDuotoneEffect(el)) {
1927
1927
  return null;
1928
1928
  }
1929
1929
  const duotone = el.shapeStyle?.dagDuotone;
1930
1930
  if (!duotone) {
1931
1931
  return null;
1932
1932
  }
1933
- return chunkQVQTDWB7_js.renderDagDuotoneSvgFilter(el.id, duotone.color1, duotone.color2);
1933
+ return chunkKA7ST7IH_js.renderDagDuotoneSvgFilter(el.id, duotone.color1, duotone.color2);
1934
1934
  }
1935
1935
  function getContainerStyle({
1936
1936
  el,
@@ -1947,12 +1947,12 @@ function getContainerStyle({
1947
1947
  return {
1948
1948
  left: isFullscreenMedia ? 0 : el.x,
1949
1949
  top: isFullscreenMedia ? 0 : el.y,
1950
- width: isFullscreenMedia ? "100%" : Math.max(el.width, chunkQVQTDWB7_js.MIN_ELEMENT_SIZE),
1951
- height: isFullscreenMedia ? "100%" : Math.max(el.height, chunkQVQTDWB7_js.MIN_ELEMENT_SIZE),
1950
+ width: isFullscreenMedia ? "100%" : Math.max(el.width, chunkKA7ST7IH_js.MIN_ELEMENT_SIZE),
1951
+ height: isFullscreenMedia ? "100%" : Math.max(el.height, chunkKA7ST7IH_js.MIN_ELEMENT_SIZE),
1952
1952
  transform: isFullscreenMedia ? "none" : chunkVSNXVKJI_js.getElementTransform(el),
1953
1953
  transformOrigin: "center",
1954
1954
  overflow: overflowValue,
1955
- clipPath: isImg && !has3DExtrusion ? chunkQVQTDWB7_js.getCropShapeClipPath(el) : void 0,
1955
+ clipPath: isImg && !has3DExtrusion ? chunkKA7ST7IH_js.getCropShapeClipPath(el) : void 0,
1956
1956
  zIndex: isFullscreenMedia ? 20 : zIndex,
1957
1957
  opacity,
1958
1958
  visibility: animationState?.visible === false ? "hidden" : "visible",
@@ -1986,8 +1986,8 @@ function ActionIndicator({
1986
1986
  function shapeParams(element) {
1987
1987
  const style = chunkAD3EAEY6_js.hasShapeProperties(element) ? element.shapeStyle : void 0;
1988
1988
  const strokeWidth = Math.max(0, style?.strokeWidth || 0);
1989
- const strokeColor = chunkVSNXVKJI_js.normalizeHexColor(style?.strokeColor, chunkQVQTDWB7_js.DEFAULT_STROKE_COLOR);
1990
- const fillColor = chunkVSNXVKJI_js.normalizeHexColor(style?.fillColor, chunkQVQTDWB7_js.DEFAULT_FILL_COLOR);
1989
+ const strokeColor = chunkVSNXVKJI_js.normalizeHexColor(style?.strokeColor, chunkKA7ST7IH_js.DEFAULT_STROKE_COLOR);
1990
+ const fillColor = chunkVSNXVKJI_js.normalizeHexColor(style?.fillColor, chunkKA7ST7IH_js.DEFAULT_FILL_COLOR);
1991
1991
  const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(chunkVSNXVKJI_js.buildCssGradientFromShapeStyle(style) || style?.fillGradient) || style?.fillMode === "pattern" && Boolean(style.fillPatternPreset);
1992
1992
  return { hf: hasFill, fc: fillColor, sw: strokeWidth, sc: strokeColor };
1993
1993
  }
@@ -2109,15 +2109,15 @@ var ElementRenderer = React14__default.default.memo(
2109
2109
  const elementLocks = el.locks;
2110
2110
  const isTxt = chunkVSNXVKJI_js.isEditableTextElement(el) && !elementLocks?.noTextEdit;
2111
2111
  const txtSE = chunkAD3EAEY6_js.hasTextProperties(el) ? el.textStyle : void 0;
2112
- const ss = chunkQVQTDWB7_js.getShapeVisualStyle(el, hf, fc, sw, sc);
2113
- const ts = chunkQVQTDWB7_js.getTextStyleForElement(el, chunkQVQTDWB7_js.DEFAULT_TEXT_COLOR);
2114
- const vs = chunkQVQTDWB7_js.renderVectorShape(el, hf, fc, sw, sc);
2112
+ const ss = chunkKA7ST7IH_js.getShapeVisualStyle(el, hf, fc, sw, sc);
2113
+ const ts = chunkKA7ST7IH_js.getTextStyleForElement(el, chunkKA7ST7IH_js.DEFAULT_TEXT_COLOR);
2114
+ const vs = chunkKA7ST7IH_js.renderVectorShape(el, hf, fc, sw, sc);
2115
2115
  const isImg = el.type === "picture" || el.type === "image";
2116
2116
  const isModel3D = el.type === "model3d";
2117
- const isConn = chunkQVQTDWB7_js.isConnectorOrLineElement(el);
2117
+ const isConn = chunkKA7ST7IH_js.isConnectorOrLineElement(el);
2118
2118
  const shapeStyle3d = chunkAD3EAEY6_js.hasShapeProperties(el) ? el.shapeStyle : void 0;
2119
2119
  const extrusionData = React14.useMemo(
2120
- () => chunkQVQTDWB7_js.build3DExtrusionData(shapeStyle3d?.shape3d, shapeStyle3d?.scene3d, fc, el.width, el.height),
2120
+ () => chunkKA7ST7IH_js.build3DExtrusionData(shapeStyle3d?.shape3d, shapeStyle3d?.scene3d, fc, el.width, el.height),
2121
2121
  [shapeStyle3d?.shape3d, shapeStyle3d?.scene3d, fc, el.width, el.height]
2122
2122
  );
2123
2123
  const [isMediaPlaying, setIsMediaPlaying] = React14.useState(false);
@@ -2181,7 +2181,7 @@ var ElementRenderer = React14__default.default.memo(
2181
2181
  "aria-roledescription": ariaRoleDescription,
2182
2182
  "aria-selected": isSelected ? true : void 0,
2183
2183
  tabIndex: isFocusable ? 0 : -1,
2184
- className: chunkQVQTDWB7_js.cn(
2184
+ className: chunkKA7ST7IH_js.cn(
2185
2185
  "absolute border",
2186
2186
  "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-500",
2187
2187
  cur,
@@ -2214,7 +2214,7 @@ var ElementRenderer = React14__default.default.memo(
2214
2214
  txtSE,
2215
2215
  txtS: ts,
2216
2216
  vecShape: vs,
2217
- imgStyle: chunkQVQTDWB7_js.getImageRenderStyle(el),
2217
+ imgStyle: chunkKA7ST7IH_js.getImageRenderStyle(el),
2218
2218
  imgFilter: chunkVSNXVKJI_js.getImageEffectsFilter(el),
2219
2219
  imgOpacity: chunkVSNXVKJI_js.getImageEffectsOpacity(el),
2220
2220
  imgAlt: imageAltText,
@@ -2358,9 +2358,9 @@ function renderInk(el, options) {
2358
2358
  function renderGroup(children) {
2359
2359
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative w-full h-full pointer-events-none", children: children.map((c, childIndex) => {
2360
2360
  const { hf, fc, sw, sc } = shapeParams(c);
2361
- const ss = chunkQVQTDWB7_js.getShapeVisualStyle(c, hf, fc, sw, sc);
2362
- const vs = chunkQVQTDWB7_js.renderVectorShape(c, hf, fc, sw, sc);
2363
- const ts = chunkQVQTDWB7_js.getTextStyleForElement(c, chunkQVQTDWB7_js.DEFAULT_TEXT_COLOR);
2361
+ const ss = chunkKA7ST7IH_js.getShapeVisualStyle(c, hf, fc, sw, sc);
2362
+ const vs = chunkKA7ST7IH_js.renderVectorShape(c, hf, fc, sw, sc);
2363
+ const ts = chunkKA7ST7IH_js.getTextStyleForElement(c, chunkKA7ST7IH_js.DEFAULT_TEXT_COLOR);
2364
2364
  const isTxt = chunkVSNXVKJI_js.isEditableTextElement(c);
2365
2365
  const isI = c.type === "picture" || c.type === "image";
2366
2366
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -2370,12 +2370,12 @@ function renderGroup(children) {
2370
2370
  style: {
2371
2371
  left: c.x,
2372
2372
  top: c.y,
2373
- width: Math.max(c.width, chunkQVQTDWB7_js.MIN_ELEMENT_SIZE),
2374
- height: Math.max(c.height, chunkQVQTDWB7_js.MIN_ELEMENT_SIZE),
2373
+ width: Math.max(c.width, chunkKA7ST7IH_js.MIN_ELEMENT_SIZE),
2374
+ height: Math.max(c.height, chunkKA7ST7IH_js.MIN_ELEMENT_SIZE),
2375
2375
  transform: chunkVSNXVKJI_js.getElementTransform(c),
2376
2376
  transformOrigin: "center",
2377
2377
  overflow: isI ? "hidden" : void 0,
2378
- clipPath: isI ? chunkQVQTDWB7_js.getCropShapeClipPath(c) : void 0,
2378
+ clipPath: isI ? chunkKA7ST7IH_js.getCropShapeClipPath(c) : void 0,
2379
2379
  ...ss,
2380
2380
  // Explicit z-index preserves document order stacking within the
2381
2381
  // group: later children in the array (= later in p:grpSp XML)
@@ -2383,11 +2383,11 @@ function renderGroup(children) {
2383
2383
  // Placed after ...ss to ensure it is never overwritten.
2384
2384
  zIndex: childIndex
2385
2385
  },
2386
- children: isI && ("svgData" in c && c.svgData || "imageData" in c && c.imageData) ? chunkQVQTDWB7_js.isImageTiled(c) ? /* @__PURE__ */ jsxRuntime.jsx(
2386
+ children: isI && ("svgData" in c && c.svgData || "imageData" in c && c.imageData) ? chunkKA7ST7IH_js.isImageTiled(c) ? /* @__PURE__ */ jsxRuntime.jsx(
2387
2387
  "div",
2388
2388
  {
2389
2389
  className: "pointer-events-none select-none w-full h-full",
2390
- style: chunkQVQTDWB7_js.getImageTilingStyle(c)
2390
+ style: chunkKA7ST7IH_js.getImageTilingStyle(c)
2391
2391
  }
2392
2392
  ) : /* @__PURE__ */ jsxRuntime.jsx(
2393
2393
  "img",
@@ -2395,7 +2395,7 @@ function renderGroup(children) {
2395
2395
  src: "svgData" in c && c.svgData ? c.svgData : c.imageData,
2396
2396
  alt: chunkZISXRMDJ_js.translationsEn["pptx.ink.groupChildAlt"],
2397
2397
  className: "pointer-events-none select-none",
2398
- style: chunkQVQTDWB7_js.getImageRenderStyle(c),
2398
+ style: chunkKA7ST7IH_js.getImageRenderStyle(c),
2399
2399
  draggable: false
2400
2400
  }
2401
2401
  ) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
@@ -2405,7 +2405,7 @@ function renderGroup(children) {
2405
2405
  {
2406
2406
  className: "relative z-10 w-full h-full pointer-events-none whitespace-pre-wrap break-words leading-[1.3]",
2407
2407
  style: ts,
2408
- children: chunkQVQTDWB7_js.renderTextSegments(c, chunkQVQTDWB7_js.DEFAULT_TEXT_COLOR)
2408
+ children: chunkKA7ST7IH_js.renderTextSegments(c, chunkKA7ST7IH_js.DEFAULT_TEXT_COLOR)
2409
2409
  }
2410
2410
  ) : null
2411
2411
  ] })
@@ -2754,7 +2754,7 @@ function InlineTextEditor({
2754
2754
  pending.endOffset
2755
2755
  );
2756
2756
  });
2757
- const warpStyle = chunkQVQTDWB7_js.getTextWarpStyle(textStyleRaw);
2757
+ const warpStyle = chunkKA7ST7IH_js.getTextWarpStyle(textStyleRaw);
2758
2758
  const compensationTransform = chunkVSNXVKJI_js.getTextCompensationTransform(element);
2759
2759
  const warpTransform = warpStyle?.transform;
2760
2760
  const mergedTransform = [compensationTransform, warpTransform].filter(Boolean).join(" ") || void 0;
@@ -2830,7 +2830,7 @@ function InlineTextEditor({
2830
2830
  const text = e.clipboardData.getData("text/plain");
2831
2831
  document.execCommand("insertText", false, text);
2832
2832
  },
2833
- children: seed.hasRichSegments ? chunkQVQTDWB7_js.renderTextSegments(element, chunkQVQTDWB7_js.DEFAULT_TEXT_COLOR) : seed.initialText
2833
+ children: seed.hasRichSegments ? chunkKA7ST7IH_js.renderTextSegments(element, chunkKA7ST7IH_js.DEFAULT_TEXT_COLOR) : seed.initialText
2834
2834
  }
2835
2835
  );
2836
2836
  }
@@ -3401,8 +3401,8 @@ function DrawingShapeRenderer({
3401
3401
  }
3402
3402
  const drawingW = maxX - minX || 1;
3403
3403
  const drawingH = maxY - minY || 1;
3404
- const shadow = chunkQVQTDWB7_js.styleShadow(style);
3405
- const sw = chunkQVQTDWB7_js.styleStroke(style);
3404
+ const shadow = chunkKA7ST7IH_js.styleShadow(style);
3405
+ const sw = chunkKA7ST7IH_js.styleStroke(style);
3406
3406
  return /* @__PURE__ */ jsxRuntime.jsx(
3407
3407
  "svg",
3408
3408
  {
@@ -3411,7 +3411,7 @@ function DrawingShapeRenderer({
3411
3411
  preserveAspectRatio: "xMidYMid meet",
3412
3412
  "data-testid": "smartart-drawing-shapes",
3413
3413
  children: shapes.map((shape, i) => {
3414
- const fill = shape.fillColor ?? chunkQVQTDWB7_js.colour(i, palette);
3414
+ const fill = shape.fillColor ?? chunkKA7ST7IH_js.colour(i, palette);
3415
3415
  const relX = shape.x - minX;
3416
3416
  const relY = shape.y - minY;
3417
3417
  const rx = shape.shapeType === "roundRect" ? Math.min(shape.width, shape.height) * 0.1 : 0;
@@ -3420,10 +3420,10 @@ function DrawingShapeRenderer({
3420
3420
  const rotation = shape.rotation ? `rotate(${shape.rotation} ${relX + shape.width / 2} ${relY + shape.height / 2})` : void 0;
3421
3421
  const strokeCol = shape.strokeColor ?? (sw > 0 ? "rgba(255,255,255,0.3)" : "none");
3422
3422
  const strokeW = shape.strokeWidth ?? sw;
3423
- const fontSize = shape.fontSize ?? chunkQVQTDWB7_js.fitFontSize(shape.text ?? "", shape.width * 0.85, shape.height, 14);
3423
+ const fontSize = shape.fontSize ?? chunkKA7ST7IH_js.fitFontSize(shape.text ?? "", shape.width * 0.85, shape.height, 14);
3424
3424
  const nodeId = nodes ? chunkVSNXVKJI_js.resolveDrawingShapeNodeId(shape, i, shapes, nodes) : void 0;
3425
3425
  const nodeLabel = nodeId ? nodeLabels?.get(nodeId) : void 0;
3426
- const groupProps = nodeId ? chunkQVQTDWB7_js.smartArtNodeGroupProps(nodeId, shadow, nodeLabel) : { style: { filter: shadow } };
3426
+ const groupProps = nodeId ? chunkKA7ST7IH_js.smartArtNodeGroupProps(nodeId, shadow, nodeLabel) : { style: { filter: shadow } };
3427
3427
  return /* @__PURE__ */ jsxRuntime.jsxs("g", { ...groupProps, children: [
3428
3428
  nodeLabel ? /* @__PURE__ */ jsxRuntime.jsx("title", { children: nodeLabel }) : null,
3429
3429
  isEllipse ? /* @__PURE__ */ jsxRuntime.jsx(
@@ -3441,7 +3441,7 @@ function DrawingShapeRenderer({
3441
3441
  ) : isChevron ? /* @__PURE__ */ jsxRuntime.jsx(
3442
3442
  "polygon",
3443
3443
  {
3444
- points: chunkQVQTDWB7_js.chevronPoints(relX, relY, shape.width, shape.height),
3444
+ points: chunkKA7ST7IH_js.chevronPoints(relX, relY, shape.width, shape.height),
3445
3445
  fill,
3446
3446
  stroke: strokeCol,
3447
3447
  strokeWidth: strokeW,
@@ -3462,11 +3462,11 @@ function DrawingShapeRenderer({
3462
3462
  }
3463
3463
  ),
3464
3464
  shape.text ? /* @__PURE__ */ jsxRuntime.jsx(
3465
- chunkQVQTDWB7_js.SmartArtNodeText,
3465
+ chunkKA7ST7IH_js.SmartArtNodeText,
3466
3466
  {
3467
3467
  x: relX + shape.width / 2,
3468
3468
  y: relY + shape.height / 2,
3469
- text: chunkQVQTDWB7_js.truncate(shape.text, 40),
3469
+ text: chunkKA7ST7IH_js.truncate(shape.text, 40),
3470
3470
  fill: shape.fontColor ?? "white",
3471
3471
  fontSize,
3472
3472
  className: "pointer-events-none"
@@ -3482,7 +3482,7 @@ function DrawingShapeRenderer({
3482
3482
  function resolveNodeStyle(node, index, palette) {
3483
3483
  const style = node.style;
3484
3484
  return {
3485
- fill: style?.fillColor ?? chunkQVQTDWB7_js.colour(index, palette),
3485
+ fill: style?.fillColor ?? chunkKA7ST7IH_js.colour(index, palette),
3486
3486
  fontColor: style?.fontColor ?? "white",
3487
3487
  fontWeight: style?.bold ? 700 : void 0,
3488
3488
  fontStyle: style?.italic ? "italic" : void 0,
@@ -3504,8 +3504,8 @@ function ListRenderer({
3504
3504
  const itemH = (usableH - gap * (nodes.length - 1)) / nodes.length;
3505
3505
  const itemW = w - pad * 2;
3506
3506
  const rx = Math.min(6, itemH * 0.15);
3507
- const shadow = chunkQVQTDWB7_js.styleShadow(style);
3508
- const sw = chunkQVQTDWB7_js.styleStroke(style);
3507
+ const shadow = chunkKA7ST7IH_js.styleShadow(style);
3508
+ const sw = chunkKA7ST7IH_js.styleStroke(style);
3509
3509
  return /* @__PURE__ */ jsxRuntime.jsx(
3510
3510
  "svg",
3511
3511
  {
@@ -3515,13 +3515,13 @@ function ListRenderer({
3515
3515
  "data-testid": "smartart-list",
3516
3516
  children: nodes.map((node, i) => {
3517
3517
  const y = pad + i * (itemH + gap);
3518
- const fontSize = chunkQVQTDWB7_js.fitFontSize(node.text, itemW * 0.9, itemH, 12);
3518
+ const fontSize = chunkKA7ST7IH_js.fitFontSize(node.text, itemW * 0.9, itemH, 12);
3519
3519
  const ns = resolveNodeStyle(node, i, palette);
3520
3520
  const label = nodeLabels?.get(node.id);
3521
3521
  return /* @__PURE__ */ jsxRuntime.jsxs(
3522
3522
  "g",
3523
3523
  {
3524
- ...chunkQVQTDWB7_js.smartArtNodeGroupProps(node.id, shadow, label),
3524
+ ...chunkKA7ST7IH_js.smartArtNodeGroupProps(node.id, shadow, label),
3525
3525
  children: [
3526
3526
  label ? /* @__PURE__ */ jsxRuntime.jsx("title", { children: label }) : null,
3527
3527
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -3533,17 +3533,17 @@ function ListRenderer({
3533
3533
  height: itemH,
3534
3534
  rx,
3535
3535
  fill: ns.fill,
3536
- opacity: chunkQVQTDWB7_js.nodeOpacity(i, nodes.length, style),
3536
+ opacity: chunkKA7ST7IH_js.nodeOpacity(i, nodes.length, style),
3537
3537
  stroke: ns.strokeColor ?? (sw > 0 ? "rgba(255,255,255,0.3)" : "none"),
3538
3538
  strokeWidth: sw
3539
3539
  }
3540
3540
  ),
3541
3541
  /* @__PURE__ */ jsxRuntime.jsx(
3542
- chunkQVQTDWB7_js.SmartArtNodeText,
3542
+ chunkKA7ST7IH_js.SmartArtNodeText,
3543
3543
  {
3544
3544
  x: pad + itemW / 2,
3545
3545
  y: y + itemH / 2,
3546
- text: chunkQVQTDWB7_js.truncate(node.text, 40),
3546
+ text: chunkKA7ST7IH_js.truncate(node.text, 40),
3547
3547
  fill: ns.fontColor,
3548
3548
  fontWeight: ns.fontWeight,
3549
3549
  fontStyle: ns.fontStyle,
@@ -3575,8 +3575,8 @@ function ProcessRenderer({
3575
3575
  const itemW = (usableW - gap * (nodes.length - 1)) / nodes.length;
3576
3576
  const itemH = Math.min(h - pad * 2, h * 0.6);
3577
3577
  const yMid = h / 2;
3578
- const shadow = chunkQVQTDWB7_js.styleShadow(style);
3579
- const sw = chunkQVQTDWB7_js.styleStroke(style);
3578
+ const shadow = chunkKA7ST7IH_js.styleShadow(style);
3579
+ const sw = chunkKA7ST7IH_js.styleStroke(style);
3580
3580
  return /* @__PURE__ */ jsxRuntime.jsx(
3581
3581
  "svg",
3582
3582
  {
@@ -3590,13 +3590,13 @@ function ProcessRenderer({
3590
3590
  const isFirst = i === 0;
3591
3591
  const isLast = i === nodes.length - 1;
3592
3592
  const points = isFirst ? `${x},${yMid - halfH} ${x + itemW - chevronDepth},${yMid - halfH} ${x + itemW},${yMid} ${x + itemW - chevronDepth},${yMid + halfH} ${x},${yMid + halfH}` : isLast ? `${x},${yMid - halfH} ${x + itemW},${yMid - halfH} ${x + itemW},${yMid + halfH} ${x},${yMid + halfH} ${x + chevronDepth},${yMid}` : `${x},${yMid - halfH} ${x + itemW - chevronDepth},${yMid - halfH} ${x + itemW},${yMid} ${x + itemW - chevronDepth},${yMid + halfH} ${x},${yMid + halfH} ${x + chevronDepth},${yMid}`;
3593
- const fontSize = chunkQVQTDWB7_js.fitFontSize(node.text, itemW * 0.7, itemH, 12);
3593
+ const fontSize = chunkKA7ST7IH_js.fitFontSize(node.text, itemW * 0.7, itemH, 12);
3594
3594
  const ns = resolveNodeStyle(node, i, palette);
3595
3595
  const label = nodeLabels?.get(node.id);
3596
3596
  return /* @__PURE__ */ jsxRuntime.jsxs(
3597
3597
  "g",
3598
3598
  {
3599
- ...chunkQVQTDWB7_js.smartArtNodeGroupProps(node.id, shadow, label),
3599
+ ...chunkKA7ST7IH_js.smartArtNodeGroupProps(node.id, shadow, label),
3600
3600
  children: [
3601
3601
  label ? /* @__PURE__ */ jsxRuntime.jsx("title", { children: label }) : null,
3602
3602
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -3604,17 +3604,17 @@ function ProcessRenderer({
3604
3604
  {
3605
3605
  points,
3606
3606
  fill: ns.fill,
3607
- opacity: chunkQVQTDWB7_js.nodeOpacity(i, nodes.length, style),
3607
+ opacity: chunkKA7ST7IH_js.nodeOpacity(i, nodes.length, style),
3608
3608
  stroke: ns.strokeColor ?? (sw > 0 ? "rgba(255,255,255,0.3)" : "none"),
3609
3609
  strokeWidth: sw
3610
3610
  }
3611
3611
  ),
3612
3612
  /* @__PURE__ */ jsxRuntime.jsx(
3613
- chunkQVQTDWB7_js.SmartArtNodeText,
3613
+ chunkKA7ST7IH_js.SmartArtNodeText,
3614
3614
  {
3615
3615
  x: x + itemW / 2,
3616
3616
  y: yMid,
3617
- text: chunkQVQTDWB7_js.truncate(node.text, 25),
3617
+ text: chunkKA7ST7IH_js.truncate(node.text, 25),
3618
3618
  fill: ns.fontColor,
3619
3619
  fontWeight: ns.fontWeight,
3620
3620
  fontStyle: ns.fontStyle,
@@ -3644,8 +3644,8 @@ function CycleRenderer({
3644
3644
  const cy = h / 2;
3645
3645
  const radius = size * 0.35;
3646
3646
  const nodeR = Math.max(size * 0.06, Math.min(size * 0.12, 200 / nodes.length));
3647
- const shadow = chunkQVQTDWB7_js.styleShadow(style);
3648
- const sw = chunkQVQTDWB7_js.styleStroke(style);
3647
+ const shadow = chunkKA7ST7IH_js.styleShadow(style);
3648
+ const sw = chunkKA7ST7IH_js.styleStroke(style);
3649
3649
  return /* @__PURE__ */ jsxRuntime.jsxs(
3650
3650
  "svg",
3651
3651
  {
@@ -3684,13 +3684,13 @@ function CycleRenderer({
3684
3684
  const angle = i / nodes.length * Math.PI * 2 - Math.PI / 2;
3685
3685
  const nx = cx + radius * Math.cos(angle);
3686
3686
  const ny = cy + radius * Math.sin(angle);
3687
- const fontSize = chunkQVQTDWB7_js.fitFontSize(node.text, nodeR * 1.4, nodeR * 2, 11);
3687
+ const fontSize = chunkKA7ST7IH_js.fitFontSize(node.text, nodeR * 1.4, nodeR * 2, 11);
3688
3688
  const ns = resolveNodeStyle(node, i, palette);
3689
3689
  const label = nodeLabels?.get(node.id);
3690
3690
  return /* @__PURE__ */ jsxRuntime.jsxs(
3691
3691
  "g",
3692
3692
  {
3693
- ...chunkQVQTDWB7_js.smartArtNodeGroupProps(node.id, shadow, label),
3693
+ ...chunkKA7ST7IH_js.smartArtNodeGroupProps(node.id, shadow, label),
3694
3694
  children: [
3695
3695
  label ? /* @__PURE__ */ jsxRuntime.jsx("title", { children: label }) : null,
3696
3696
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -3700,17 +3700,17 @@ function CycleRenderer({
3700
3700
  cy: ny,
3701
3701
  r: nodeR,
3702
3702
  fill: ns.fill,
3703
- opacity: chunkQVQTDWB7_js.nodeOpacity(i, nodes.length, style),
3703
+ opacity: chunkKA7ST7IH_js.nodeOpacity(i, nodes.length, style),
3704
3704
  stroke: ns.strokeColor ?? (sw > 0 ? "rgba(255,255,255,0.3)" : "none"),
3705
3705
  strokeWidth: sw
3706
3706
  }
3707
3707
  ),
3708
3708
  /* @__PURE__ */ jsxRuntime.jsx(
3709
- chunkQVQTDWB7_js.SmartArtNodeText,
3709
+ chunkKA7ST7IH_js.SmartArtNodeText,
3710
3710
  {
3711
3711
  x: nx,
3712
3712
  y: ny,
3713
- text: chunkQVQTDWB7_js.truncate(node.text, 20),
3713
+ text: chunkKA7ST7IH_js.truncate(node.text, 20),
3714
3714
  fill: ns.fontColor,
3715
3715
  fontWeight: ns.fontWeight,
3716
3716
  fontStyle: ns.fontStyle,
@@ -3745,8 +3745,8 @@ function MatrixRenderer({
3745
3745
  const cellW = (usableW - gap * (cols - 1)) / cols;
3746
3746
  const cellH = (usableH - gap * (rows - 1)) / rows;
3747
3747
  const rx = Math.min(6, Math.min(cellW, cellH) * 0.1);
3748
- const shadow = chunkQVQTDWB7_js.styleShadow(style);
3749
- const sw = chunkQVQTDWB7_js.styleStroke(style);
3748
+ const shadow = chunkKA7ST7IH_js.styleShadow(style);
3749
+ const sw = chunkKA7ST7IH_js.styleStroke(style);
3750
3750
  return /* @__PURE__ */ jsxRuntime.jsx(
3751
3751
  "svg",
3752
3752
  {
@@ -3759,13 +3759,13 @@ function MatrixRenderer({
3759
3759
  const row = Math.floor(i / cols);
3760
3760
  const x = pad + col * (cellW + gap);
3761
3761
  const y = pad + row * (cellH + gap);
3762
- const fontSize = chunkQVQTDWB7_js.fitFontSize(node.text, cellW * 0.85, cellH, 12);
3762
+ const fontSize = chunkKA7ST7IH_js.fitFontSize(node.text, cellW * 0.85, cellH, 12);
3763
3763
  const ns = resolveNodeStyle(node, i, palette);
3764
3764
  const label = nodeLabels?.get(node.id);
3765
3765
  return /* @__PURE__ */ jsxRuntime.jsxs(
3766
3766
  "g",
3767
3767
  {
3768
- ...chunkQVQTDWB7_js.smartArtNodeGroupProps(node.id, shadow, label),
3768
+ ...chunkKA7ST7IH_js.smartArtNodeGroupProps(node.id, shadow, label),
3769
3769
  children: [
3770
3770
  label ? /* @__PURE__ */ jsxRuntime.jsx("title", { children: label }) : null,
3771
3771
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -3777,17 +3777,17 @@ function MatrixRenderer({
3777
3777
  height: cellH,
3778
3778
  rx,
3779
3779
  fill: ns.fill,
3780
- opacity: chunkQVQTDWB7_js.nodeOpacity(i, nodes.length, style),
3780
+ opacity: chunkKA7ST7IH_js.nodeOpacity(i, nodes.length, style),
3781
3781
  stroke: ns.strokeColor ?? (sw > 0 ? "rgba(255,255,255,0.3)" : "none"),
3782
3782
  strokeWidth: sw
3783
3783
  }
3784
3784
  ),
3785
3785
  /* @__PURE__ */ jsxRuntime.jsx(
3786
- chunkQVQTDWB7_js.SmartArtNodeText,
3786
+ chunkKA7ST7IH_js.SmartArtNodeText,
3787
3787
  {
3788
3788
  x: x + cellW / 2,
3789
3789
  y: y + cellH / 2,
3790
- text: chunkQVQTDWB7_js.truncate(node.text, 30),
3790
+ text: chunkKA7ST7IH_js.truncate(node.text, 30),
3791
3791
  fill: ns.fontColor,
3792
3792
  fontWeight: ns.fontWeight ?? 500,
3793
3793
  fontStyle: ns.fontStyle,
@@ -3816,8 +3816,8 @@ function PyramidRenderer({
3816
3816
  const usableH = h - pad * 2;
3817
3817
  const bandH = (usableH - gap * (nodes.length - 1)) / nodes.length;
3818
3818
  const maxW = w - pad * 2;
3819
- const shadow = chunkQVQTDWB7_js.styleShadow(style);
3820
- const sw = chunkQVQTDWB7_js.styleStroke(style);
3819
+ const shadow = chunkKA7ST7IH_js.styleShadow(style);
3820
+ const sw = chunkKA7ST7IH_js.styleStroke(style);
3821
3821
  return /* @__PURE__ */ jsxRuntime.jsx(
3822
3822
  "svg",
3823
3823
  {
@@ -3841,28 +3841,28 @@ function PyramidRenderer({
3841
3841
  `${bottomRight},${y + bandH}`,
3842
3842
  `${bottomLeft},${y + bandH}`
3843
3843
  ].join(" ");
3844
- const fontSize = chunkQVQTDWB7_js.fitFontSize(node.text, topW * 0.85, bandH, 12);
3844
+ const fontSize = chunkKA7ST7IH_js.fitFontSize(node.text, topW * 0.85, bandH, 12);
3845
3845
  return /* @__PURE__ */ jsxRuntime.jsxs(
3846
3846
  "g",
3847
3847
  {
3848
- ...chunkQVQTDWB7_js.smartArtNodeGroupProps(node.id, shadow),
3848
+ ...chunkKA7ST7IH_js.smartArtNodeGroupProps(node.id, shadow),
3849
3849
  children: [
3850
3850
  /* @__PURE__ */ jsxRuntime.jsx(
3851
3851
  "polygon",
3852
3852
  {
3853
3853
  points,
3854
- fill: chunkQVQTDWB7_js.colour(i, palette),
3855
- opacity: chunkQVQTDWB7_js.nodeOpacity(i, nodes.length, style),
3854
+ fill: chunkKA7ST7IH_js.colour(i, palette),
3855
+ opacity: chunkKA7ST7IH_js.nodeOpacity(i, nodes.length, style),
3856
3856
  stroke: sw > 0 ? "rgba(255,255,255,0.3)" : "none",
3857
3857
  strokeWidth: sw
3858
3858
  }
3859
3859
  ),
3860
3860
  /* @__PURE__ */ jsxRuntime.jsx(
3861
- chunkQVQTDWB7_js.SmartArtNodeText,
3861
+ chunkKA7ST7IH_js.SmartArtNodeText,
3862
3862
  {
3863
3863
  x: w / 2,
3864
3864
  y: y + bandH / 2,
3865
- text: chunkQVQTDWB7_js.truncate(node.text, 30),
3865
+ text: chunkKA7ST7IH_js.truncate(node.text, 30),
3866
3866
  fill: "white",
3867
3867
  fontSize,
3868
3868
  className: "pointer-events-none"
@@ -3884,7 +3884,7 @@ function VennRenderer({
3884
3884
  }) {
3885
3885
  const w = element.width;
3886
3886
  const h = element.height;
3887
- const shadow = chunkQVQTDWB7_js.styleShadow(style);
3887
+ const shadow = chunkKA7ST7IH_js.styleShadow(style);
3888
3888
  if (nodes.length <= 4) {
3889
3889
  const cx = w / 2;
3890
3890
  const cy2 = h / 2;
@@ -3901,19 +3901,19 @@ function VennRenderer({
3901
3901
  const angle = i / nodes.length * Math.PI * 2 - Math.PI / 2;
3902
3902
  const nx = cx + spread * Math.cos(angle);
3903
3903
  const ny = cy2 + spread * Math.sin(angle);
3904
- const fontSize = chunkQVQTDWB7_js.fitFontSize(node.text, r2 * 1.2, r2 * 2, 11);
3904
+ const fontSize = chunkKA7ST7IH_js.fitFontSize(node.text, r2 * 1.2, r2 * 2, 11);
3905
3905
  return /* @__PURE__ */ jsxRuntime.jsxs(
3906
3906
  "g",
3907
3907
  {
3908
- ...chunkQVQTDWB7_js.smartArtNodeGroupProps(node.id, shadow),
3908
+ ...chunkKA7ST7IH_js.smartArtNodeGroupProps(node.id, shadow),
3909
3909
  children: [
3910
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: nx, cy: ny, r: r2, fill: chunkQVQTDWB7_js.colour(i, palette), opacity: 0.35 }),
3910
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: nx, cy: ny, r: r2, fill: chunkKA7ST7IH_js.colour(i, palette), opacity: 0.35 }),
3911
3911
  /* @__PURE__ */ jsxRuntime.jsx(
3912
- chunkQVQTDWB7_js.SmartArtNodeText,
3912
+ chunkKA7ST7IH_js.SmartArtNodeText,
3913
3913
  {
3914
3914
  x: nx,
3915
3915
  y: ny,
3916
- text: chunkQVQTDWB7_js.truncate(node.text, 20),
3916
+ text: chunkKA7ST7IH_js.truncate(node.text, 20),
3917
3917
  fill: "white",
3918
3918
  fontSize,
3919
3919
  fontWeight: "bold",
@@ -3942,19 +3942,19 @@ function VennRenderer({
3942
3942
  "data-testid": "smartart-venn",
3943
3943
  children: nodes.map((node, i) => {
3944
3944
  const nx = offsetX + i * (r * 2 - overlap);
3945
- const fontSize = chunkQVQTDWB7_js.fitFontSize(node.text, r * 1.2, r * 2, 10);
3945
+ const fontSize = chunkKA7ST7IH_js.fitFontSize(node.text, r * 1.2, r * 2, 10);
3946
3946
  return /* @__PURE__ */ jsxRuntime.jsxs(
3947
3947
  "g",
3948
3948
  {
3949
- ...chunkQVQTDWB7_js.smartArtNodeGroupProps(node.id, shadow),
3949
+ ...chunkKA7ST7IH_js.smartArtNodeGroupProps(node.id, shadow),
3950
3950
  children: [
3951
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: nx, cy, r, fill: chunkQVQTDWB7_js.colour(i, palette), opacity: 0.35 }),
3951
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: nx, cy, r, fill: chunkKA7ST7IH_js.colour(i, palette), opacity: 0.35 }),
3952
3952
  /* @__PURE__ */ jsxRuntime.jsx(
3953
- chunkQVQTDWB7_js.SmartArtNodeText,
3953
+ chunkKA7ST7IH_js.SmartArtNodeText,
3954
3954
  {
3955
3955
  x: nx,
3956
3956
  y: cy,
3957
- text: chunkQVQTDWB7_js.truncate(node.text, 20),
3957
+ text: chunkKA7ST7IH_js.truncate(node.text, 20),
3958
3958
  fill: "white",
3959
3959
  fontSize,
3960
3960
  fontWeight: "bold",
@@ -3980,7 +3980,7 @@ function FunnelRenderer({
3980
3980
  const pad = 8;
3981
3981
  const usableW = w - pad * 2;
3982
3982
  const stageH = (h - pad * 2) / nodes.length;
3983
- const shadow = chunkQVQTDWB7_js.styleShadow(style);
3983
+ const shadow = chunkKA7ST7IH_js.styleShadow(style);
3984
3984
  return /* @__PURE__ */ jsxRuntime.jsx(
3985
3985
  "svg",
3986
3986
  {
@@ -4002,26 +4002,26 @@ function FunnelRenderer({
4002
4002
  `${bottomRight},${y + stageH}`,
4003
4003
  `${bottomLeft},${y + stageH}`
4004
4004
  ].join(" ");
4005
- const fontSize = chunkQVQTDWB7_js.fitFontSize(node.text, topWidth * 0.85, stageH, 11);
4005
+ const fontSize = chunkKA7ST7IH_js.fitFontSize(node.text, topWidth * 0.85, stageH, 11);
4006
4006
  return /* @__PURE__ */ jsxRuntime.jsxs(
4007
4007
  "g",
4008
4008
  {
4009
- ...chunkQVQTDWB7_js.smartArtNodeGroupProps(node.id, shadow),
4009
+ ...chunkKA7ST7IH_js.smartArtNodeGroupProps(node.id, shadow),
4010
4010
  children: [
4011
4011
  /* @__PURE__ */ jsxRuntime.jsx(
4012
4012
  "polygon",
4013
4013
  {
4014
4014
  points,
4015
- fill: chunkQVQTDWB7_js.colour(i, palette),
4016
- opacity: chunkQVQTDWB7_js.nodeOpacity(i, nodes.length, style)
4015
+ fill: chunkKA7ST7IH_js.colour(i, palette),
4016
+ opacity: chunkKA7ST7IH_js.nodeOpacity(i, nodes.length, style)
4017
4017
  }
4018
4018
  ),
4019
4019
  /* @__PURE__ */ jsxRuntime.jsx(
4020
- chunkQVQTDWB7_js.SmartArtNodeText,
4020
+ chunkKA7ST7IH_js.SmartArtNodeText,
4021
4021
  {
4022
4022
  x: w / 2,
4023
4023
  y: y + stageH / 2,
4024
- text: chunkQVQTDWB7_js.truncate(node.text, 30),
4024
+ text: chunkKA7ST7IH_js.truncate(node.text, 30),
4025
4025
  fill: "white",
4026
4026
  fontSize,
4027
4027
  className: "pointer-events-none"
@@ -4048,7 +4048,7 @@ function TargetRenderer({
4048
4048
  const maxR = Math.min(cx - 8, cy - 8);
4049
4049
  const fontSize = Math.max(7, Math.min(10, maxR / (nodes.length + 1)));
4050
4050
  const labelX = cx + maxR + 8;
4051
- const shadow = chunkQVQTDWB7_js.styleShadow(style);
4051
+ const shadow = chunkKA7ST7IH_js.styleShadow(style);
4052
4052
  return /* @__PURE__ */ jsxRuntime.jsx(
4053
4053
  "svg",
4054
4054
  {
@@ -4061,7 +4061,7 @@ function TargetRenderer({
4061
4061
  return /* @__PURE__ */ jsxRuntime.jsxs(
4062
4062
  "g",
4063
4063
  {
4064
- ...chunkQVQTDWB7_js.smartArtNodeGroupProps(node.id, shadow),
4064
+ ...chunkKA7ST7IH_js.smartArtNodeGroupProps(node.id, shadow),
4065
4065
  children: [
4066
4066
  /* @__PURE__ */ jsxRuntime.jsx(
4067
4067
  "circle",
@@ -4069,8 +4069,8 @@ function TargetRenderer({
4069
4069
  cx,
4070
4070
  cy,
4071
4071
  r: Math.max(r, 4),
4072
- fill: chunkQVQTDWB7_js.colour(i, palette),
4073
- opacity: chunkQVQTDWB7_js.nodeOpacity(i, nodes.length, style)
4072
+ fill: chunkKA7ST7IH_js.colour(i, palette),
4073
+ opacity: chunkKA7ST7IH_js.nodeOpacity(i, nodes.length, style)
4074
4074
  }
4075
4075
  ),
4076
4076
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -4080,7 +4080,7 @@ function TargetRenderer({
4080
4080
  y1: cy,
4081
4081
  x2: labelX - 2,
4082
4082
  y2: 8 + i * (fontSize + 6),
4083
- stroke: chunkQVQTDWB7_js.colour(i, palette),
4083
+ stroke: chunkKA7ST7IH_js.colour(i, palette),
4084
4084
  strokeWidth: 1,
4085
4085
  opacity: 0.6
4086
4086
  }
@@ -4092,10 +4092,10 @@ function TargetRenderer({
4092
4092
  y: 8 + i * (fontSize + 6) + fontSize / 2,
4093
4093
  textAnchor: "start",
4094
4094
  dominantBaseline: "central",
4095
- fill: chunkQVQTDWB7_js.colour(i, palette),
4095
+ fill: chunkKA7ST7IH_js.colour(i, palette),
4096
4096
  fontSize,
4097
4097
  className: "pointer-events-none",
4098
- children: chunkQVQTDWB7_js.truncate(node.text, 30)
4098
+ children: chunkKA7ST7IH_js.truncate(node.text, 30)
4099
4099
  }
4100
4100
  )
4101
4101
  ]
@@ -4112,12 +4112,12 @@ function HierarchyRenderer({
4112
4112
  palette,
4113
4113
  style
4114
4114
  }) {
4115
- const roots = chunkQVQTDWB7_js.buildTree(nodes);
4115
+ const roots = chunkKA7ST7IH_js.buildTree(nodes);
4116
4116
  if (roots.length === 0) {
4117
4117
  return /* @__PURE__ */ jsxRuntime.jsx(ListRenderer, { element, nodes, palette, style });
4118
4118
  }
4119
- const totalLeaves = roots.reduce((s, r) => s + chunkQVQTDWB7_js.treeWidth(r), 0);
4120
- const depth = Math.max(...roots.map(chunkQVQTDWB7_js.treeDepth));
4119
+ const totalLeaves = roots.reduce((s, r) => s + chunkKA7ST7IH_js.treeWidth(r), 0);
4120
+ const depth = Math.max(...roots.map(chunkKA7ST7IH_js.treeDepth));
4121
4121
  const svgW = element.width;
4122
4122
  const svgH = element.height;
4123
4123
  const cellW = svgW / totalLeaves;
@@ -4125,24 +4125,24 @@ function HierarchyRenderer({
4125
4125
  const boxW = Math.min(cellW * 0.8, 140);
4126
4126
  const boxH = Math.min(cellH * 0.4, 36);
4127
4127
  const rx = Math.min(6, boxH * 0.15);
4128
- const shadow = chunkQVQTDWB7_js.styleShadow(style);
4129
- const sw = chunkQVQTDWB7_js.styleStroke(style);
4128
+ const shadow = chunkKA7ST7IH_js.styleShadow(style);
4129
+ const sw = chunkKA7ST7IH_js.styleStroke(style);
4130
4130
  const elements = [];
4131
4131
  let colourIdx = 0;
4132
4132
  function renderTreeNode(t, xOffset, level) {
4133
- const w = chunkQVQTDWB7_js.treeWidth(t);
4133
+ const w = chunkKA7ST7IH_js.treeWidth(t);
4134
4134
  const nodeCx = (xOffset + w / 2) * cellW;
4135
4135
  const nodeCy = level * cellH + cellH / 2;
4136
4136
  const ci = colourIdx++;
4137
- const fontSize = chunkQVQTDWB7_js.fitFontSize(t.node.text, boxW * 0.9, boxH, 11);
4137
+ const fontSize = chunkKA7ST7IH_js.fitFontSize(t.node.text, boxW * 0.9, boxH, 11);
4138
4138
  for (const child of t.children) {
4139
- const childW = chunkQVQTDWB7_js.treeWidth(child);
4139
+ const childW = chunkKA7ST7IH_js.treeWidth(child);
4140
4140
  let childOffset2 = xOffset;
4141
4141
  for (const c of t.children) {
4142
4142
  if (c === child) {
4143
4143
  break;
4144
4144
  }
4145
- childOffset2 += chunkQVQTDWB7_js.treeWidth(c);
4145
+ childOffset2 += chunkKA7ST7IH_js.treeWidth(c);
4146
4146
  }
4147
4147
  const childCx = (childOffset2 + childW / 2) * cellW;
4148
4148
  const childCy = (level + 1) * cellH + cellH / 2;
@@ -4165,7 +4165,7 @@ function HierarchyRenderer({
4165
4165
  /* @__PURE__ */ jsxRuntime.jsxs(
4166
4166
  "g",
4167
4167
  {
4168
- ...chunkQVQTDWB7_js.smartArtNodeGroupProps(t.node.id, shadow),
4168
+ ...chunkKA7ST7IH_js.smartArtNodeGroupProps(t.node.id, shadow),
4169
4169
  children: [
4170
4170
  /* @__PURE__ */ jsxRuntime.jsx(
4171
4171
  "rect",
@@ -4175,18 +4175,18 @@ function HierarchyRenderer({
4175
4175
  width: boxW,
4176
4176
  height: boxH,
4177
4177
  rx,
4178
- fill: chunkQVQTDWB7_js.colour(ci, palette),
4179
- opacity: chunkQVQTDWB7_js.nodeOpacity(ci, nodes.length, style),
4178
+ fill: chunkKA7ST7IH_js.colour(ci, palette),
4179
+ opacity: chunkKA7ST7IH_js.nodeOpacity(ci, nodes.length, style),
4180
4180
  stroke: sw > 0 ? "rgba(255,255,255,0.3)" : "none",
4181
4181
  strokeWidth: sw
4182
4182
  }
4183
4183
  ),
4184
4184
  /* @__PURE__ */ jsxRuntime.jsx(
4185
- chunkQVQTDWB7_js.SmartArtNodeText,
4185
+ chunkKA7ST7IH_js.SmartArtNodeText,
4186
4186
  {
4187
4187
  x: nodeCx,
4188
4188
  y: nodeCy,
4189
- text: chunkQVQTDWB7_js.truncate(t.node.text, 40),
4189
+ text: chunkKA7ST7IH_js.truncate(t.node.text, 40),
4190
4190
  fill: "white",
4191
4191
  fontSize,
4192
4192
  className: "pointer-events-none"
@@ -4200,7 +4200,7 @@ function HierarchyRenderer({
4200
4200
  let childOffset = xOffset;
4201
4201
  for (const child of t.children) {
4202
4202
  renderTreeNode(child, childOffset, level + 1);
4203
- childOffset += chunkQVQTDWB7_js.treeWidth(child);
4203
+ childOffset += chunkKA7ST7IH_js.treeWidth(child);
4204
4204
  }
4205
4205
  return w;
4206
4206
  }
@@ -4235,7 +4235,7 @@ function GearRenderer({
4235
4235
  const gearR = Math.min(spacing * 0.4, h * 0.35);
4236
4236
  const innerR = gearR * 0.7;
4237
4237
  const teethCount = 8;
4238
- const shadow = chunkQVQTDWB7_js.styleShadow(style);
4238
+ const shadow = chunkKA7ST7IH_js.styleShadow(style);
4239
4239
  return /* @__PURE__ */ jsxRuntime.jsxs(
4240
4240
  "svg",
4241
4241
  {
@@ -4247,27 +4247,27 @@ function GearRenderer({
4247
4247
  gearNodes.map((node, i) => {
4248
4248
  const gx = spacing * (i + 1);
4249
4249
  const gy = h / 2 + (i % 2 === 0 ? 0 : gearR * 0.35);
4250
- const fontSize = chunkQVQTDWB7_js.fitFontSize(node.text, innerR * 1.2, innerR * 2, 11);
4250
+ const fontSize = chunkKA7ST7IH_js.fitFontSize(node.text, innerR * 1.2, innerR * 2, 11);
4251
4251
  return /* @__PURE__ */ jsxRuntime.jsxs(
4252
4252
  "g",
4253
4253
  {
4254
- ...chunkQVQTDWB7_js.smartArtNodeGroupProps(node.id, shadow),
4254
+ ...chunkKA7ST7IH_js.smartArtNodeGroupProps(node.id, shadow),
4255
4255
  children: [
4256
4256
  /* @__PURE__ */ jsxRuntime.jsx(
4257
4257
  "path",
4258
4258
  {
4259
- d: chunkQVQTDWB7_js.gearPath(gx, gy, gearR, innerR, teethCount),
4260
- fill: chunkQVQTDWB7_js.colour(i, palette),
4261
- opacity: chunkQVQTDWB7_js.nodeOpacity(i, nodes.length, style)
4259
+ d: chunkKA7ST7IH_js.gearPath(gx, gy, gearR, innerR, teethCount),
4260
+ fill: chunkKA7ST7IH_js.colour(i, palette),
4261
+ opacity: chunkKA7ST7IH_js.nodeOpacity(i, nodes.length, style)
4262
4262
  }
4263
4263
  ),
4264
4264
  /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: gx, cy: gy, r: innerR * 0.5, fill: "white", opacity: 0.25 }),
4265
4265
  /* @__PURE__ */ jsxRuntime.jsx(
4266
- chunkQVQTDWB7_js.SmartArtNodeText,
4266
+ chunkKA7ST7IH_js.SmartArtNodeText,
4267
4267
  {
4268
4268
  x: gx,
4269
4269
  y: gy,
4270
- text: chunkQVQTDWB7_js.truncate(node.text, 20),
4270
+ text: chunkKA7ST7IH_js.truncate(node.text, 20),
4271
4271
  fill: "white",
4272
4272
  fontSize,
4273
4273
  fontWeight: "bold",
@@ -4289,8 +4289,8 @@ function GearRenderer({
4289
4289
  cx: lx,
4290
4290
  cy: ly,
4291
4291
  r: 3,
4292
- fill: chunkQVQTDWB7_js.colour(gearCount + i, palette),
4293
- opacity: chunkQVQTDWB7_js.nodeOpacity(gearCount + i, nodes.length, style)
4292
+ fill: chunkKA7ST7IH_js.colour(gearCount + i, palette),
4293
+ opacity: chunkKA7ST7IH_js.nodeOpacity(gearCount + i, nodes.length, style)
4294
4294
  }
4295
4295
  ),
4296
4296
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -4300,10 +4300,10 @@ function GearRenderer({
4300
4300
  y: ly,
4301
4301
  textAnchor: "start",
4302
4302
  dominantBaseline: "central",
4303
- fill: chunkQVQTDWB7_js.colour(gearCount + i, palette),
4303
+ fill: chunkKA7ST7IH_js.colour(gearCount + i, palette),
4304
4304
  fontSize: 10,
4305
4305
  className: "pointer-events-none",
4306
- children: chunkQVQTDWB7_js.truncate(node.text, 30)
4306
+ children: chunkKA7ST7IH_js.truncate(node.text, 30)
4307
4307
  }
4308
4308
  )
4309
4309
  ] }, `${element.id}-gear-extra-${node.id}-${i}`);
@@ -4327,7 +4327,7 @@ function TimelineRenderer({
4327
4327
  const lineLen = lineEndX - lineStartX;
4328
4328
  const dotR = Math.max(4, Math.min(8, lineLen / (nodes.length * 4)));
4329
4329
  const labelOffset = Math.min(h * 0.28, 40);
4330
- const shadow = chunkQVQTDWB7_js.styleShadow(style);
4330
+ const shadow = chunkKA7ST7IH_js.styleShadow(style);
4331
4331
  return /* @__PURE__ */ jsxRuntime.jsxs(
4332
4332
  "svg",
4333
4333
  {
@@ -4349,11 +4349,11 @@ function TimelineRenderer({
4349
4349
  const above = i % 2 === 0;
4350
4350
  const textY = above ? lineY - labelOffset : lineY + labelOffset;
4351
4351
  const stemEndY = above ? lineY - dotR - 2 : lineY + dotR + 2;
4352
- const fontSize = chunkQVQTDWB7_js.fitFontSize(node.text, lineLen / nodes.length * 0.9, labelOffset, 10);
4352
+ const fontSize = chunkKA7ST7IH_js.fitFontSize(node.text, lineLen / nodes.length * 0.9, labelOffset, 10);
4353
4353
  return /* @__PURE__ */ jsxRuntime.jsxs(
4354
4354
  "g",
4355
4355
  {
4356
- ...chunkQVQTDWB7_js.smartArtNodeGroupProps(node.id, shadow),
4356
+ ...chunkKA7ST7IH_js.smartArtNodeGroupProps(node.id, shadow),
4357
4357
  children: [
4358
4358
  /* @__PURE__ */ jsxRuntime.jsx(
4359
4359
  "line",
@@ -4362,7 +4362,7 @@ function TimelineRenderer({
4362
4362
  y1: stemEndY,
4363
4363
  x2: x,
4364
4364
  y2: textY + (above ? fontSize : -fontSize),
4365
- stroke: chunkQVQTDWB7_js.colour(i, palette),
4365
+ stroke: chunkKA7ST7IH_js.colour(i, palette),
4366
4366
  strokeWidth: 1,
4367
4367
  opacity: 0.5
4368
4368
  }
@@ -4373,17 +4373,17 @@ function TimelineRenderer({
4373
4373
  cx: x,
4374
4374
  cy: lineY,
4375
4375
  r: dotR,
4376
- fill: chunkQVQTDWB7_js.colour(i, palette),
4377
- opacity: chunkQVQTDWB7_js.nodeOpacity(i, nodes.length, style)
4376
+ fill: chunkKA7ST7IH_js.colour(i, palette),
4377
+ opacity: chunkKA7ST7IH_js.nodeOpacity(i, nodes.length, style)
4378
4378
  }
4379
4379
  ),
4380
4380
  /* @__PURE__ */ jsxRuntime.jsx(
4381
- chunkQVQTDWB7_js.SmartArtNodeText,
4381
+ chunkKA7ST7IH_js.SmartArtNodeText,
4382
4382
  {
4383
- text: chunkQVQTDWB7_js.truncate(node.text, 20) ?? "",
4383
+ text: chunkKA7ST7IH_js.truncate(node.text, 20) ?? "",
4384
4384
  x,
4385
4385
  y: textY,
4386
- fill: chunkQVQTDWB7_js.colour(i, palette),
4386
+ fill: chunkKA7ST7IH_js.colour(i, palette),
4387
4387
  fontSize,
4388
4388
  anchor: above ? "bottom" : "top",
4389
4389
  className: "pointer-events-none"
@@ -4416,8 +4416,8 @@ function BendingProcessRenderer({
4416
4416
  const boxH = Math.min(cellH * 0.6, 32);
4417
4417
  const rx = Math.min(5, boxH * 0.15);
4418
4418
  const arrowSize = 6;
4419
- const shadow = chunkQVQTDWB7_js.styleShadow(style);
4420
- const sw = chunkQVQTDWB7_js.styleStroke(style);
4419
+ const shadow = chunkKA7ST7IH_js.styleShadow(style);
4420
+ const sw = chunkKA7ST7IH_js.styleStroke(style);
4421
4421
  return /* @__PURE__ */ jsxRuntime.jsx(
4422
4422
  "svg",
4423
4423
  {
@@ -4431,7 +4431,7 @@ function BendingProcessRenderer({
4431
4431
  const col = row % 2 === 0 ? colInRow : COLS - 1 - colInRow;
4432
4432
  const nodeCx = padX + col * cellW + cellW / 2;
4433
4433
  const nodeCy = padY + row * cellH + cellH / 2;
4434
- const fontSize = chunkQVQTDWB7_js.fitFontSize(node.text, boxW * 0.85, boxH, 10);
4434
+ const fontSize = chunkKA7ST7IH_js.fitFontSize(node.text, boxW * 0.85, boxH, 10);
4435
4435
  let arrow = null;
4436
4436
  if (i < nodes.length - 1) {
4437
4437
  const nextRow = Math.floor((i + 1) / COLS);
@@ -4491,7 +4491,7 @@ function BendingProcessRenderer({
4491
4491
  return /* @__PURE__ */ jsxRuntime.jsxs(
4492
4492
  "g",
4493
4493
  {
4494
- ...chunkQVQTDWB7_js.smartArtNodeGroupProps(node.id, shadow),
4494
+ ...chunkKA7ST7IH_js.smartArtNodeGroupProps(node.id, shadow),
4495
4495
  children: [
4496
4496
  arrow,
4497
4497
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -4502,18 +4502,18 @@ function BendingProcessRenderer({
4502
4502
  width: boxW,
4503
4503
  height: boxH,
4504
4504
  rx,
4505
- fill: chunkQVQTDWB7_js.colour(i, palette),
4506
- opacity: chunkQVQTDWB7_js.nodeOpacity(i, nodes.length, style),
4505
+ fill: chunkKA7ST7IH_js.colour(i, palette),
4506
+ opacity: chunkKA7ST7IH_js.nodeOpacity(i, nodes.length, style),
4507
4507
  stroke: sw > 0 ? "rgba(255,255,255,0.3)" : "none",
4508
4508
  strokeWidth: sw
4509
4509
  }
4510
4510
  ),
4511
4511
  /* @__PURE__ */ jsxRuntime.jsx(
4512
- chunkQVQTDWB7_js.SmartArtNodeText,
4512
+ chunkKA7ST7IH_js.SmartArtNodeText,
4513
4513
  {
4514
4514
  x: nodeCx,
4515
4515
  y: nodeCy,
4516
- text: chunkQVQTDWB7_js.truncate(node.text, 20),
4516
+ text: chunkKA7ST7IH_js.truncate(node.text, 20),
4517
4517
  fill: "white",
4518
4518
  fontSize,
4519
4519
  className: "pointer-events-none"
@@ -4554,8 +4554,8 @@ function SmartArtRendererImpl({
4554
4554
  }
4555
4555
  );
4556
4556
  }
4557
- const palette = chunkQVQTDWB7_js.resolvePalette(element);
4558
- const style = chunkQVQTDWB7_js.resolveStyle(element);
4557
+ const palette = chunkKA7ST7IH_js.resolvePalette(element);
4558
+ const style = chunkKA7ST7IH_js.resolveStyle(element);
4559
4559
  const a11y = chunkVSNXVKJI_js.buildSmartArtA11y(smartArtData);
4560
4560
  const nodeLabels = new Map(a11y.nodes.map((n) => [n.id, n.label]));
4561
4561
  const editable = canEdit && Boolean(onUpdateElement);
@@ -4568,7 +4568,7 @@ function SmartArtRendererImpl({
4568
4568
  const reflowed = chunkVSNXVKJI_js.rebuildDrawingShapesIfCleared(
4569
4569
  updated,
4570
4570
  smartArtData.layout,
4571
- chunkQVQTDWB7_js.resolveSmartArtDataPalette(updated),
4571
+ chunkKA7ST7IH_js.resolveSmartArtDataPalette(updated),
4572
4572
  style,
4573
4573
  element.id,
4574
4574
  box
@@ -4585,7 +4585,7 @@ function SmartArtRendererImpl({
4585
4585
  const reflowed = chunkVSNXVKJI_js.rebuildDrawingShapesIfCleared(
4586
4586
  next,
4587
4587
  smartArtData.layout,
4588
- chunkQVQTDWB7_js.resolveSmartArtDataPalette(next),
4588
+ chunkKA7ST7IH_js.resolveSmartArtDataPalette(next),
4589
4589
  style,
4590
4590
  element.id,
4591
4591
  box
@@ -4608,7 +4608,7 @@ function SmartArtRendererImpl({
4608
4608
  );
4609
4609
  } else {
4610
4610
  const namedLayout = smartArtData.layout;
4611
- const layoutType = namedLayout ? chunkQVQTDWB7_js.layoutToCategory(namedLayout) : (smartArtData.resolvedLayoutType ?? smartArtData.layoutType ?? "list").toLowerCase();
4611
+ const layoutType = namedLayout ? chunkKA7ST7IH_js.layoutToCategory(namedLayout) : (smartArtData.resolvedLayoutType ?? smartArtData.layoutType ?? "list").toLowerCase();
4612
4612
  content = renderLayout(layoutType, element, nodes, palette, style, nodeLabels);
4613
4613
  }
4614
4614
  const body = editable ? /* @__PURE__ */ jsxRuntime.jsx(
@@ -4622,7 +4622,7 @@ function SmartArtRendererImpl({
4622
4622
  children: content
4623
4623
  }
4624
4624
  ) : content;
4625
- return chunkQVQTDWB7_js.wrapChrome(chrome, body, className, { role: a11y.role, label: a11y.label });
4625
+ return chunkKA7ST7IH_js.wrapChrome(chrome, body, className, { role: a11y.role, label: a11y.label });
4626
4626
  }
4627
4627
  function renderLayout(layoutType, element, nodes, palette, style, nodeLabels) {
4628
4628
  if (layoutType.includes("hierarchy") || layoutType.includes("org")) {
@@ -4686,34 +4686,34 @@ function renderLayout(layoutType, element, nodes, palette, style, nodeLabels) {
4686
4686
  return /* @__PURE__ */ jsxRuntime.jsx(BendingProcessRenderer, { element, nodes, palette, style });
4687
4687
  }
4688
4688
  if (layoutType.includes("stepdown")) {
4689
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkQVQTDWB7_js.renderStepDownProcess(element, nodes, palette, style) });
4689
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkKA7ST7IH_js.renderStepDownProcess(element, nodes, palette, style) });
4690
4690
  }
4691
4691
  if (layoutType.includes("alternatingflow") || layoutType.includes("alternating")) {
4692
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkQVQTDWB7_js.renderAlternatingFlow(element, nodes, palette, style) });
4692
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkKA7ST7IH_js.renderAlternatingFlow(element, nodes, palette, style) });
4693
4693
  }
4694
4694
  if (layoutType.includes("descending")) {
4695
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkQVQTDWB7_js.renderDescendingProcess(element, nodes, palette, style) });
4695
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkKA7ST7IH_js.renderDescendingProcess(element, nodes, palette, style) });
4696
4696
  }
4697
4697
  if (layoutType.includes("pictureaccent")) {
4698
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkQVQTDWB7_js.renderPictureAccentList(element, nodes, palette, style) });
4698
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkKA7ST7IH_js.renderPictureAccentList(element, nodes, palette, style) });
4699
4699
  }
4700
4700
  if (layoutType.includes("verticalblock")) {
4701
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkQVQTDWB7_js.renderVerticalBlockList(element, nodes, palette, style) });
4701
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkKA7ST7IH_js.renderVerticalBlockList(element, nodes, palette, style) });
4702
4702
  }
4703
4703
  if (layoutType.includes("grouped")) {
4704
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkQVQTDWB7_js.renderGroupedList(element, nodes, palette, style) });
4704
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkKA7ST7IH_js.renderGroupedList(element, nodes, palette, style) });
4705
4705
  }
4706
4706
  if (layoutType.includes("pyramidlist")) {
4707
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkQVQTDWB7_js.renderPyramidList(element, nodes, palette, style) });
4707
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkKA7ST7IH_js.renderPyramidList(element, nodes, palette, style) });
4708
4708
  }
4709
4709
  if (layoutType.includes("horizontalpicture")) {
4710
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkQVQTDWB7_js.renderHorizontalPictureList(element, nodes, palette, style) });
4710
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkKA7ST7IH_js.renderHorizontalPictureList(element, nodes, palette, style) });
4711
4711
  }
4712
4712
  if (layoutType.includes("accentprocess")) {
4713
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkQVQTDWB7_js.renderAccentProcess(element, nodes, palette, style) });
4713
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkKA7ST7IH_js.renderAccentProcess(element, nodes, palette, style) });
4714
4714
  }
4715
4715
  if (layoutType.includes("verticalchevron")) {
4716
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkQVQTDWB7_js.renderVerticalChevronList(element, nodes, palette, style) });
4716
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkKA7ST7IH_js.renderVerticalChevronList(element, nodes, palette, style) });
4717
4717
  }
4718
4718
  return /* @__PURE__ */ jsxRuntime.jsx(
4719
4719
  ListRenderer,
@@ -4812,8 +4812,8 @@ function SmartArt3DRenderer({
4812
4812
  if (nodes.length === 0) {
4813
4813
  return null;
4814
4814
  }
4815
- const palette = chunkQVQTDWB7_js.resolvePalette(element);
4816
- const style = chunkQVQTDWB7_js.resolveStyle(element);
4815
+ const palette = chunkKA7ST7IH_js.resolvePalette(element);
4816
+ const style = chunkKA7ST7IH_js.resolveStyle(element);
4817
4817
  const layoutResult = chunkVSNXVKJI_js.computeSmartArtLayout(
4818
4818
  nodes,
4819
4819
  { width: element.width, height: element.height },
@@ -4933,13 +4933,13 @@ function getSegmentTspanProps(segment, element, fallbackColor) {
4933
4933
  if (s.strikethrough) {
4934
4934
  decos.push("line-through");
4935
4935
  }
4936
- const fill = s.hyperlink ? chunkVSNXVKJI_js.normalizeHexColor(s.color || element.textStyle?.color, chunkQVQTDWB7_js.HYPERLINK_COLOR) : chunkVSNXVKJI_js.normalizeHexColor(s.color || element.textStyle?.color, fallbackColor);
4936
+ const fill = s.hyperlink ? chunkVSNXVKJI_js.normalizeHexColor(s.color || element.textStyle?.color, chunkKA7ST7IH_js.HYPERLINK_COLOR) : chunkVSNXVKJI_js.normalizeHexColor(s.color || element.textStyle?.color, fallbackColor);
4937
4937
  return {
4938
4938
  fill,
4939
- fontSize: s.fontSize ?? element.textStyle?.fontSize ?? chunkQVQTDWB7_js.DEFAULT_TEXT_FONT_SIZE,
4939
+ fontSize: s.fontSize ?? element.textStyle?.fontSize ?? chunkKA7ST7IH_js.DEFAULT_TEXT_FONT_SIZE,
4940
4940
  fontWeight: s.bold ? 700 : 400,
4941
4941
  fontStyle: s.italic ? "italic" : void 0,
4942
- fontFamily: s.fontFamily || element.textStyle?.fontFamily ? chunkAD3EAEY6_js.getSubstituteFontFamily(s.fontFamily || element.textStyle?.fontFamily || "") : chunkQVQTDWB7_js.DEFAULT_FONT_FAMILY,
4942
+ fontFamily: s.fontFamily || element.textStyle?.fontFamily ? chunkAD3EAEY6_js.getSubstituteFontFamily(s.fontFamily || element.textStyle?.fontFamily || "") : chunkKA7ST7IH_js.DEFAULT_FONT_FAMILY,
4943
4943
  textDecoration: decos.length > 0 ? decos.join(" ") : void 0
4944
4944
  };
4945
4945
  }
@@ -4968,8 +4968,8 @@ function WarpedText({
4968
4968
  const warpAdj2 = textEl.textStyle?.textWarpAdj2;
4969
4969
  const align = textEl.textStyle?.align ?? "center";
4970
4970
  const { startOffset, textAnchor } = getAlignmentProps(align);
4971
- const baseFontSize = textEl.textStyle?.fontSize ?? chunkQVQTDWB7_js.DEFAULT_TEXT_FONT_SIZE;
4972
- const baseFontFamily = textEl.textStyle?.fontFamily ? chunkAD3EAEY6_js.getSubstituteFontFamily(textEl.textStyle.fontFamily) : chunkQVQTDWB7_js.DEFAULT_FONT_FAMILY;
4971
+ const baseFontSize = textEl.textStyle?.fontSize ?? chunkKA7ST7IH_js.DEFAULT_TEXT_FONT_SIZE;
4972
+ const baseFontFamily = textEl.textStyle?.fontFamily ? chunkAD3EAEY6_js.getSubstituteFontFamily(textEl.textStyle.fontFamily) : chunkKA7ST7IH_js.DEFAULT_FONT_FAMILY;
4973
4973
  const baseFill = chunkVSNXVKJI_js.normalizeHexColor(textEl.textStyle?.color, fallbackColor);
4974
4974
  return /* @__PURE__ */ jsxRuntime.jsxs(
4975
4975
  "svg",
@@ -5098,7 +5098,7 @@ function renderTextElementBody(options) {
5098
5098
  const useSvgWarp = chunkVSNXVKJI_js.shouldUseSvgWarp(
5099
5099
  chunkAD3EAEY6_js.hasTextProperties(el) ? el.textStyle?.textWarpPreset : void 0
5100
5100
  );
5101
- const scene3dStyle = chunkAD3EAEY6_js.hasTextProperties(el) ? chunkQVQTDWB7_js.buildTextBody3DSceneStyle(el.textStyle) : void 0;
5101
+ const scene3dStyle = chunkAD3EAEY6_js.hasTextProperties(el) ? chunkKA7ST7IH_js.buildTextBody3DSceneStyle(el.textStyle) : void 0;
5102
5102
  const composedTransform = [chunkVSNXVKJI_js.getTextCompensationTransform(el), scene3dStyle?.transform].filter(Boolean).join(" ") || void 0;
5103
5103
  const transformStyle = {
5104
5104
  transform: composedTransform,
@@ -5115,18 +5115,18 @@ function renderTextElementBody(options) {
5115
5115
  shouldRenderText && (useSvgWarp ? /* @__PURE__ */ jsxRuntime.jsx(
5116
5116
  "div",
5117
5117
  {
5118
- className: chunkQVQTDWB7_js.cn(
5118
+ className: chunkKA7ST7IH_js.cn(
5119
5119
  "relative z-10 w-full h-full",
5120
5120
  onHyperlinkClick ? "" : "pointer-events-none"
5121
5121
  ),
5122
- style: { ...chunkQVQTDWB7_js.getTextLayoutStyle(el), ...transformStyle },
5122
+ style: { ...chunkKA7ST7IH_js.getTextLayoutStyle(el), ...transformStyle },
5123
5123
  children: /* @__PURE__ */ jsxRuntime.jsx(
5124
5124
  WarpedText,
5125
5125
  {
5126
5126
  element: el,
5127
5127
  width: el.width,
5128
5128
  height: el.height,
5129
- fallbackColor: chunkQVQTDWB7_js.DEFAULT_TEXT_COLOR,
5129
+ fallbackColor: chunkKA7ST7IH_js.DEFAULT_TEXT_COLOR,
5130
5130
  findHighlights: findHl,
5131
5131
  fieldContext
5132
5132
  }
@@ -5135,19 +5135,19 @@ function renderTextElementBody(options) {
5135
5135
  ) : /* @__PURE__ */ jsxRuntime.jsx(
5136
5136
  "div",
5137
5137
  {
5138
- className: chunkQVQTDWB7_js.cn(
5138
+ className: chunkKA7ST7IH_js.cn(
5139
5139
  "relative z-10 w-full h-full whitespace-pre-wrap break-words leading-[1.3]",
5140
5140
  onHyperlinkClick ? "" : "pointer-events-none"
5141
5141
  ),
5142
5142
  style: {
5143
- ...chunkQVQTDWB7_js.getTextLayoutStyle(el),
5143
+ ...chunkKA7ST7IH_js.getTextLayoutStyle(el),
5144
5144
  ...txtS,
5145
- ...chunkQVQTDWB7_js.getTextWarpStyle(txtSE),
5145
+ ...chunkKA7ST7IH_js.getTextWarpStyle(txtSE),
5146
5146
  ...transformStyle
5147
5147
  },
5148
- children: chunkQVQTDWB7_js.renderTextSegments(
5148
+ children: chunkKA7ST7IH_js.renderTextSegments(
5149
5149
  el,
5150
- chunkQVQTDWB7_js.DEFAULT_TEXT_COLOR,
5150
+ chunkKA7ST7IH_js.DEFAULT_TEXT_COLOR,
5151
5151
  void 0,
5152
5152
  findHl,
5153
5153
  onHyperlinkClick,
@@ -5447,7 +5447,7 @@ function renderBody(options) {
5447
5447
  textDirection: txtSE?.textDirection,
5448
5448
  textStyle: txtS,
5449
5449
  textStyleRaw: txtSE,
5450
- layoutStyle: chunkQVQTDWB7_js.getTextLayoutStyle(el),
5450
+ layoutStyle: chunkKA7ST7IH_js.getTextLayoutStyle(el),
5451
5451
  element: el,
5452
5452
  onCommit,
5453
5453
  onCancel,
@@ -5458,7 +5458,7 @@ function renderBody(options) {
5458
5458
  ] });
5459
5459
  }
5460
5460
  if (el.type === "table") {
5461
- return chunkQVQTDWB7_js.renderTableElement(el, txtS, {
5461
+ return chunkKA7ST7IH_js.renderTableElement(el, txtS, {
5462
5462
  editable: isSel,
5463
5463
  selectedCell: isSel ? tableSt : null,
5464
5464
  onSelectCell: onCellSel,
@@ -5489,7 +5489,7 @@ function renderBody(options) {
5489
5489
  );
5490
5490
  }
5491
5491
  if (el.type === "media") {
5492
- return chunkQVQTDWB7_js.renderMediaElement(el, media, {
5492
+ return chunkKA7ST7IH_js.renderMediaElement(el, media, {
5493
5493
  autoPlay: isPresentationPassive,
5494
5494
  fullScreen: isPresentationPassive && Boolean(el.fullScreen),
5495
5495
  isPresentationMode: isPresentationPassive,
@@ -5514,7 +5514,7 @@ function renderBody(options) {
5514
5514
  }
5515
5515
  return renderGroup(el.children);
5516
5516
  }
5517
- if (chunkQVQTDWB7_js.shouldRenderFallbackLabel(el, isTxtEl)) {
5517
+ if (chunkKA7ST7IH_js.shouldRenderFallbackLabel(el, isTxtEl)) {
5518
5518
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkVSNXVKJI_js.getElementLabel(el) });
5519
5519
  }
5520
5520
  return renderTextElementBody(options);
@@ -5533,13 +5533,13 @@ function StaticElementRenderer({
5533
5533
  }) {
5534
5534
  const style = chunkAD3EAEY6_js.hasShapeProperties(element) ? element.shapeStyle : void 0;
5535
5535
  const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(chunkVSNXVKJI_js.buildCssGradientFromShapeStyle(style) || style?.fillGradient) || style?.fillMode === "pattern" && Boolean(style.fillPatternPreset);
5536
- const fill = chunkVSNXVKJI_js.normalizeHexColor(style?.fillColor, chunkQVQTDWB7_js.DEFAULT_FILL_COLOR);
5536
+ const fill = chunkVSNXVKJI_js.normalizeHexColor(style?.fillColor, chunkKA7ST7IH_js.DEFAULT_FILL_COLOR);
5537
5537
  const strokeWidth = Math.max(0, style?.strokeWidth || 0);
5538
- const stroke = chunkVSNXVKJI_js.normalizeHexColor(style?.strokeColor, chunkQVQTDWB7_js.DEFAULT_STROKE_COLOR);
5539
- const visualStyle = chunkQVQTDWB7_js.getShapeVisualStyle(element, hasFill, fill, strokeWidth, stroke);
5540
- const textStyle = chunkQVQTDWB7_js.getTextStyleForElement(
5538
+ const stroke = chunkVSNXVKJI_js.normalizeHexColor(style?.strokeColor, chunkKA7ST7IH_js.DEFAULT_STROKE_COLOR);
5539
+ const visualStyle = chunkKA7ST7IH_js.getShapeVisualStyle(element, hasFill, fill, strokeWidth, stroke);
5540
+ const textStyle = chunkKA7ST7IH_js.getTextStyleForElement(
5541
5541
  element,
5542
- element.type === "shape" && hasFill ? "#ffffff" : chunkQVQTDWB7_js.DEFAULT_TEXT_COLOR
5542
+ element.type === "shape" && hasFill ? "#ffffff" : chunkKA7ST7IH_js.DEFAULT_TEXT_COLOR
5543
5543
  );
5544
5544
  const isImage = element.type === "picture" || element.type === "image";
5545
5545
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -5576,8 +5576,8 @@ function StaticElementRenderer({
5576
5576
  spellCheck: false,
5577
5577
  txtSE: chunkAD3EAEY6_js.hasTextProperties(element) ? element.textStyle : void 0,
5578
5578
  txtS: textStyle,
5579
- vecShape: chunkQVQTDWB7_js.renderVectorShape(element, hasFill, fill, strokeWidth, stroke),
5580
- imgStyle: chunkQVQTDWB7_js.getImageRenderStyle(element),
5579
+ vecShape: chunkKA7ST7IH_js.renderVectorShape(element, hasFill, fill, strokeWidth, stroke),
5580
+ imgStyle: chunkKA7ST7IH_js.getImageRenderStyle(element),
5581
5581
  imgFilter: chunkVSNXVKJI_js.getImageEffectsFilter(element),
5582
5582
  imgOpacity: chunkVSNXVKJI_js.getImageEffectsOpacity(element),
5583
5583
  imgAlt: "",
@@ -5607,12 +5607,12 @@ function SlideThumbnailImpl({
5607
5607
  }) {
5608
5608
  const safeCanvasWidth = Math.max(canvasSize.width, 1);
5609
5609
  const safeCanvasHeight = Math.max(canvasSize.height, 1);
5610
- const scale = chunkQVQTDWB7_js.SLIDE_NAV_THUMBNAIL_WIDTH / safeCanvasWidth;
5610
+ const scale = chunkKA7ST7IH_js.SLIDE_NAV_THUMBNAIL_WIDTH / safeCanvasWidth;
5611
5611
  const previewHeight = Math.max(56, Math.round(safeCanvasHeight * scale));
5612
5612
  const previewElements = [...templateElements, ...slide.elements].slice(0, 60);
5613
5613
  const { t } = reactI18next.useTranslation();
5614
5614
  const transitionLabel = slide.transition ? (() => {
5615
- const opt = chunkQVQTDWB7_js.SLIDE_TRANSITION_OPTIONS.find((o) => o.value === slide.transition?.type);
5615
+ const opt = chunkKA7ST7IH_js.SLIDE_TRANSITION_OPTIONS.find((o) => o.value === slide.transition?.type);
5616
5616
  return opt ? t(opt.i18nKey) : slide.transition.type;
5617
5617
  })() : void 0;
5618
5618
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -6305,7 +6305,7 @@ function SectionHeader({
6305
6305
  /* @__PURE__ */ jsxRuntime.jsx(
6306
6306
  lu.LuChevronDown,
6307
6307
  {
6308
- className: chunkQVQTDWB7_js.cn(
6308
+ className: chunkKA7ST7IH_js.cn(
6309
6309
  "h-3 w-3 flex-shrink-0 transition-transform",
6310
6310
  isCollapsed ? "-rotate-90" : "rotate-0"
6311
6311
  )
@@ -6407,7 +6407,7 @@ function LazyThumbnailInner({
6407
6407
  className: "relative w-full overflow-hidden rounded border border-border bg-muted/30 animate-pulse",
6408
6408
  style: {
6409
6409
  height: previewHeight,
6410
- minWidth: chunkQVQTDWB7_js.SLIDE_NAV_THUMBNAIL_WIDTH
6410
+ minWidth: chunkKA7ST7IH_js.SLIDE_NAV_THUMBNAIL_WIDTH
6411
6411
  }
6412
6412
  }
6413
6413
  ) });
@@ -6444,7 +6444,7 @@ function buildFlatPaneItems(sectionGroups, showSectionHeaders, collapsedSections
6444
6444
  function estimateSlideItemHeight(canvasWidth, canvasHeight) {
6445
6445
  const safeW = Math.max(canvasWidth, 1);
6446
6446
  const safeH = Math.max(canvasHeight, 1);
6447
- const scale = chunkQVQTDWB7_js.SLIDE_NAV_THUMBNAIL_WIDTH / safeW;
6447
+ const scale = chunkKA7ST7IH_js.SLIDE_NAV_THUMBNAIL_WIDTH / safeW;
6448
6448
  const previewHeight = Math.max(56, Math.round(safeH * scale));
6449
6449
  return previewHeight + 30;
6450
6450
  }
@@ -6481,7 +6481,7 @@ function SlideItemInner({
6481
6481
  );
6482
6482
  const safeCanvasWidth = Math.max(canvasSize.width, 1);
6483
6483
  const safeCanvasHeight = Math.max(canvasSize.height, 1);
6484
- const scale = chunkQVQTDWB7_js.SLIDE_NAV_THUMBNAIL_WIDTH / safeCanvasWidth;
6484
+ const scale = chunkKA7ST7IH_js.SLIDE_NAV_THUMBNAIL_WIDTH / safeCanvasWidth;
6485
6485
  const previewHeight = Math.max(56, Math.round(safeCanvasHeight * scale));
6486
6486
  return /* @__PURE__ */ jsxRuntime.jsxs(
6487
6487
  "button",
@@ -6490,7 +6490,7 @@ function SlideItemInner({
6490
6490
  ref: slideRef,
6491
6491
  "aria-label": `Go to slide ${slideIndex + 1}`,
6492
6492
  "aria-current": isActive ? "true" : void 0,
6493
- className: chunkQVQTDWB7_js.cn(
6493
+ className: chunkKA7ST7IH_js.cn(
6494
6494
  "group relative flex w-full items-center gap-1 cursor-pointer border-0 bg-transparent py-0.5 px-1 text-left transition-all",
6495
6495
  isActive && "bg-accent/40 before:absolute before:left-0 before:top-1 before:bottom-1 before:w-[3px] before:bg-primary before:rounded-r",
6496
6496
  isHidden && "opacity-50"
@@ -6506,7 +6506,7 @@ function SlideItemInner({
6506
6506
  /* @__PURE__ */ jsxRuntime.jsx(
6507
6507
  "span",
6508
6508
  {
6509
- className: chunkQVQTDWB7_js.cn(
6509
+ className: chunkKA7ST7IH_js.cn(
6510
6510
  "text-[10px] tabular-nums text-right select-none w-full",
6511
6511
  isActive ? "text-primary font-medium" : "text-muted-foreground"
6512
6512
  ),
@@ -6526,7 +6526,7 @@ function SlideItemInner({
6526
6526
  /* @__PURE__ */ jsxRuntime.jsxs(
6527
6527
  "div",
6528
6528
  {
6529
- className: chunkQVQTDWB7_js.cn(
6529
+ className: chunkKA7ST7IH_js.cn(
6530
6530
  "relative flex-1 overflow-hidden border transition-colors bg-white",
6531
6531
  isActive ? "border-primary/60" : "border-transparent group-hover:border-border/40"
6532
6532
  ),
@@ -6731,7 +6731,7 @@ function SlidesPaneSidebar({
6731
6731
  [sectionGroups, showSectionHeaders, collapsedSections]
6732
6732
  );
6733
6733
  const shouldVirtualize = slides.length >= VIRTUALIZATION_THRESHOLD;
6734
- const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunkQVQTDWB7_js.useVirtualizedSlides({
6734
+ const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunkKA7ST7IH_js.useVirtualizedSlides({
6735
6735
  totalItems: shouldVirtualize ? flatItems.length : 0,
6736
6736
  itemHeight: estimatedItemHeight
6737
6737
  });
@@ -6961,7 +6961,7 @@ function HandoutMasterPanel({
6961
6961
  {
6962
6962
  type: "button",
6963
6963
  "aria-pressed": slidesPerPage === count,
6964
- className: chunkQVQTDWB7_js.cn(
6964
+ className: chunkKA7ST7IH_js.cn(
6965
6965
  "px-2 py-1.5 rounded text-[11px] font-medium transition-colors",
6966
6966
  slidesPerPage === count ? "bg-primary text-white" : "bg-accent/50 text-muted-foreground hover:bg-accent/70 hover:text-foreground"
6967
6967
  ),
@@ -7089,7 +7089,7 @@ function SlideMastersList({
7089
7089
  "div",
7090
7090
  {
7091
7091
  ref: isMasterActive ? activeRef : void 0,
7092
- className: chunkQVQTDWB7_js.cn(
7092
+ className: chunkKA7ST7IH_js.cn(
7093
7093
  "group relative cursor-pointer rounded-lg border-2 p-1 transition-all",
7094
7094
  isMasterActive ? "border-amber-500 bg-amber-500/10" : "border-border bg-background/40 hover:border-border"
7095
7095
  ),
@@ -7106,7 +7106,7 @@ function SlideMastersList({
7106
7106
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 px-1", children: /* @__PURE__ */ jsxRuntime.jsx(
7107
7107
  "span",
7108
7108
  {
7109
- className: chunkQVQTDWB7_js.cn(
7109
+ className: chunkKA7ST7IH_js.cn(
7110
7110
  "text-[10px] font-medium",
7111
7111
  isMasterActive ? "text-amber-400" : "text-muted-foreground"
7112
7112
  ),
@@ -7122,7 +7122,7 @@ function SlideMastersList({
7122
7122
  "div",
7123
7123
  {
7124
7124
  ref: isLayoutActive ? activeRef : void 0,
7125
- className: chunkQVQTDWB7_js.cn(
7125
+ className: chunkKA7ST7IH_js.cn(
7126
7126
  "group relative cursor-pointer rounded-md border-2 p-0.5 transition-all",
7127
7127
  isLayoutActive ? "border-primary bg-primary/10" : "border-border bg-background/40 hover:border-border"
7128
7128
  ),
@@ -7139,7 +7139,7 @@ function SlideMastersList({
7139
7139
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5 px-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
7140
7140
  "span",
7141
7141
  {
7142
- className: chunkQVQTDWB7_js.cn(
7142
+ className: chunkKA7ST7IH_js.cn(
7143
7143
  "text-[9px]",
7144
7144
  isLayoutActive ? "text-primary" : "text-muted-foreground"
7145
7145
  ),
@@ -7223,7 +7223,7 @@ function MasterViewSidebar({
7223
7223
  type: "button",
7224
7224
  role: "tab",
7225
7225
  "aria-selected": masterViewTab === tab.key,
7226
- className: chunkQVQTDWB7_js.cn(
7226
+ className: chunkKA7ST7IH_js.cn(
7227
7227
  "flex-1 px-1 py-1.5 text-[10px] font-medium transition-colors border-b-2",
7228
7228
  masterViewTab === tab.key ? "border-amber-500 text-amber-400" : "border-transparent text-muted-foreground hover:text-foreground"
7229
7229
  ),
@@ -7695,7 +7695,7 @@ function SectionBlock({
7695
7695
  /* @__PURE__ */ jsxRuntime.jsx(
7696
7696
  lu.LuChevronDown,
7697
7697
  {
7698
- className: chunkQVQTDWB7_js.cn("h-3 w-3 transition-transform", collapsed ? "-rotate-90" : "rotate-0")
7698
+ className: chunkKA7ST7IH_js.cn("h-3 w-3 transition-transform", collapsed ? "-rotate-90" : "rotate-0")
7699
7699
  }
7700
7700
  ),
7701
7701
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-left", children: section.label }),
@@ -7742,7 +7742,7 @@ function SlideCardImpl({
7742
7742
  return /* @__PURE__ */ jsxRuntime.jsxs(
7743
7743
  "div",
7744
7744
  {
7745
- className: chunkQVQTDWB7_js.cn(
7745
+ className: chunkKA7ST7IH_js.cn(
7746
7746
  "group relative cursor-pointer rounded-lg border-2 p-1 transition-all",
7747
7747
  isDragTarget ? "border-primary bg-primary/20" : isSelected ? "border-primary bg-primary/10 ring-1 ring-primary/50" : isActive ? "border-primary/50 bg-primary/5" : "border-border bg-background/50 hover:border-border",
7748
7748
  slide.hidden && "opacity-40"
@@ -7761,7 +7761,7 @@ function SlideCardImpl({
7761
7761
  /* @__PURE__ */ jsxRuntime.jsx(
7762
7762
  "span",
7763
7763
  {
7764
- className: chunkQVQTDWB7_js.cn(
7764
+ className: chunkKA7ST7IH_js.cn(
7765
7765
  "text-[11px] font-medium",
7766
7766
  isSelected ? "text-primary" : isActive ? "text-primary/70" : "text-muted-foreground"
7767
7767
  ),
@@ -9496,7 +9496,7 @@ var SlideNotesPanel = ({
9496
9496
  });
9497
9497
  const hasNotes = draft.trim().length > 0;
9498
9498
  const slideLabel = activeSlide ? t("pptx.notes.slideN", { n: activeSlide.slideNumber }) : t("pptx.notes.noSlide");
9499
- const { dragY, handlers: dragHandlers } = chunkQVQTDWB7_js.useSheetDismissDrag(onToggle);
9499
+ const { dragY, handlers: dragHandlers } = chunkKA7ST7IH_js.useSheetDismissDrag(onToggle);
9500
9500
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
9501
9501
  isExpanded && /* @__PURE__ */ jsxRuntime.jsx(
9502
9502
  "button",
@@ -9510,7 +9510,7 @@ var SlideNotesPanel = ({
9510
9510
  /* @__PURE__ */ jsxRuntime.jsxs(
9511
9511
  "div",
9512
9512
  {
9513
- className: chunkQVQTDWB7_js.cn(
9513
+ className: chunkKA7ST7IH_js.cn(
9514
9514
  "flex flex-col border-t border-border/60 bg-background select-none",
9515
9515
  // On mobile, hide the entire notes strip when collapsed: the
9516
9516
  // MobileBottomBar's Notes button is the entry point instead.
@@ -9861,7 +9861,7 @@ function SlideDiffRow({
9861
9861
  return /* @__PURE__ */ jsxRuntime.jsxs(
9862
9862
  "div",
9863
9863
  {
9864
- className: chunkQVQTDWB7_js.cn(
9864
+ className: chunkKA7ST7IH_js.cn(
9865
9865
  "rounded-lg border transition-colors",
9866
9866
  isResolved ? "border-border/60 bg-card/40 opacity-60" : "border-border bg-background/70"
9867
9867
  ),
@@ -9875,7 +9875,7 @@ function SlideDiffRow({
9875
9875
  children: [
9876
9876
  expanded ? /* @__PURE__ */ jsxRuntime.jsx(lu.LuChevronDown, { className: "w-3.5 h-3.5 text-muted-foreground flex-shrink-0" }) : /* @__PURE__ */ jsxRuntime.jsx(lu.LuChevronRight, { className: "w-3.5 h-3.5 text-muted-foreground flex-shrink-0" }),
9877
9877
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-foreground", children: t("pptx.compare.slideNumber", { number: slideNumber }) }),
9878
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkQVQTDWB7_js.cn("rounded-full px-2 py-0.5 text-[10px] font-medium", statusColor), children: statusLabel }),
9878
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkKA7ST7IH_js.cn("rounded-full px-2 py-0.5 text-[10px] font-medium", statusColor), children: statusLabel }),
9879
9879
  diff.changes.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-muted-foreground", children: [
9880
9880
  diff.changes.length,
9881
9881
  " ",
@@ -9885,7 +9885,7 @@ function SlideDiffRow({
9885
9885
  isResolved && /* @__PURE__ */ jsxRuntime.jsx(
9886
9886
  "span",
9887
9887
  {
9888
- className: chunkQVQTDWB7_js.cn(
9888
+ className: chunkKA7ST7IH_js.cn(
9889
9889
  "text-[10px] font-medium",
9890
9890
  accepted ? "text-green-400" : "text-muted-foreground"
9891
9891
  ),
@@ -9913,7 +9913,7 @@ function SlideDiffRow({
9913
9913
  /* @__PURE__ */ jsxRuntime.jsx(
9914
9914
  "div",
9915
9915
  {
9916
- className: chunkQVQTDWB7_js.cn(
9916
+ className: chunkKA7ST7IH_js.cn(
9917
9917
  "rounded border overflow-hidden",
9918
9918
  diff.status === "added" ? "border-green-700/60" : diff.status === "changed" ? "border-amber-700/60" : "border-border"
9919
9919
  ),
@@ -10634,7 +10634,7 @@ function DocumentPropertiesDialog({
10634
10634
  const handleClose = React14.useCallback(() => {
10635
10635
  onClose();
10636
10636
  }, [onClose]);
10637
- const { panelStyle, handlers: dragHandlers } = chunkQVQTDWB7_js.useModalDismissDrag(handleClose);
10637
+ const { panelStyle, handlers: dragHandlers } = chunkKA7ST7IH_js.useModalDismissDrag(handleClose);
10638
10638
  if (!isOpen) {
10639
10639
  return null;
10640
10640
  }
@@ -12253,7 +12253,7 @@ function SelectionPane({
12253
12253
  setDragIndex(null);
12254
12254
  setDragOverIndex(null);
12255
12255
  },
12256
- className: chunkQVQTDWB7_js.cn(
12256
+ className: chunkKA7ST7IH_js.cn(
12257
12257
  "flex items-center gap-1.5 px-2 py-1 text-xs cursor-pointer transition-colors",
12258
12258
  isSelected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground",
12259
12259
  dragOverIndex === realIndex ? "border-t-2 border-primary" : ""
@@ -12310,7 +12310,7 @@ function RibbonGroup({
12310
12310
  return /* @__PURE__ */ jsxRuntime.jsxs(
12311
12311
  "section",
12312
12312
  {
12313
- className: chunkQVQTDWB7_js.cn(
12313
+ className: chunkKA7ST7IH_js.cn(
12314
12314
  "relative flex min-h-[78px] shrink-0 items-start gap-1 border-r border-border/60 px-2 pb-4 pt-1 last:border-r-0",
12315
12315
  className
12316
12316
  ),
@@ -12338,7 +12338,7 @@ function RibbonCommand({
12338
12338
  onClick,
12339
12339
  disabled,
12340
12340
  title: title ?? label,
12341
- className: chunkQVQTDWB7_js.cn(
12341
+ className: chunkKA7ST7IH_js.cn(
12342
12342
  "inline-flex rounded-sm text-foreground transition-colors hover:bg-accent disabled:cursor-not-allowed disabled:opacity-35",
12343
12343
  active && "bg-primary/15 text-primary ring-1 ring-primary/35",
12344
12344
  compact ? "h-[26px] min-w-[88px] items-center gap-1.5 px-1.5 text-left text-[10px] leading-3" : "h-[58px] min-w-[54px] max-w-[72px] flex-col items-center justify-start gap-0.5 px-1 py-1 text-center text-[9px] leading-[11px]"
@@ -12347,7 +12347,7 @@ function RibbonCommand({
12347
12347
  /* @__PURE__ */ jsxRuntime.jsx(
12348
12348
  "span",
12349
12349
  {
12350
- className: chunkQVQTDWB7_js.cn(
12350
+ className: chunkKA7ST7IH_js.cn(
12351
12351
  "grid shrink-0 place-items-center text-primary",
12352
12352
  compact ? "h-4 w-4 [&>svg]:h-4 [&>svg]:w-4" : "h-7 w-7 [&>svg]:h-6 [&>svg]:w-6"
12353
12353
  ),
@@ -12376,7 +12376,7 @@ function RibbonToggle({
12376
12376
  "label",
12377
12377
  {
12378
12378
  title,
12379
- className: chunkQVQTDWB7_js.cn(
12379
+ className: chunkKA7ST7IH_js.cn(
12380
12380
  "flex h-[19px] items-center gap-1 whitespace-nowrap rounded-sm px-1 text-[10px] text-foreground",
12381
12381
  checked && "bg-primary/15 text-primary"
12382
12382
  ),
@@ -12778,7 +12778,7 @@ function ArrangeSection(p) {
12778
12778
  disabled: !p.canEdit || p.canActivateFormatPainter === false && !p.formatPainterActive,
12779
12779
  "data-testid": "format-painter-toggle",
12780
12780
  "data-active": p.formatPainterActive ? "true" : "false",
12781
- className: chunkQVQTDWB7_js.cn(
12781
+ className: chunkKA7ST7IH_js.cn(
12782
12782
  pill,
12783
12783
  p.formatPainterActive ? "bg-amber-600 hover:bg-amber-500 text-amber-50" : ""
12784
12784
  ),
@@ -12891,7 +12891,7 @@ function DesignSection(p) {
12891
12891
  {
12892
12892
  onClick: p.onToggleThemeGallery,
12893
12893
  disabled: !p.canEdit,
12894
- className: chunkQVQTDWB7_js.cn(
12894
+ className: chunkKA7ST7IH_js.cn(
12895
12895
  pill,
12896
12896
  p.isThemeGalleryOpen ? "bg-primary hover:bg-primary/80 text-white" : ""
12897
12897
  ),
@@ -12907,7 +12907,7 @@ function DesignSection(p) {
12907
12907
  {
12908
12908
  onClick: p.onToggleThemeEditor,
12909
12909
  disabled: !p.canEdit,
12910
- className: chunkQVQTDWB7_js.cn(pill, p.isThemeEditorOpen ? "bg-primary hover:bg-primary/80 text-white" : ""),
12910
+ className: chunkKA7ST7IH_js.cn(pill, p.isThemeEditorOpen ? "bg-primary hover:bg-primary/80 text-white" : ""),
12911
12911
  title: t("pptx.ribbon.editThemeTitle"),
12912
12912
  children: [
12913
12913
  /* @__PURE__ */ jsxRuntime.jsx(lu.LuPencil, { className: ics }),
@@ -12932,7 +12932,7 @@ function DesignSection(p) {
12932
12932
  "button",
12933
12933
  {
12934
12934
  onClick: p.onToggleInspector,
12935
- className: chunkQVQTDWB7_js.cn(
12935
+ className: chunkKA7ST7IH_js.cn(
12936
12936
  pill,
12937
12937
  p.isInspectorPaneOpen ? "bg-primary hover:bg-primary/80 text-white" : ""
12938
12938
  ),
@@ -12974,7 +12974,7 @@ function TransitionsSection(p) {
12974
12974
  {
12975
12975
  type: "button",
12976
12976
  onClick: () => setSelected(preset.value),
12977
- className: chunkQVQTDWB7_js.cn(
12977
+ className: chunkKA7ST7IH_js.cn(
12978
12978
  "flex-shrink-0 px-2 py-1 max-md:min-h-[44px] rounded border text-[11px] leading-tight transition-colors",
12979
12979
  selected === preset.value ? "border-primary bg-primary/10 text-primary font-medium" : "border-border bg-muted hover:bg-accent text-foreground"
12980
12980
  ),
@@ -13059,7 +13059,7 @@ function TransitionsSection(p) {
13059
13059
  {
13060
13060
  type: "button",
13061
13061
  onClick: p.onToggleInspector,
13062
- className: chunkQVQTDWB7_js.cn(
13062
+ className: chunkKA7ST7IH_js.cn(
13063
13063
  pill,
13064
13064
  p.isInspectorPaneOpen ? "bg-primary hover:bg-primary/80 text-white" : ""
13065
13065
  ),
@@ -13080,7 +13080,7 @@ function DrawSection(p) {
13080
13080
  {
13081
13081
  type: "button",
13082
13082
  onClick: () => p.onSetActiveTool(tool.id),
13083
- className: chunkQVQTDWB7_js.cn(
13083
+ className: chunkKA7ST7IH_js.cn(
13084
13084
  i < a.length - 1 ? gB : gL,
13085
13085
  p.activeTool === tool.id ? tool.ac ?? "bg-accent text-foreground" : ""
13086
13086
  ),
@@ -13164,7 +13164,7 @@ function AccountPage() {
13164
13164
  return void 0;
13165
13165
  });
13166
13166
  };
13167
- const version = "1.22.0" ;
13167
+ const version = "1.22.1" ;
13168
13168
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
13169
13169
  /* @__PURE__ */ jsxRuntime.jsxs("section", { className: cardClass, children: [
13170
13170
  /* @__PURE__ */ jsxRuntime.jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
@@ -13204,7 +13204,7 @@ function AccountPage() {
13204
13204
  "aria-label": color,
13205
13205
  "aria-pressed": profile.avatarColor === color,
13206
13206
  onClick: () => updateProfile({ avatarColor: color }),
13207
- className: chunkQVQTDWB7_js.cn(
13207
+ className: chunkKA7ST7IH_js.cn(
13208
13208
  "size-7 rounded-full border-2 transition-transform",
13209
13209
  profile.avatarColor === color ? "border-foreground scale-110" : "border-transparent hover:scale-105"
13210
13210
  ),
@@ -13354,7 +13354,7 @@ function FileSection(p) {
13354
13354
  const [page, setPage] = React14.useState("home");
13355
13355
  const [query, setQuery] = React14.useState("");
13356
13356
  const [recent, setRecent] = React14.useState([]);
13357
- const { isHidden } = chunkQVQTDWB7_js.useToolbarVisibility(p.hiddenActions);
13357
+ const { isHidden } = chunkKA7ST7IH_js.useToolbarVisibility(p.hiddenActions);
13358
13358
  const exportHidden = isHidden("export");
13359
13359
  React14.useEffect(() => {
13360
13360
  void chunkVSNXVKJI_js.listBackstageRecentFiles().then(setRecent);
@@ -13685,7 +13685,7 @@ function SlidesGroup(p) {
13685
13685
  type: "button",
13686
13686
  onClick: handleNewSlide,
13687
13687
  disabled: !p.canEdit || p.layoutOptions.length === 0,
13688
- className: chunkQVQTDWB7_js.cn(
13688
+ className: chunkKA7ST7IH_js.cn(
13689
13689
  pill,
13690
13690
  "whitespace-nowrap",
13691
13691
  p.layoutOptions.length > 0 ? "rounded-r-none" : ""
@@ -13875,7 +13875,7 @@ function HomeSection(p) {
13875
13875
  setTimeout(() => setCutFeedback(false), 600);
13876
13876
  },
13877
13877
  disabled: !p.canEdit,
13878
- className: chunkQVQTDWB7_js.cn(gB, cutFeedback && "bg-green-600/20 text-green-400"),
13878
+ className: chunkKA7ST7IH_js.cn(gB, cutFeedback && "bg-green-600/20 text-green-400"),
13879
13879
  title: t("pptx.arrange.cut"),
13880
13880
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuScissors, { className: ic2 })
13881
13881
  }
@@ -13889,7 +13889,7 @@ function HomeSection(p) {
13889
13889
  setCopiedFeedback(true);
13890
13890
  setTimeout(() => setCopiedFeedback(false), 600);
13891
13891
  },
13892
- className: chunkQVQTDWB7_js.cn(gB, copiedFeedback && "bg-green-600/20 text-green-400"),
13892
+ className: chunkKA7ST7IH_js.cn(gB, copiedFeedback && "bg-green-600/20 text-green-400"),
13893
13893
  title: t("pptx.arrange.copy"),
13894
13894
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuCopy, { className: ic2 })
13895
13895
  }
@@ -13902,7 +13902,7 @@ function HomeSection(p) {
13902
13902
  disabled: !p.canEdit || p.canActivateFormatPainter === false && !p.formatPainterActive,
13903
13903
  "data-testid": "format-painter-toggle",
13904
13904
  "data-active": p.formatPainterActive ? "true" : "false",
13905
- className: chunkQVQTDWB7_js.cn(
13905
+ className: chunkKA7ST7IH_js.cn(
13906
13906
  gL,
13907
13907
  p.formatPainterActive ? "bg-amber-600 hover:bg-amber-500 text-amber-50" : ""
13908
13908
  ),
@@ -14077,7 +14077,7 @@ function InsertSection(p) {
14077
14077
  onChange: (e) => p.onSetNewShapeType(e.target.value),
14078
14078
  className: "bg-transparent py-1.5 pl-2 pr-1 outline-none text-xs",
14079
14079
  title: t("pptx.insert.shapeType"),
14080
- children: chunkQVQTDWB7_js.SHAPE_PRESETS.map((sp) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: sp.type, className: "bg-background", children: t(sp.i18nKey) }, sp.type))
14080
+ children: chunkKA7ST7IH_js.SHAPE_PRESETS.map((sp) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: sp.type, className: "bg-background", children: t(sp.i18nKey) }, sp.type))
14081
14081
  }
14082
14082
  ),
14083
14083
  /* @__PURE__ */ jsxRuntime.jsxs(
@@ -14088,7 +14088,7 @@ function InsertSection(p) {
14088
14088
  className: "inline-flex items-center gap-1.5 px-2.5 py-1.5 border-l border-border hover:bg-accent transition-colors text-xs",
14089
14089
  title: t("pptx.insert.addShape"),
14090
14090
  children: [
14091
- chunkQVQTDWB7_js.SHAPE_PRESETS.find((sp) => sp.type === p.newShapeType)?.icon || /* @__PURE__ */ jsxRuntime.jsx(lu.LuSquare, { className: ic2 }),
14091
+ chunkKA7ST7IH_js.SHAPE_PRESETS.find((sp) => sp.type === p.newShapeType)?.icon || /* @__PURE__ */ jsxRuntime.jsx(lu.LuSquare, { className: ic2 }),
14092
14092
  t("pptx.insert.shape")
14093
14093
  ]
14094
14094
  }
@@ -14571,7 +14571,7 @@ function ReviewSection(p) {
14571
14571
  }
14572
14572
  function SlideShowSection(p) {
14573
14573
  const { t } = reactI18next.useTranslation();
14574
- const { isHidden } = chunkQVQTDWB7_js.useToolbarVisibility(p.hiddenActions);
14574
+ const { isHidden } = chunkKA7ST7IH_js.useToolbarVisibility(p.hiddenActions);
14575
14575
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
14576
14576
  /* @__PURE__ */ jsxRuntime.jsxs(RibbonGroup, { label: t("pptx.slideShow.start", { defaultValue: "Start Slide Show" }), children: [
14577
14577
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -15640,11 +15640,14 @@ function ViewSection(p) {
15640
15640
  /* @__PURE__ */ jsxRuntime.jsx(
15641
15641
  RibbonCommand,
15642
15642
  {
15643
- label: t("pptx.view.templateEditing", { defaultValue: "Template Editing" }),
15643
+ label: t(p.editTemplateMode ? "pptx.ribbon.templatesOn" : "pptx.ribbon.templatesOff"),
15644
15644
  icon: /* @__PURE__ */ jsxRuntime.jsx(lu.LuRuler, {}),
15645
15645
  onClick: () => p.onSetEditTemplateMode(!p.editTemplateMode),
15646
15646
  active: p.editTemplateMode,
15647
- disabled: !p.canEdit
15647
+ disabled: !p.canEdit,
15648
+ title: t("pptx.view.templateEditingTooltip", {
15649
+ defaultValue: "Toggle template/master element editing"
15650
+ })
15648
15651
  }
15649
15652
  ),
15650
15653
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -15670,7 +15673,7 @@ function MobileSheet({
15670
15673
  headerRight
15671
15674
  }) {
15672
15675
  const sheetRef = React14.useRef(null);
15673
- const { dragY, dragging, handlers } = chunkQVQTDWB7_js.useSheetDismissDrag(onClose);
15676
+ const { dragY, dragging, handlers } = chunkKA7ST7IH_js.useSheetDismissDrag(onClose);
15674
15677
  useModalFocus(open, sheetRef, onClose);
15675
15678
  if (!open) {
15676
15679
  return null;
@@ -15694,7 +15697,7 @@ function MobileSheet({
15694
15697
  "aria-modal": "true",
15695
15698
  "aria-label": typeof title === "string" ? title : "Mobile panel",
15696
15699
  tabIndex: -1,
15697
- className: chunkQVQTDWB7_js.cn(
15700
+ className: chunkKA7ST7IH_js.cn(
15698
15701
  "relative bg-background border-t border-border rounded-t-2xl shadow-2xl flex flex-col overflow-hidden",
15699
15702
  "animate-in slide-in-from-bottom duration-200",
15700
15703
  className
@@ -15757,14 +15760,14 @@ function MobileMenuSheet(props) {
15757
15760
  const { t } = reactI18next.useTranslation();
15758
15761
  const { open, onClose } = props;
15759
15762
  const [active, setActive] = React14.useState("home");
15760
- const { isTabVisible } = chunkQVQTDWB7_js.useToolbarVisibility(props.hiddenActions);
15763
+ const { isTabVisible } = chunkKA7ST7IH_js.useToolbarVisibility(props.hiddenActions);
15761
15764
  return /* @__PURE__ */ jsxRuntime.jsx(MobileSheet, { open, onClose, autoHeight: true, title: t("pptx.mobileToolbar.menu"), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col", children: [
15762
15765
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sticky top-0 z-10 bg-background border-b border-border", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1.5 px-3 py-2", children: MENU_ITEMS.filter(({ key }) => isTabVisible(key)).map(({ key, label, icon: Icon }) => /* @__PURE__ */ jsxRuntime.jsxs(
15763
15766
  "button",
15764
15767
  {
15765
15768
  type: "button",
15766
15769
  onClick: () => setActive(active === key ? null : key),
15767
- className: chunkQVQTDWB7_js.cn(
15770
+ className: chunkKA7ST7IH_js.cn(
15768
15771
  "inline-flex items-center gap-1.5 shrink-0 px-3 py-2 rounded-full text-[12px] font-medium border transition-colors min-h-[36px]",
15769
15772
  active === key ? "bg-primary text-white border-primary" : "border-border text-muted-foreground hover:text-foreground hover:bg-accent/40"
15770
15773
  ),
@@ -16000,7 +16003,7 @@ function MobileToolbar(props) {
16000
16003
  const { t } = reactI18next.useTranslation();
16001
16004
  const { mode, canUndo, canRedo, onUndo, onRedo, onSetMode, onSaveAsPptx } = props;
16002
16005
  const [menuOpen, setMenuOpen] = React14.useState(false);
16003
- const { isHidden } = chunkQVQTDWB7_js.useToolbarVisibility(props.hiddenActions);
16006
+ const { isHidden } = chunkKA7ST7IH_js.useToolbarVisibility(props.hiddenActions);
16004
16007
  const showEdit = mode === "edit" || mode === "master";
16005
16008
  const btn = "inline-flex items-center justify-center min-w-[44px] min-h-[44px] rounded-md text-foreground/80 hover:bg-accent/60 disabled:opacity-40 disabled:cursor-not-allowed active:scale-95 transition-transform";
16006
16009
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -16062,7 +16065,7 @@ function MobileToolbar(props) {
16062
16065
  {
16063
16066
  type: "button",
16064
16067
  onClick: () => onSetMode("present"),
16065
- className: chunkQVQTDWB7_js.cn(btn, "text-primary"),
16068
+ className: chunkKA7ST7IH_js.cn(btn, "text-primary"),
16066
16069
  title: t("pptx.toolbar.present"),
16067
16070
  "aria-label": t("pptx.toolbar.present"),
16068
16071
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPresentation, { className: "w-5 h-5" })
@@ -16073,7 +16076,7 @@ function MobileToolbar(props) {
16073
16076
  {
16074
16077
  type: "button",
16075
16078
  onClick: props.onOpenShareDialog ?? props.onPackageForSharing,
16076
- className: chunkQVQTDWB7_js.cn(btn, "bg-primary text-white hover:bg-primary/90 px-3"),
16079
+ className: chunkKA7ST7IH_js.cn(btn, "bg-primary text-white hover:bg-primary/90 px-3"),
16077
16080
  title: t("pptx.toolbar.share"),
16078
16081
  "aria-label": t("pptx.toolbar.share"),
16079
16082
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuShare2, { className: "w-4 h-4" })
@@ -16098,7 +16101,7 @@ var FILL_COLORS = [
16098
16101
  "#008888",
16099
16102
  "#888888"
16100
16103
  ];
16101
- var TOP_SHAPES = chunkQVQTDWB7_js.SHAPE_PRESETS.slice(0, 12);
16104
+ var TOP_SHAPES = chunkKA7ST7IH_js.SHAPE_PRESETS.slice(0, 12);
16102
16105
  function DrawingGroup(p) {
16103
16106
  const { t } = reactI18next.useTranslation();
16104
16107
  const [shapesOpen, setShapesOpen] = React14.useState(false);
@@ -16179,7 +16182,7 @@ function DrawingGroup(p) {
16179
16182
  "button",
16180
16183
  {
16181
16184
  type: "button",
16182
- className: chunkQVQTDWB7_js.cn(
16185
+ className: chunkKA7ST7IH_js.cn(
16183
16186
  "flex items-center gap-2 w-full px-3 py-1.5 text-xs text-foreground hover:bg-muted transition-colors",
16184
16187
  p.newShapeType === s.type && "bg-accent"
16185
16188
  ),
@@ -16325,7 +16328,7 @@ function DrawingGroup(p) {
16325
16328
  {
16326
16329
  type: "button",
16327
16330
  disabled: true,
16328
- className: chunkQVQTDWB7_js.cn(pill, "opacity-50 cursor-not-allowed"),
16331
+ className: chunkKA7ST7IH_js.cn(pill, "opacity-50 cursor-not-allowed"),
16329
16332
  title: t("pptx.drawing.shapeEffectsUnavailable"),
16330
16333
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSparkles, { className: ic2 })
16331
16334
  }
@@ -16432,7 +16435,7 @@ function TabRowActions(p) {
16432
16435
  const { t } = reactI18next.useTranslation();
16433
16436
  const collab = useCollaboration();
16434
16437
  const isCollaborating = collab && collab.status === "connected";
16435
- const { isHidden } = chunkQVQTDWB7_js.useToolbarVisibility(p.hiddenActions);
16438
+ const { isHidden } = chunkKA7ST7IH_js.useToolbarVisibility(p.hiddenActions);
16436
16439
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1 pr-1", children: [
16437
16440
  p.onEnterRehearsalMode && !isHidden("record") && /* @__PURE__ */ jsxRuntime.jsxs(
16438
16441
  "button",
@@ -16453,7 +16456,7 @@ function TabRowActions(p) {
16453
16456
  {
16454
16457
  type: "button",
16455
16458
  onClick: p.onOpenShareDialog ?? p.onPackageForSharing,
16456
- className: chunkQVQTDWB7_js.cn(
16459
+ className: chunkKA7ST7IH_js.cn(
16457
16460
  "relative inline-flex items-center gap-1 px-2.5 py-1 rounded-sm text-[11px] font-medium transition-colors whitespace-nowrap",
16458
16461
  isCollaborating ? "bg-green-600 hover:bg-green-500 text-white" : "bg-primary hover:bg-primary/90 text-white"
16459
16462
  ),
@@ -16533,7 +16536,7 @@ function CustomShowsControls({
16533
16536
  {
16534
16537
  type: "button",
16535
16538
  onClick: onToggleCurrentSlideInActiveShow,
16536
- className: chunkQVQTDWB7_js.cn(
16539
+ className: chunkKA7ST7IH_js.cn(
16537
16540
  "px-2 py-1 rounded text-[11px] transition-colors",
16538
16541
  isCurrentSlideInActiveShow ? "bg-primary text-white" : "bg-muted hover:bg-accent"
16539
16542
  ),
@@ -16581,7 +16584,7 @@ function PresentDropdown({
16581
16584
  {
16582
16585
  type: "button",
16583
16586
  onClick: onPresent,
16584
- className: chunkQVQTDWB7_js.cn(
16587
+ className: chunkKA7ST7IH_js.cn(
16585
16588
  "px-2 py-1 transition-colors",
16586
16589
  isActive ? "bg-primary text-white" : "hover:bg-accent text-foreground"
16587
16590
  ),
@@ -16594,7 +16597,7 @@ function PresentDropdown({
16594
16597
  {
16595
16598
  type: "button",
16596
16599
  onClick: () => setOpen((prev) => !prev),
16597
- className: chunkQVQTDWB7_js.cn(
16600
+ className: chunkKA7ST7IH_js.cn(
16598
16601
  "px-1 py-1 transition-colors border-l border-border",
16599
16602
  open ? "bg-primary text-white" : "hover:bg-accent text-foreground"
16600
16603
  ),
@@ -16782,7 +16785,7 @@ function OverflowMenu(p) {
16782
16785
  {
16783
16786
  type: "button",
16784
16787
  onClick: () => p.onSetOverflowMenuOpen(!p.isOverflowMenuOpen),
16785
- className: chunkQVQTDWB7_js.cn(
16788
+ className: chunkKA7ST7IH_js.cn(
16786
16789
  "p-1.5 rounded transition-colors",
16787
16790
  p.isOverflowMenuOpen ? "bg-primary/80 text-white" : "bg-muted hover:bg-accent"
16788
16791
  ),
@@ -16837,7 +16840,7 @@ function ToolbarPrimaryRow(p) {
16837
16840
  {
16838
16841
  type: "button",
16839
16842
  onClick: onToggleSidebar,
16840
- className: chunkQVQTDWB7_js.cn(qab, !isSidebarCollapsed ? "text-foreground" : "text-muted-foreground"),
16843
+ className: chunkKA7ST7IH_js.cn(qab, !isSidebarCollapsed ? "text-foreground" : "text-muted-foreground"),
16841
16844
  title: t("pptx.toolbar.toggleSlidesPanel"),
16842
16845
  "aria-label": t("pptx.toolbar.toggleSlidesPanel"),
16843
16846
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelLeft, { className: ic2 })
@@ -16849,7 +16852,7 @@ function ToolbarPrimaryRow(p) {
16849
16852
  {
16850
16853
  type: "button",
16851
16854
  onClick: p.onToggleComments,
16852
- className: chunkQVQTDWB7_js.cn(
16855
+ className: chunkKA7ST7IH_js.cn(
16853
16856
  qab,
16854
16857
  "relative max-md:hidden",
16855
16858
  p.isCommentsPanelOpen ? "text-foreground" : "text-muted-foreground"
@@ -16916,7 +16919,7 @@ function ToolbarPrimaryRow(p) {
16916
16919
  {
16917
16920
  type: "button",
16918
16921
  onClick: onToggleInspector,
16919
- className: chunkQVQTDWB7_js.cn(qab, isInspectorPaneOpen ? "text-foreground" : "text-muted-foreground"),
16922
+ className: chunkKA7ST7IH_js.cn(qab, isInspectorPaneOpen ? "text-foreground" : "text-muted-foreground"),
16920
16923
  title: t("pptx.toolbar.toggleInspector"),
16921
16924
  "aria-label": t("pptx.toolbar.toggleInspector"),
16922
16925
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelRight, { className: ic2 })
@@ -16927,7 +16930,7 @@ function ToolbarPrimaryRow(p) {
16927
16930
  {
16928
16931
  type: "button",
16929
16932
  onClick: p.onOpenSettings ?? p.onToggleShortcuts,
16930
- className: chunkQVQTDWB7_js.cn(qab, "text-muted-foreground"),
16933
+ className: chunkKA7ST7IH_js.cn(qab, "text-muted-foreground"),
16931
16934
  title: t("pptx.toolbar.settingsShortcuts"),
16932
16935
  "aria-label": t("pptx.toolbar.settings"),
16933
16936
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSettings, { className: ics })
@@ -16940,7 +16943,7 @@ function ToolbarPrimaryRow(p) {
16940
16943
  function Toolbar(p) {
16941
16944
  const { mode, isNarrowViewport, isCompactToolbarOpen, toolbarSection, onSetToolbarSection } = p;
16942
16945
  const { t } = reactI18next.useTranslation();
16943
- const { isTabVisible } = chunkQVQTDWB7_js.useToolbarVisibility(p.hiddenActions);
16946
+ const { isTabVisible } = chunkKA7ST7IH_js.useToolbarVisibility(p.hiddenActions);
16944
16947
  if (isNarrowViewport && mode !== "present") {
16945
16948
  return /* @__PURE__ */ jsxRuntime.jsx(MobileToolbar, { ...p });
16946
16949
  }
@@ -16973,14 +16976,14 @@ function Toolbar(p) {
16973
16976
  role: "tablist",
16974
16977
  className: "flex items-center border-b border-border/60 px-1 max-md:overflow-x-auto max-md:scrollbar-none",
16975
16978
  children: [
16976
- chunkQVQTDWB7_js.TOOLBAR_SECTIONS.filter((s) => isTabVisible(s.id)).map((s) => /* @__PURE__ */ jsxRuntime.jsx(
16979
+ chunkKA7ST7IH_js.TOOLBAR_SECTIONS.filter((s) => isTabVisible(s.id)).map((s) => /* @__PURE__ */ jsxRuntime.jsx(
16977
16980
  "button",
16978
16981
  {
16979
16982
  type: "button",
16980
16983
  role: "tab",
16981
16984
  "aria-selected": toolbarSection === s.id,
16982
16985
  onClick: () => onSetToolbarSection(s.id),
16983
- className: chunkQVQTDWB7_js.cn(
16986
+ className: chunkKA7ST7IH_js.cn(
16984
16987
  "relative px-3.5 py-2 text-[12px] font-medium whitespace-nowrap transition-colors max-md:min-h-[36px] max-md:px-3",
16985
16988
  toolbarSection === s.id ? s.id === "file" ? "text-white bg-primary/80 rounded-sm" : "text-foreground after:absolute after:-bottom-px after:left-0 after:right-0 after:h-[2.5px] after:bg-primary" : s.id === "file" ? "text-primary hover:bg-primary/15 rounded-sm" : "text-muted-foreground hover:text-foreground hover:bg-accent/30"
16986
16989
  ),
@@ -17003,7 +17006,7 @@ function Toolbar(p) {
17003
17006
  {
17004
17007
  type: "button",
17005
17008
  onClick: p.onToggleCompactToolbar,
17006
- className: chunkQVQTDWB7_js.cn(
17009
+ className: chunkKA7ST7IH_js.cn(
17007
17010
  "px-2 py-1 rounded text-[11px] transition-colors mr-1",
17008
17011
  isCompactToolbarOpen ? "bg-primary/80 text-white" : "text-muted-foreground hover:text-foreground"
17009
17012
  ),
@@ -17019,7 +17022,7 @@ function Toolbar(p) {
17019
17022
  showRibbon && /* @__PURE__ */ jsxRuntime.jsxs(
17020
17023
  "div",
17021
17024
  {
17022
- className: chunkQVQTDWB7_js.cn(
17025
+ className: chunkKA7ST7IH_js.cn(
17023
17026
  "flex min-h-[82px] items-stretch gap-0 overflow-visible px-1 py-0.5 max-md:min-h-0 max-md:px-1 max-md:py-0.5 flex-nowrap",
17024
17027
  isNarrowViewport && !isCompactToolbarOpen && "hidden"
17025
17028
  ),
@@ -17274,13 +17277,13 @@ function Toolbar(p) {
17274
17277
  }
17275
17278
  var INPUT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px]";
17276
17279
  var SELECT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px]";
17277
- var ENTRANCE_PRESETS = chunkQVQTDWB7_js.ANIMATION_PRESET_OPTIONS.filter(
17280
+ var ENTRANCE_PRESETS = chunkKA7ST7IH_js.ANIMATION_PRESET_OPTIONS.filter(
17278
17281
  (o) => o.value === "fadeIn" || o.value === "flyIn" || o.value === "zoomIn"
17279
17282
  );
17280
- var EXIT_PRESETS = chunkQVQTDWB7_js.ANIMATION_PRESET_OPTIONS.filter(
17283
+ var EXIT_PRESETS = chunkKA7ST7IH_js.ANIMATION_PRESET_OPTIONS.filter(
17281
17284
  (o) => o.value === "fadeOut" || o.value === "flyOut" || o.value === "zoomOut"
17282
17285
  );
17283
- var EMPHASIS_PRESETS = chunkQVQTDWB7_js.ANIMATION_PRESET_OPTIONS.filter(
17286
+ var EMPHASIS_PRESETS = chunkKA7ST7IH_js.ANIMATION_PRESET_OPTIONS.filter(
17284
17287
  (o) => o.value === "spin" || o.value === "pulse" || o.value === "colorWave" || o.value === "bounce" || o.value === "flash" || o.value === "growShrink" || o.value === "teeter"
17285
17288
  );
17286
17289
  var TRIGGER_OPTIONS = [
@@ -17382,7 +17385,7 @@ function AnimationTimelineSection({
17382
17385
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-6 rounded bg-muted/50 border border-border overflow-hidden", children: timelineBarData.map((bar) => /* @__PURE__ */ jsxRuntime.jsx(
17383
17386
  "div",
17384
17387
  {
17385
- className: chunkQVQTDWB7_js.cn(
17388
+ className: chunkKA7ST7IH_js.cn(
17386
17389
  "absolute top-0.5 bottom-0.5 rounded-sm transition-colors",
17387
17390
  animationTypeColor(bar.anim),
17388
17391
  bar.anim.elementId === selectedElementId && "ring-1 ring-primary"
@@ -17416,7 +17419,7 @@ function AnimationTimelineSection({
17416
17419
  onDragEnd: handleDragEnd,
17417
17420
  onMouseEnter: () => handleAnimationHover(anim),
17418
17421
  onMouseLeave: handleAnimationHoverEnd,
17419
- className: chunkQVQTDWB7_js.cn(
17422
+ className: chunkKA7ST7IH_js.cn(
17420
17423
  "flex items-center gap-1 px-1 py-0.5 rounded text-[10px] cursor-grab transition-colors",
17421
17424
  isSelected ? "bg-primary/30 text-primary" : "bg-muted/50 text-muted-foreground",
17422
17425
  isDragging && "opacity-40",
@@ -17580,13 +17583,13 @@ function useAnimationPreview({
17580
17583
  if (!preset || preset === "none") {
17581
17584
  return;
17582
17585
  }
17583
- chunkQVQTDWB7_js.startPreviewAnimation(anim.elementId, preset, {
17586
+ chunkKA7ST7IH_js.startPreviewAnimation(anim.elementId, preset, {
17584
17587
  direction: anim.direction,
17585
17588
  durationMs: anim.durationMs ?? 500,
17586
17589
  timingCurve: anim.timingCurve
17587
17590
  });
17588
17591
  }, []);
17589
- const handleAnimationHoverEnd = React14.useCallback(() => chunkQVQTDWB7_js.stopPreviewAnimation(), []);
17592
+ const handleAnimationHoverEnd = React14.useCallback(() => chunkKA7ST7IH_js.stopPreviewAnimation(), []);
17590
17593
  const handlePreviewClick = React14.useCallback(() => {
17591
17594
  if (!selectedElementAnimation) {
17592
17595
  return;
@@ -17595,7 +17598,7 @@ function useAnimationPreview({
17595
17598
  if (!preset || preset === "none") {
17596
17599
  return;
17597
17600
  }
17598
- chunkQVQTDWB7_js.startPreviewAnimation(selectedElementId, preset, {
17601
+ chunkKA7ST7IH_js.startPreviewAnimation(selectedElementId, preset, {
17599
17602
  direction: selectedElementAnimation.direction,
17600
17603
  durationMs: selectedElementAnimation.durationMs ?? 500,
17601
17604
  timingCurve: selectedElementAnimation.timingCurve
@@ -17927,7 +17930,7 @@ function AnimationPanel({
17927
17930
  {
17928
17931
  type: "button",
17929
17932
  disabled: !canEdit,
17930
- className: chunkQVQTDWB7_js.cn(
17933
+ className: chunkKA7ST7IH_js.cn(
17931
17934
  "flex items-center justify-center w-7 h-7 rounded border transition-colors",
17932
17935
  isActive ? "border-primary bg-primary/20 text-primary" : "border-border bg-muted text-muted-foreground hover:bg-accent"
17933
17936
  ),
@@ -18169,7 +18172,7 @@ function ActionTriggerSection({
18169
18172
  "select",
18170
18173
  {
18171
18174
  disabled: !canEdit,
18172
- className: chunkQVQTDWB7_js.cn(INPUT, "w-full"),
18175
+ className: chunkKA7ST7IH_js.cn(INPUT, "w-full"),
18173
18176
  value: activeType,
18174
18177
  onChange: (e) => onChangeType(e.target.value),
18175
18178
  children: ACTION_TYPE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.label) }, o.value))
@@ -18180,7 +18183,7 @@ function ActionTriggerSection({
18180
18183
  {
18181
18184
  type: "text",
18182
18185
  disabled: !canEdit,
18183
- className: chunkQVQTDWB7_js.cn(INPUT, "w-full"),
18186
+ className: chunkKA7ST7IH_js.cn(INPUT, "w-full"),
18184
18187
  placeholder: "https://...",
18185
18188
  value: action?.url ?? fallbackUrl ?? "",
18186
18189
  onChange: (e) => onChangeUrl(e.target.value)
@@ -18191,7 +18194,7 @@ function ActionTriggerSection({
18191
18194
  {
18192
18195
  type: "number",
18193
18196
  disabled: !canEdit,
18194
- className: chunkQVQTDWB7_js.cn(INPUT, "w-full"),
18197
+ className: chunkKA7ST7IH_js.cn(INPUT, "w-full"),
18195
18198
  placeholder: t("pptx.action.slideNumberPlaceholder"),
18196
18199
  min: 1,
18197
18200
  max: slideCount,
@@ -19846,7 +19849,7 @@ function ConnectorPanel({
19846
19849
  "select",
19847
19850
  {
19848
19851
  disabled: !canEdit,
19849
- className: chunkQVQTDWB7_js.cn(INPUT, "w-full"),
19852
+ className: chunkKA7ST7IH_js.cn(INPUT, "w-full"),
19850
19853
  value: selectedElement.shapeStyle?.[key] ?? "none",
19851
19854
  onChange: (e) => onUpdateElementStyle({ [key]: e.target.value }),
19852
19855
  children: [
@@ -19898,7 +19901,7 @@ function OlePropertiesPanel({
19898
19901
  /* @__PURE__ */ jsxRuntime.jsx(
19899
19902
  "span",
19900
19903
  {
19901
- className: chunkQVQTDWB7_js.cn(
19904
+ className: chunkKA7ST7IH_js.cn(
19902
19905
  "inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium",
19903
19906
  ole.isLinked ? "bg-blue-500/20 text-blue-400" : "bg-green-500/20 text-green-400"
19904
19907
  ),
@@ -19957,7 +19960,7 @@ function LayerOrderButtons({
19957
19960
  "button",
19958
19961
  {
19959
19962
  type: "button",
19960
- className: chunkQVQTDWB7_js.cn("flex-1", BTN),
19963
+ className: chunkKA7ST7IH_js.cn("flex-1", BTN),
19961
19964
  disabled: !canEdit,
19962
19965
  onClick: () => onMoveLayer("forward"),
19963
19966
  children: "\u2191 Forward"
@@ -19967,7 +19970,7 @@ function LayerOrderButtons({
19967
19970
  "button",
19968
19971
  {
19969
19972
  type: "button",
19970
- className: chunkQVQTDWB7_js.cn("flex-1", BTN),
19973
+ className: chunkKA7ST7IH_js.cn("flex-1", BTN),
19971
19974
  disabled: !canEdit,
19972
19975
  onClick: () => onMoveLayer("backward"),
19973
19976
  children: "\u2193 Backward"
@@ -19991,7 +19994,7 @@ function ArtisticEffectsGallery({
19991
19994
  {
19992
19995
  type: "button",
19993
19996
  disabled: !canEdit,
19994
- className: chunkQVQTDWB7_js.cn(
19997
+ className: chunkKA7ST7IH_js.cn(
19995
19998
  "flex flex-col items-center gap-0.5 rounded border p-0.5 hover:bg-accent/50",
19996
19999
  isActive ? "border-primary bg-primary/10" : "border-border"
19997
20000
  ),
@@ -20440,7 +20443,7 @@ function ImagePropertiesPanel({
20440
20443
  {
20441
20444
  rows: 2,
20442
20445
  disabled: !canEdit,
20443
- className: chunkQVQTDWB7_js.cn(INPUT, "resize-none text-[11px]"),
20446
+ className: chunkKA7ST7IH_js.cn(INPUT, "resize-none text-[11px]"),
20444
20447
  value: selectedElement.altText ?? "",
20445
20448
  onChange: (e) => onUpdateElement({
20446
20449
  altText: e.target.value
@@ -21399,11 +21402,11 @@ function ShapeTextPanels({
21399
21402
  {
21400
21403
  value: selectedElement.shapeType || "rect",
21401
21404
  disabled: !canEdit,
21402
- className: chunkQVQTDWB7_js.cn(INPUT, "w-full"),
21405
+ className: chunkKA7ST7IH_js.cn(INPUT, "w-full"),
21403
21406
  onChange: (e) => onUpdateElement({
21404
21407
  shapeType: e.target.value
21405
21408
  }),
21406
- children: chunkQVQTDWB7_js.SHAPE_PRESETS.filter((p) => p.type !== "connector").map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.type, children: t(p.i18nKey) }, p.type))
21409
+ children: chunkKA7ST7IH_js.SHAPE_PRESETS.filter((p) => p.type !== "connector").map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.type, children: t(p.i18nKey) }, p.type))
21407
21410
  }
21408
21411
  )
21409
21412
  ] }),
@@ -21533,7 +21536,7 @@ function TextFormatToggle({
21533
21536
  {
21534
21537
  type: "button",
21535
21538
  disabled,
21536
- className: chunkQVQTDWB7_js.cn(
21539
+ className: chunkKA7ST7IH_js.cn(
21537
21540
  "px-2 py-1 rounded text-[11px] transition-colors",
21538
21541
  italic && "italic",
21539
21542
  underline && "underline",
@@ -21825,7 +21828,7 @@ function SmartArtLayoutSwitcher({
21825
21828
  type: "button",
21826
21829
  "data-testid": `smartart-layout-${type}`,
21827
21830
  disabled: !canEdit,
21828
- className: chunkQVQTDWB7_js.cn(
21831
+ className: chunkKA7ST7IH_js.cn(
21829
21832
  "flex flex-col items-center gap-0.5 rounded border p-1.5 transition-colors",
21830
21833
  "text-[9px] leading-tight",
21831
21834
  isActive ? "border-primary bg-primary/15 text-primary" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground",
@@ -21897,7 +21900,7 @@ function SmartArtNodeStyleControls({
21897
21900
  disabled: !canEdit,
21898
21901
  "aria-label": `Bold ${label}`,
21899
21902
  "aria-pressed": bold,
21900
- className: chunkQVQTDWB7_js.cn(
21903
+ className: chunkKA7ST7IH_js.cn(
21901
21904
  EMPHASIS_BTN,
21902
21905
  "font-bold",
21903
21906
  bold ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground"
@@ -21913,7 +21916,7 @@ function SmartArtNodeStyleControls({
21913
21916
  disabled: !canEdit,
21914
21917
  "aria-label": `Italic ${label}`,
21915
21918
  "aria-pressed": italic,
21916
- className: chunkQVQTDWB7_js.cn(
21919
+ className: chunkKA7ST7IH_js.cn(
21917
21920
  EMPHASIS_BTN,
21918
21921
  "italic",
21919
21922
  italic ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground"
@@ -21952,7 +21955,7 @@ function SmartArtNodeRow({
21952
21955
  "div",
21953
21956
  {
21954
21957
  role: "listitem",
21955
- className: chunkQVQTDWB7_js.cn(
21958
+ className: chunkKA7ST7IH_js.cn(
21956
21959
  "rounded border bg-background/60 p-1.5",
21957
21960
  isChild ? "border-border/60 ml-4" : "border-border"
21958
21961
  ),
@@ -21967,7 +21970,7 @@ function SmartArtNodeRow({
21967
21970
  "data-testid": "smartart-node-text",
21968
21971
  disabled: !canEdit,
21969
21972
  "aria-label": label,
21970
- className: chunkQVQTDWB7_js.cn(INPUT, "flex-1 text-[11px] py-0.5"),
21973
+ className: chunkKA7ST7IH_js.cn(INPUT, "flex-1 text-[11px] py-0.5"),
21971
21974
  value: text,
21972
21975
  onChange: (e) => onChangeText(nodeId, e.target.value),
21973
21976
  onKeyDown: (e) => onKeyDown(e, nodeId),
@@ -22016,7 +22019,7 @@ function SmartArtNodeRow({
22016
22019
  {
22017
22020
  type: "button",
22018
22021
  disabled: !canEdit || removeDisabled,
22019
- className: chunkQVQTDWB7_js.cn(MINI_BTN, "hover:text-red-400"),
22022
+ className: chunkKA7ST7IH_js.cn(MINI_BTN, "hover:text-red-400"),
22020
22023
  onClick: () => onRemove(nodeId),
22021
22024
  "aria-label": `Remove ${label}`,
22022
22025
  title: removeDisabled ? t("pptx.smartArt.layoutMinimum") : t("pptx.smartArt.remove"),
@@ -22074,7 +22077,7 @@ function SmartArtPropertiesPanel({
22074
22077
  const reflowed = box ? chunkVSNXVKJI_js.rebuildDrawingShapesIfCleared(
22075
22078
  newData,
22076
22079
  newData.layout,
22077
- chunkQVQTDWB7_js.resolveSmartArtDataPalette(newData),
22080
+ chunkKA7ST7IH_js.resolveSmartArtDataPalette(newData),
22078
22081
  newData.style ?? "flat",
22079
22082
  "inspector",
22080
22083
  box
@@ -22183,7 +22186,7 @@ function SmartArtPropertiesPanel({
22183
22186
  disabled: !canEdit,
22184
22187
  "data-testid": "smartart-color-scheme",
22185
22188
  "aria-label": t("pptx.smartart.colorScheme"),
22186
- className: chunkQVQTDWB7_js.cn(INPUT, "w-full"),
22189
+ className: chunkKA7ST7IH_js.cn(INPUT, "w-full"),
22187
22190
  value: smartArtData.colorScheme ?? "colorful1",
22188
22191
  onChange: (e) => updateSmartArt({ colorScheme: e.target.value }),
22189
22192
  children: COLOR_SCHEMES.map((cs) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: cs, children: cs }, cs))
@@ -22198,7 +22201,7 @@ function SmartArtPropertiesPanel({
22198
22201
  type: "button",
22199
22202
  disabled: !canEdit,
22200
22203
  "aria-pressed": (smartArtData.style ?? "flat") === s,
22201
- className: chunkQVQTDWB7_js.cn(
22204
+ className: chunkKA7ST7IH_js.cn(
22202
22205
  "flex-1 px-2 py-1 text-[10px] rounded border transition-colors",
22203
22206
  (smartArtData.style ?? "flat") === s ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground hover:bg-muted"
22204
22207
  ),
@@ -22602,7 +22605,7 @@ function TableCellFormattingPanel({
22602
22605
  {
22603
22606
  type: "button",
22604
22607
  disabled: !canEdit,
22605
- className: chunkQVQTDWB7_js.cn(
22608
+ className: chunkKA7ST7IH_js.cn(
22606
22609
  "px-2 py-1 rounded text-[11px] transition-colors",
22607
22610
  cls,
22608
22611
  cs[key] ? "bg-primary text-white" : "bg-muted hover:bg-accent"
@@ -22621,7 +22624,7 @@ function TableCellFormattingPanel({
22621
22624
  {
22622
22625
  type: "button",
22623
22626
  disabled: !canEdit,
22624
- className: chunkQVQTDWB7_js.cn(
22627
+ className: chunkKA7ST7IH_js.cn(
22625
22628
  "px-2 py-1 rounded text-[11px] transition-colors",
22626
22629
  cs.align === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
22627
22630
  ),
@@ -22639,7 +22642,7 @@ function TableCellFormattingPanel({
22639
22642
  {
22640
22643
  type: "button",
22641
22644
  disabled: !canEdit,
22642
- className: chunkQVQTDWB7_js.cn(
22645
+ className: chunkKA7ST7IH_js.cn(
22643
22646
  "px-2 py-1 rounded text-[11px] transition-colors",
22644
22647
  cs.vAlign === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
22645
22648
  ),
@@ -22672,7 +22675,7 @@ function TableCellFormattingPanel({
22672
22675
  {
22673
22676
  type: "number",
22674
22677
  disabled: !canEdit,
22675
- className: chunkQVQTDWB7_js.cn(INPUT, "w-14"),
22678
+ className: chunkKA7ST7IH_js.cn(INPUT, "w-14"),
22676
22679
  min: 0,
22677
22680
  max: 10,
22678
22681
  value: cs[widthKey] ?? 1,
@@ -22688,7 +22691,7 @@ function TableCellFormattingPanel({
22688
22691
  {
22689
22692
  type: "button",
22690
22693
  disabled: !canEdit,
22691
- className: chunkQVQTDWB7_js.cn(BTN, "text-center"),
22694
+ className: chunkKA7ST7IH_js.cn(BTN, "text-center"),
22692
22695
  onClick: () => {
22693
22696
  const newRows = chunkVSNXVKJI_js.computeMergeCellRight(td, rowIndex, columnIndex);
22694
22697
  if (newRows) {
@@ -22703,7 +22706,7 @@ function TableCellFormattingPanel({
22703
22706
  {
22704
22707
  type: "button",
22705
22708
  disabled: !canEdit,
22706
- className: chunkQVQTDWB7_js.cn(BTN, "text-center"),
22709
+ className: chunkKA7ST7IH_js.cn(BTN, "text-center"),
22707
22710
  onClick: () => {
22708
22711
  const newRows = chunkVSNXVKJI_js.computeMergeCellDown(td, rowIndex, columnIndex);
22709
22712
  if (newRows) {
@@ -22718,7 +22721,7 @@ function TableCellFormattingPanel({
22718
22721
  {
22719
22722
  type: "button",
22720
22723
  disabled: !canEdit,
22721
- className: chunkQVQTDWB7_js.cn(BTN, "text-center"),
22724
+ className: chunkKA7ST7IH_js.cn(BTN, "text-center"),
22722
22725
  onClick: () => {
22723
22726
  const newRows = chunkVSNXVKJI_js.computeSplitCell(td, rowIndex, columnIndex);
22724
22727
  if (newRows) {
@@ -23126,7 +23129,7 @@ function InspectorCommentRow({
23126
23129
  return /* @__PURE__ */ jsxRuntime.jsxs(
23127
23130
  "div",
23128
23131
  {
23129
- className: chunkQVQTDWB7_js.cn(
23132
+ className: chunkKA7ST7IH_js.cn(
23130
23133
  "rounded border border-border bg-card p-2",
23131
23134
  depth > 0 && "ml-3 border-l-2 border-l-primary/40"
23132
23135
  ),
@@ -23214,7 +23217,7 @@ function InspectorCommentRow({
23214
23217
  "button",
23215
23218
  {
23216
23219
  type: "button",
23217
- className: chunkQVQTDWB7_js.cn(
23220
+ className: chunkKA7ST7IH_js.cn(
23218
23221
  "inline-flex items-center justify-center p-1.5 border-l border-border transition-colors",
23219
23222
  comment.resolved ? "bg-green-900/40 text-green-300 hover:bg-green-900/60" : "hover:bg-accent text-foreground hover:text-foreground"
23220
23223
  ),
@@ -23408,7 +23411,7 @@ function InspectorCommentsSection({
23408
23411
  type: "button",
23409
23412
  onClick: onAddComment,
23410
23413
  disabled: !commentDraft.trim(),
23411
- className: chunkQVQTDWB7_js.cn(
23414
+ className: chunkKA7ST7IH_js.cn(
23412
23415
  "w-full inline-flex items-center justify-center gap-1 rounded px-2 py-1 text-[11px] font-medium transition-colors",
23413
23416
  commentDraft.trim() ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
23414
23417
  ),
@@ -23433,7 +23436,7 @@ function InspectorPaneHeader({
23433
23436
  {
23434
23437
  type: "button",
23435
23438
  title: label,
23436
- className: chunkQVQTDWB7_js.cn(
23439
+ className: chunkKA7ST7IH_js.cn(
23437
23440
  "flex items-center gap-1 px-2 py-1 rounded text-[11px] transition-colors",
23438
23441
  activeTab === key ? "bg-primary text-white" : "text-muted-foreground hover:text-foreground hover:bg-accent"
23439
23442
  ),
@@ -23542,7 +23545,7 @@ function CustomPropertiesBlock({
23542
23545
  "button",
23543
23546
  {
23544
23547
  type: "button",
23545
- className: chunkQVQTDWB7_js.cn(BTN, "px-1.5 text-red-400 hover:text-red-300"),
23548
+ className: chunkKA7ST7IH_js.cn(BTN, "px-1.5 text-red-400 hover:text-red-300"),
23546
23549
  onClick: () => onUpdate(customProperties.filter((_, i) => i !== index)),
23547
23550
  children: "\xD7"
23548
23551
  }
@@ -23677,7 +23680,7 @@ function PresentationSettingsCard({
23677
23680
  "select",
23678
23681
  {
23679
23682
  disabled: !canEdit,
23680
- className: chunkQVQTDWB7_js.cn(INPUT, "w-28"),
23683
+ className: chunkKA7ST7IH_js.cn(INPUT, "w-28"),
23681
23684
  value: presentationProperties.showType ?? "presented",
23682
23685
  onChange: (e) => onUpdate({
23683
23686
  showType: e.target.value
@@ -23735,7 +23738,7 @@ function PresentationSettingsCard({
23735
23738
  min: 1,
23736
23739
  max: 16,
23737
23740
  disabled: !canEdit,
23738
- className: chunkQVQTDWB7_js.cn(INPUT, "w-20"),
23741
+ className: chunkKA7ST7IH_js.cn(INPUT, "w-20"),
23739
23742
  value: presentationProperties.printSlidesPerPage ?? 1,
23740
23743
  onChange: (e) => onUpdate({ printSlidesPerPage: Number(e.target.value) })
23741
23744
  }
@@ -24032,7 +24035,7 @@ function TagsSection({
24032
24035
  "button",
24033
24036
  {
24034
24037
  type: "button",
24035
- className: chunkQVQTDWB7_js.cn(BTN, "px-1.5 text-red-400 hover:text-red-300"),
24038
+ className: chunkKA7ST7IH_js.cn(BTN, "px-1.5 text-red-400 hover:text-red-300"),
24036
24039
  title: t("pptx.tags.deleteTag"),
24037
24040
  onClick: () => deleteTag(tag.colIdx, tag.tagIdx),
24038
24041
  children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuTrash2, { className: "w-3 h-3" })
@@ -24132,7 +24135,7 @@ function PresentationPropertiesPanel({
24132
24135
  canEdit
24133
24136
  }
24134
24137
  ),
24135
- activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkQVQTDWB7_js.cn(CARD, "space-y-1"), children: [
24138
+ activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkKA7ST7IH_js.cn(CARD, "space-y-1"), children: [
24136
24139
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: "Slide" }),
24137
24140
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[11px] text-muted-foreground", children: [
24138
24141
  activeSlide.elements?.length ?? 0,
@@ -24153,7 +24156,7 @@ function SlideBackgroundPanel({
24153
24156
  const { t } = reactI18next.useTranslation();
24154
24157
  const bgImageInputRef = React14.useRef(null);
24155
24158
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
24156
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkQVQTDWB7_js.cn(CARD, "space-y-2"), children: [
24159
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkKA7ST7IH_js.cn(CARD, "space-y-2"), children: [
24157
24160
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: "Background" }),
24158
24161
  /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
24159
24162
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-10 shrink-0", children: "Colour" }),
@@ -24199,7 +24202,7 @@ function SlideBackgroundPanel({
24199
24202
  "button",
24200
24203
  {
24201
24204
  type: "button",
24202
- className: chunkQVQTDWB7_js.cn(BTN, "flex-1 text-center"),
24205
+ className: chunkKA7ST7IH_js.cn(BTN, "flex-1 text-center"),
24203
24206
  disabled: !canEdit,
24204
24207
  onClick: () => bgImageInputRef.current?.click(),
24205
24208
  children: activeSlide.backgroundImage ? t("pptx.slideBackground.replaceImage") : t("pptx.slideBackground.chooseImage")
@@ -24232,7 +24235,7 @@ function SlideBackgroundPanel({
24232
24235
  "button",
24233
24236
  {
24234
24237
  type: "button",
24235
- className: chunkQVQTDWB7_js.cn(BTN, "w-full text-center text-red-400 hover:text-red-300"),
24238
+ className: chunkKA7ST7IH_js.cn(BTN, "w-full text-center text-red-400 hover:text-red-300"),
24236
24239
  disabled: !canEdit,
24237
24240
  onClick: () => onUpdateSlide({
24238
24241
  backgroundColor: void 0,
@@ -24263,7 +24266,7 @@ function TemplateBackgroundCard({
24263
24266
  onGetTemplateBackgroundColor
24264
24267
  }) {
24265
24268
  const { t } = reactI18next.useTranslation();
24266
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkQVQTDWB7_js.cn(CARD, "space-y-2"), children: [
24269
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkKA7ST7IH_js.cn(CARD, "space-y-2"), children: [
24267
24270
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: t("pptx.slideBackground.templateBackgroundsHeading") }),
24268
24271
  activeSlide.layoutPath && /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
24269
24272
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -24410,7 +24413,7 @@ function InspectorPane(props) {
24410
24413
  } = props;
24411
24414
  const hasSelection = selectedElement !== null;
24412
24415
  const { t } = reactI18next.useTranslation();
24413
- const { dragY, handlers: dragHandlers } = chunkQVQTDWB7_js.useSheetDismissDrag(onClose);
24416
+ const { dragY, handlers: dragHandlers } = chunkKA7ST7IH_js.useSheetDismissDrag(onClose);
24414
24417
  const {
24415
24418
  animationPanelHeight,
24416
24419
  effectiveThemeOptions,
@@ -24431,7 +24434,7 @@ function InspectorPane(props) {
24431
24434
  /* @__PURE__ */ jsxRuntime.jsxs(
24432
24435
  "div",
24433
24436
  {
24434
- className: chunkQVQTDWB7_js.cn(
24437
+ className: chunkKA7ST7IH_js.cn(
24435
24438
  // Shared styles
24436
24439
  "bg-background flex flex-col text-xs text-foreground shadow-xl",
24437
24440
  // Mobile: absolute bottom sheet overlay sized via dvh so it
@@ -24469,7 +24472,7 @@ function InspectorPane(props) {
24469
24472
  ),
24470
24473
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 overflow-y-auto p-3 space-y-3", children: [
24471
24474
  activeTab === "elements" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
24472
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkQVQTDWB7_js.cn(HEADING, "mb-2"), children: t("pptx.inspector.layerOrder") }),
24475
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkKA7ST7IH_js.cn(HEADING, "mb-2"), children: t("pptx.inspector.layerOrder") }),
24473
24476
  activeSlide ? [...activeSlide.elements || []].reverse().map((el, ri) => {
24474
24477
  const idx = (activeSlide.elements || []).length - 1 - ri;
24475
24478
  const sel = selectedElement?.id === el.id || selectedElementIds.includes(el.id);
@@ -24478,7 +24481,7 @@ function InspectorPane(props) {
24478
24481
  "div",
24479
24482
  {
24480
24483
  title: `${el.type} \u2014 ${el.id}`,
24481
- className: chunkQVQTDWB7_js.cn(
24484
+ className: chunkKA7ST7IH_js.cn(
24482
24485
  "flex items-center gap-2 px-2 py-1 rounded cursor-pointer transition-colors",
24483
24486
  sel ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground"
24484
24487
  ),
@@ -25082,7 +25085,7 @@ function PresentationTouchControls({
25082
25085
  hideNavigation = false
25083
25086
  }) {
25084
25087
  const { t } = reactI18next.useTranslation();
25085
- const { isTouchDevice } = chunkQVQTDWB7_js.useIsMobile();
25088
+ const { isTouchDevice } = chunkKA7ST7IH_js.useIsMobile();
25086
25089
  if (!isTouchDevice) {
25087
25090
  return null;
25088
25091
  }
@@ -25783,7 +25786,7 @@ function PrintDialog({
25783
25786
  defaultFrameSlides
25784
25787
  }) {
25785
25788
  const { t } = reactI18next.useTranslation();
25786
- const { panelStyle, handlers: dragHandlers } = chunkQVQTDWB7_js.useModalDismissDrag(onClose);
25789
+ const { panelStyle, handlers: dragHandlers } = chunkKA7ST7IH_js.useModalDismissDrag(onClose);
25787
25790
  const [printWhat, setPrintWhat] = React14.useState("slides");
25788
25791
  const [orientation, setOrientation] = React14.useState("landscape");
25789
25792
  const [colorMode, setColorMode] = React14.useState("color");
@@ -26312,7 +26315,7 @@ function BroadcastDialog({
26312
26315
  const [serverUrl, setServerUrl] = React14.useState("");
26313
26316
  const [copied, setCopied] = React14.useState(false);
26314
26317
  const dialogRef = React14.useRef(null);
26315
- const { panelStyle, handlers: dragHandlers } = chunkQVQTDWB7_js.useModalDismissDrag(onClose);
26318
+ const { panelStyle, handlers: dragHandlers } = chunkKA7ST7IH_js.useModalDismissDrag(onClose);
26316
26319
  useModalFocus(open, dialogRef, onClose);
26317
26320
  React14.useEffect(() => {
26318
26321
  if (open && !isBroadcasting) {
@@ -26875,7 +26878,7 @@ function ShareDialog({
26875
26878
  const [invitation, setInvitation] = React14.useState("");
26876
26879
  const [copied, setCopied] = React14.useState(false);
26877
26880
  const dialogRef = React14.useRef(null);
26878
- const { panelStyle, handlers: dragHandlers } = chunkQVQTDWB7_js.useModalDismissDrag(onClose);
26881
+ const { panelStyle, handlers: dragHandlers } = chunkKA7ST7IH_js.useModalDismissDrag(onClose);
26879
26882
  useModalFocus(open, dialogRef, onClose);
26880
26883
  React14.useEffect(() => {
26881
26884
  if (activeCollaboration) {
@@ -27150,12 +27153,12 @@ function HyperlinkEditDialog({
27150
27153
  onCancel
27151
27154
  }) {
27152
27155
  const { t } = reactI18next.useTranslation();
27153
- const { panelStyle, handlers: dragHandlers } = chunkQVQTDWB7_js.useModalDismissDrag(onCancel);
27156
+ const { panelStyle, handlers: dragHandlers } = chunkKA7ST7IH_js.useModalDismissDrag(onCancel);
27154
27157
  const inputRef = React14.useRef(null);
27155
- const detectedType = chunkQVQTDWB7_js.detectTargetType(initialUrl, initialAction);
27156
- const emailParts = chunkQVQTDWB7_js.parseEmailUrl(initialUrl || "");
27157
- const detectedSlide = chunkQVQTDWB7_js.parseSlideFromUrl(initialUrl, initialAction);
27158
- const detectedVerb = initialAction ? chunkQVQTDWB7_js.ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
27158
+ const detectedType = chunkKA7ST7IH_js.detectTargetType(initialUrl, initialAction);
27159
+ const emailParts = chunkKA7ST7IH_js.parseEmailUrl(initialUrl || "");
27160
+ const detectedSlide = chunkKA7ST7IH_js.parseSlideFromUrl(initialUrl, initialAction);
27161
+ const detectedVerb = initialAction ? chunkKA7ST7IH_js.ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
27159
27162
  const [targetType, setTargetType] = React14.useState(detectedType);
27160
27163
  const [url, setUrl] = React14.useState(
27161
27164
  detectedType === "email" || detectedType === "slide" || detectedType === "action" ? "" : initialUrl || ""
@@ -27186,7 +27189,7 @@ function HyperlinkEditDialog({
27186
27189
  actionVerb
27187
27190
  });
27188
27191
  };
27189
- const tabCls = (active) => chunkQVQTDWB7_js.cn(
27192
+ const tabCls = (active) => chunkKA7ST7IH_js.cn(
27190
27193
  "px-3 py-1.5 text-xs rounded-t border-b-2 transition-colors",
27191
27194
  active ? "border-primary text-primary font-medium" : "border-transparent text-muted-foreground hover:text-foreground hover:border-border"
27192
27195
  );
@@ -27576,7 +27579,7 @@ function DrawingOverlaySvg({
27576
27579
  }
27577
27580
  );
27578
27581
  }
27579
- function GridOverlay({ canvasSize, gridSpacingPx = chunkQVQTDWB7_js.GRID_SIZE, visible }) {
27582
+ function GridOverlay({ canvasSize, gridSpacingPx = chunkKA7ST7IH_js.GRID_SIZE, visible }) {
27580
27583
  const spacing = Math.max(gridSpacingPx, 2);
27581
27584
  const patternId = React14.useMemo(() => `grid-dot-pattern-${Math.random().toString(36).slice(2, 8)}`, []);
27582
27585
  if (!visible) {
@@ -28857,7 +28860,7 @@ function ViewerBottomPanels({
28857
28860
  hideStatusBar = false,
28858
28861
  hiddenActions
28859
28862
  }) {
28860
- const { isHidden } = chunkQVQTDWB7_js.useToolbarVisibility(hiddenActions);
28863
+ const { isHidden } = chunkKA7ST7IH_js.useToolbarVisibility(hiddenActions);
28861
28864
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
28862
28865
  onResizeBottom && !isSlideNotesCollapsed && /* @__PURE__ */ jsxRuntime.jsx(ResizeHandle, { direction: "vertical", onResize: onResizeBottom }),
28863
28866
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -29076,7 +29079,7 @@ function scopeLayoutOptionsToActiveSlide(options, activeSlide) {
29076
29079
  function TitleBar(p) {
29077
29080
  const { t } = reactI18next.useTranslation();
29078
29081
  const editing = (p.mode === "edit" || p.mode === "master") && p.canEdit;
29079
- const { isHidden } = chunkQVQTDWB7_js.useToolbarVisibility(p.hiddenActions);
29082
+ const { isHidden } = chunkKA7ST7IH_js.useToolbarVisibility(p.hiddenActions);
29080
29083
  const [searchQuery, setSearchQuery] = React14.useState("");
29081
29084
  const [searchFocused, setSearchFocused] = React14.useState(false);
29082
29085
  const searchRef = React14.useRef(null);
@@ -29132,7 +29135,7 @@ function TitleBar(p) {
29132
29135
  role: "switch",
29133
29136
  "aria-checked": p.autosaveEnabled,
29134
29137
  onClick: p.onToggleAutosave,
29135
- className: chunkQVQTDWB7_js.cn(
29138
+ className: chunkKA7ST7IH_js.cn(
29136
29139
  chunkVSNXVKJI_js.TITLE_BAR_CLASSES.toggleTrack,
29137
29140
  p.autosaveEnabled ? chunkVSNXVKJI_js.TITLE_BAR_CLASSES.toggleTrackOn : chunkVSNXVKJI_js.TITLE_BAR_CLASSES.toggleTrackOff
29138
29141
  ),
@@ -29141,7 +29144,7 @@ function TitleBar(p) {
29141
29144
  children: /* @__PURE__ */ jsxRuntime.jsx(
29142
29145
  "span",
29143
29146
  {
29144
- className: chunkQVQTDWB7_js.cn(
29147
+ className: chunkKA7ST7IH_js.cn(
29145
29148
  chunkVSNXVKJI_js.TITLE_BAR_CLASSES.toggleKnob,
29146
29149
  p.autosaveEnabled ? chunkVSNXVKJI_js.TITLE_BAR_CLASSES.toggleKnobOn : chunkVSNXVKJI_js.TITLE_BAR_CLASSES.toggleKnobOff
29147
29150
  )
@@ -29196,7 +29199,7 @@ function TitleBar(p) {
29196
29199
  /* @__PURE__ */ jsxRuntime.jsx(
29197
29200
  "span",
29198
29201
  {
29199
- className: chunkQVQTDWB7_js.cn(
29202
+ className: chunkKA7ST7IH_js.cn(
29200
29203
  chunkVSNXVKJI_js.TITLE_BAR_CLASSES.statusText,
29201
29204
  p.autosaveStatus?.state === "error" && p.autosaveEnabled && chunkVSNXVKJI_js.TITLE_BAR_CLASSES.statusError,
29202
29205
  p.autosaveStatus?.state === "saving" && p.autosaveEnabled && chunkVSNXVKJI_js.TITLE_BAR_CLASSES.statusSaving
@@ -29210,7 +29213,7 @@ function TitleBar(p) {
29210
29213
  /* @__PURE__ */ jsxRuntime.jsxs(
29211
29214
  "div",
29212
29215
  {
29213
- className: chunkQVQTDWB7_js.cn(
29216
+ className: chunkKA7ST7IH_js.cn(
29214
29217
  chunkVSNXVKJI_js.TITLE_BAR_CLASSES.searchBox,
29215
29218
  (searchFocused || p.findReplaceOpen) && "text-foreground bg-background"
29216
29219
  ),
@@ -29810,7 +29813,7 @@ function EquationEditorDialog({
29810
29813
  existingOmml
29811
29814
  }) {
29812
29815
  const { t } = reactI18next.useTranslation();
29813
- const { panelStyle, handlers: dragHandlers } = chunkQVQTDWB7_js.useModalDismissDrag(onClose);
29816
+ const { panelStyle, handlers: dragHandlers } = chunkKA7ST7IH_js.useModalDismissDrag(onClose);
29814
29817
  const initialLatex = React14.useMemo(() => {
29815
29818
  if (!existingOmml) {
29816
29819
  return "";
@@ -29943,7 +29946,7 @@ function EquationEditorDialog({
29943
29946
  {
29944
29947
  type: "button",
29945
29948
  onClick: () => handleTemplateClick(tmpl.latex),
29946
- className: chunkQVQTDWB7_js.cn(
29949
+ className: chunkKA7ST7IH_js.cn(
29947
29950
  "flex flex-col items-center gap-1 p-2 rounded-lg border transition-colors",
29948
29951
  latex === tmpl.latex ? "border-primary bg-primary/10" : "border-border bg-muted/40 hover:bg-accent/60 hover:border-border"
29949
29952
  ),
@@ -30042,7 +30045,7 @@ function InsertSmartArtDialog({
30042
30045
  onInsert
30043
30046
  }) {
30044
30047
  const { t } = reactI18next.useTranslation();
30045
- const { panelStyle, handlers: dragHandlers } = chunkQVQTDWB7_js.useModalDismissDrag(onClose);
30048
+ const { panelStyle, handlers: dragHandlers } = chunkKA7ST7IH_js.useModalDismissDrag(onClose);
30046
30049
  const [activeCategory, setActiveCategory] = React14.useState("list");
30047
30050
  const [selectedLayout, setSelectedLayout] = React14.useState(null);
30048
30051
  const dialogRef = React14.useRef(null);
@@ -30123,7 +30126,7 @@ function InsertSmartArtDialog({
30123
30126
  setActiveCategory(cat.id);
30124
30127
  setSelectedLayout(null);
30125
30128
  },
30126
- className: chunkQVQTDWB7_js.cn(
30129
+ className: chunkKA7ST7IH_js.cn(
30127
30130
  "w-full text-left px-3 py-1.5 text-xs transition-colors",
30128
30131
  activeCategory === cat.id ? "bg-primary text-white" : "text-foreground hover:bg-muted"
30129
30132
  ),
@@ -30151,7 +30154,7 @@ function InsertSmartArtDialog({
30151
30154
  onInsert(preset.layout, preset.defaultItems);
30152
30155
  onClose();
30153
30156
  },
30154
- className: chunkQVQTDWB7_js.cn(
30157
+ className: chunkKA7ST7IH_js.cn(
30155
30158
  "flex flex-col items-center gap-1 p-2 rounded border transition-colors",
30156
30159
  selectedLayout === preset.layout ? "border-primary bg-primary/20" : "border-border hover:border-border hover:bg-muted/50"
30157
30160
  ),
@@ -30181,7 +30184,7 @@ function InsertSmartArtDialog({
30181
30184
  type: "button",
30182
30185
  onClick: handleInsert,
30183
30186
  disabled: !selectedLayout,
30184
- className: chunkQVQTDWB7_js.cn(
30187
+ className: chunkKA7ST7IH_js.cn(
30185
30188
  "px-3 py-1.5 text-xs rounded transition-colors",
30186
30189
  selectedLayout ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
30187
30190
  ),
@@ -30483,7 +30486,7 @@ function ViewerCanvasArea(props) {
30483
30486
  hiddenActions
30484
30487
  } = props;
30485
30488
  const { t } = reactI18next.useTranslation();
30486
- const { isHidden } = chunkQVQTDWB7_js.useToolbarVisibility(hiddenActions);
30489
+ const { isHidden } = chunkKA7ST7IH_js.useToolbarVisibility(hiddenActions);
30487
30490
  const effectiveSlide = mode === "master" ? masterPseudoSlide : activeSlide;
30488
30491
  const effectiveTemplateElements = mode === "master" ? s.activeLayout ? s.activeMaster?.elements ?? [] : [] : templateElements;
30489
30492
  const fieldContext = React14.useMemo(() => {
@@ -30572,7 +30575,7 @@ function ViewerCanvasArea(props) {
30572
30575
  s.setActiveSlideIndex((i) => Math.max(0, i - 1));
30573
30576
  }
30574
30577
  }, [mode, presentation, s]);
30575
- const swipe = chunkQVQTDWB7_js.useSwipeNavigation({
30578
+ const swipe = chunkKA7ST7IH_js.useSwipeNavigation({
30576
30579
  enabled: swipeEnabled,
30577
30580
  onNext: handleSwipeNext,
30578
30581
  onPrev: handleSwipePrev
@@ -31360,7 +31363,7 @@ function MobileDismissSheet({
31360
31363
  className,
31361
31364
  children
31362
31365
  }) {
31363
- const { dragY, handlers } = chunkQVQTDWB7_js.useSheetDismissDrag(onClose);
31366
+ const { dragY, handlers } = chunkKA7ST7IH_js.useSheetDismissDrag(onClose);
31364
31367
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
31365
31368
  /* @__PURE__ */ jsxRuntime.jsx(
31366
31369
  "button",
@@ -31629,7 +31632,7 @@ function ThemeThumbnail({
31629
31632
  {
31630
31633
  type: "button",
31631
31634
  onClick,
31632
- className: chunkQVQTDWB7_js.cn(
31635
+ className: chunkKA7ST7IH_js.cn(
31633
31636
  "group relative flex flex-col rounded-lg border-2 transition-all overflow-hidden",
31634
31637
  selected ? "border-primary shadow-lg scale-[1.02]" : "border-border hover:border-primary/50 hover:shadow-md"
31635
31638
  ),
@@ -32263,7 +32266,7 @@ function MobileBottomBar({
32263
32266
  {
32264
32267
  type: "button",
32265
32268
  onClick,
32266
- className: chunkQVQTDWB7_js.cn(
32269
+ className: chunkKA7ST7IH_js.cn(
32267
32270
  "relative flex flex-col items-center justify-center gap-0.5 flex-1 min-h-[56px] py-1.5 text-[10px] font-medium transition-colors active:scale-95",
32268
32271
  active ? "text-primary" : "text-muted-foreground hover:text-foreground"
32269
32272
  ),
@@ -32311,7 +32314,7 @@ function MobileChromeOverlay(props) {
32311
32314
  canEdit,
32312
32315
  commentCount
32313
32316
  } = props;
32314
- const { keyboardInset, isKeyboardOpen } = chunkQVQTDWB7_js.useKeyboardInsets();
32317
+ const { keyboardInset, isKeyboardOpen } = chunkKA7ST7IH_js.useKeyboardInsets();
32315
32318
  const activeSheet = s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null;
32316
32319
  const closeAllSheets = () => {
32317
32320
  s.setIsSlidesPaneOpen(false);
@@ -32411,7 +32414,7 @@ function SettingsAppearanceTab({
32411
32414
  type: "button",
32412
32415
  onClick: () => onSelectTheme(entry.key),
32413
32416
  "aria-pressed": isActive,
32414
- className: chunkQVQTDWB7_js.cn(
32417
+ className: chunkKA7ST7IH_js.cn(
32415
32418
  "flex items-center gap-3 rounded-lg border px-3 py-2.5 text-left transition-colors",
32416
32419
  isActive ? "border-primary bg-primary/10" : "border-border hover:border-primary/50 hover:bg-accent"
32417
32420
  ),
@@ -32428,7 +32431,7 @@ function SettingsAppearanceTab({
32428
32431
  /* @__PURE__ */ jsxRuntime.jsx(
32429
32432
  "span",
32430
32433
  {
32431
- className: chunkQVQTDWB7_js.cn("text-xs font-medium", isActive ? "text-primary" : "text-foreground"),
32434
+ className: chunkKA7ST7IH_js.cn("text-xs font-medium", isActive ? "text-primary" : "text-foreground"),
32432
32435
  children: t(entry.labelKey)
32433
32436
  }
32434
32437
  )
@@ -32451,7 +32454,7 @@ function SettingsLanguageTab({
32451
32454
  type: "button",
32452
32455
  onClick: () => onSelectLocale(locale.code),
32453
32456
  "aria-pressed": isActive,
32454
- className: chunkQVQTDWB7_js.cn(
32457
+ className: chunkKA7ST7IH_js.cn(
32455
32458
  "flex w-full items-center justify-between rounded px-3 py-2.5 text-left transition-colors",
32456
32459
  isActive ? "bg-primary/10 text-primary" : "text-foreground hover:bg-accent"
32457
32460
  ),
@@ -32476,7 +32479,7 @@ function ToggleSwitch({
32476
32479
  {
32477
32480
  type: "button",
32478
32481
  onClick: onToggle,
32479
- className: chunkQVQTDWB7_js.cn(
32482
+ className: chunkKA7ST7IH_js.cn(
32480
32483
  "relative inline-flex h-5 w-9 items-center rounded-full transition-colors",
32481
32484
  enabled ? "bg-primary" : "bg-muted-foreground/30"
32482
32485
  ),
@@ -32486,7 +32489,7 @@ function ToggleSwitch({
32486
32489
  children: /* @__PURE__ */ jsxRuntime.jsx(
32487
32490
  "span",
32488
32491
  {
32489
- className: chunkQVQTDWB7_js.cn(
32492
+ className: chunkKA7ST7IH_js.cn(
32490
32493
  "inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform",
32491
32494
  enabled ? "translate-x-[18px]" : "translate-x-[3px]"
32492
32495
  )
@@ -32510,7 +32513,7 @@ function SettingsDialog({
32510
32513
  }) {
32511
32514
  const [activeTab, setActiveTab] = React14.useState("general");
32512
32515
  const { t } = reactI18next.useTranslation();
32513
- const { panelStyle, handlers: dragHandlers } = chunkQVQTDWB7_js.useModalDismissDrag(onClose);
32516
+ const { panelStyle, handlers: dragHandlers } = chunkKA7ST7IH_js.useModalDismissDrag(onClose);
32514
32517
  const handleKeyDown = React14.useCallback(
32515
32518
  (e) => {
32516
32519
  if (e.key === "Escape") {
@@ -32584,7 +32587,7 @@ function SettingsDialog({
32584
32587
  {
32585
32588
  type: "button",
32586
32589
  onClick: () => setActiveTab(tab.id),
32587
- className: chunkQVQTDWB7_js.cn(
32590
+ className: chunkKA7ST7IH_js.cn(
32588
32591
  "px-3 py-2 text-xs font-medium transition-colors relative",
32589
32592
  activeTab === tab.id ? "text-primary" : "text-muted-foreground hover:text-foreground"
32590
32593
  ),
@@ -32621,10 +32624,10 @@ function SettingsDialog({
32621
32624
  onSelectLocale
32622
32625
  }
32623
32626
  ),
32624
- activeTab === "shortcuts" && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: chunkQVQTDWB7_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut, i) => /* @__PURE__ */ jsxRuntime.jsxs(
32627
+ activeTab === "shortcuts" && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: chunkKA7ST7IH_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut, i) => /* @__PURE__ */ jsxRuntime.jsxs(
32625
32628
  "div",
32626
32629
  {
32627
- className: chunkQVQTDWB7_js.cn(
32630
+ className: chunkKA7ST7IH_js.cn(
32628
32631
  "flex items-center justify-between gap-3 rounded px-3 py-2",
32629
32632
  i % 2 === 0 ? "bg-muted/60" : ""
32630
32633
  ),
@@ -32766,8 +32769,8 @@ var PowerPointViewer = React14.forwardRef(
32766
32769
  const [isHeaderFooterOpen, setIsHeaderFooterOpen] = React14.useState(false);
32767
32770
  const [autosaveEnabled, setAutosaveEnabled] = React14.useState(true);
32768
32771
  const [isShareDialogOpen, setIsShareDialogOpen] = React14.useState(false);
32769
- const { reducedMotion, toggleReducedMotion } = chunkQVQTDWB7_js.useReducedMotion();
32770
- const state = chunkQVQTDWB7_js.useViewerState({ content, canEdit });
32772
+ const { reducedMotion, toggleReducedMotion } = chunkKA7ST7IH_js.useReducedMotion();
32773
+ const state = chunkKA7ST7IH_js.useViewerState({ content, canEdit });
32771
32774
  const {
32772
32775
  containerRef,
32773
32776
  mode,
@@ -32827,10 +32830,10 @@ var PowerPointViewer = React14.forwardRef(
32827
32830
  },
32828
32831
  [state, reducedMotion, toggleReducedMotion]
32829
32832
  );
32830
- const mobile = chunkQVQTDWB7_js.useIsMobile({ containerRef });
32833
+ const mobile = chunkKA7ST7IH_js.useIsMobile({ containerRef });
32831
32834
  const { isMobile, isTouchDevice, isVirtualKeyboardOpen } = mobile;
32832
- const resizablePanels = chunkQVQTDWB7_js.useResizablePanels();
32833
- const { gridSpacingPx, visibleSlideIndexes, slideSectionGroups, masterPseudoSlide } = chunkQVQTDWB7_js.useDerivedSlideState({
32835
+ const resizablePanels = chunkKA7ST7IH_js.useResizablePanels();
32836
+ const { gridSpacingPx, visibleSlideIndexes, slideSectionGroups, masterPseudoSlide } = chunkKA7ST7IH_js.useDerivedSlideState({
32834
32837
  slides,
32835
32838
  sections: state.sections,
32836
32839
  customShows: state.customShows,
@@ -32852,11 +32855,11 @@ var PowerPointViewer = React14.forwardRef(
32852
32855
  state.isDrawingRef
32853
32856
  ]
32854
32857
  );
32855
- const zoom = chunkQVQTDWB7_js.useZoomViewport({
32858
+ const zoom = chunkKA7ST7IH_js.useZoomViewport({
32856
32859
  canvasSize,
32857
32860
  selectedElements: state.selectedElements
32858
32861
  });
32859
- const history = chunkQVQTDWB7_js.useEditorHistory({
32862
+ const history = chunkKA7ST7IH_js.useEditorHistory({
32860
32863
  slides,
32861
32864
  canvasSize,
32862
32865
  activeSlideIndex,
@@ -32878,7 +32881,7 @@ var PowerPointViewer = React14.forwardRef(
32878
32881
  setEditTemplateMode: state.setEditTemplateMode,
32879
32882
  setHeaderFooter: state.setHeaderFooter
32880
32883
  });
32881
- const { presentation, annotations, actionSoundHandlerRef } = chunkQVQTDWB7_js.usePresentationSetup({
32884
+ const { presentation, annotations, actionSoundHandlerRef } = chunkKA7ST7IH_js.usePresentationSetup({
32882
32885
  mode,
32883
32886
  slides,
32884
32887
  visibleSlideIndexes,
@@ -32892,7 +32895,7 @@ var PowerPointViewer = React14.forwardRef(
32892
32895
  setSlides: state.setSlides,
32893
32896
  history
32894
32897
  });
32895
- chunkQVQTDWB7_js.useTouchGestures({
32898
+ chunkKA7ST7IH_js.useTouchGestures({
32896
32899
  targetRef: zoom.canvasViewportRef,
32897
32900
  currentScale: zoom.scale,
32898
32901
  callbacks: {
@@ -32914,7 +32917,7 @@ var PowerPointViewer = React14.forwardRef(
32914
32917
  },
32915
32918
  enabled: isTouchDevice
32916
32919
  });
32917
- const dialogs = chunkQVQTDWB7_js.useViewerDialogs({
32920
+ const dialogs = chunkKA7ST7IH_js.useViewerDialogs({
32918
32921
  mode,
32919
32922
  slides,
32920
32923
  activeSlide,
@@ -32955,7 +32958,7 @@ var PowerPointViewer = React14.forwardRef(
32955
32958
  zoom.handleZoomToFit();
32956
32959
  zoom.canvasViewportRef.current?.scrollTo({ left: 0, top: 0 });
32957
32960
  }, [mode]);
32958
- const editorOps = chunkQVQTDWB7_js.useEditorOperations({
32961
+ const editorOps = chunkKA7ST7IH_js.useEditorOperations({
32959
32962
  state,
32960
32963
  history,
32961
32964
  zoom,
@@ -32987,7 +32990,7 @@ var PowerPointViewer = React14.forwardRef(
32987
32990
  autosaveStatus,
32988
32991
  isEncryptedDialogOpen,
32989
32992
  setIsEncryptedDialogOpen
32990
- } = chunkQVQTDWB7_js.useViewerIntegration({
32993
+ } = chunkKA7ST7IH_js.useViewerIntegration({
32991
32994
  state,
32992
32995
  zoom,
32993
32996
  history,
@@ -33347,7 +33350,7 @@ function CollaborationDocumentSync({
33347
33350
  }
33348
33351
  return bytes instanceof Uint8Array ? bytes : new Uint8Array(bytes);
33349
33352
  }, []);
33350
- chunkQVQTDWB7_js.useYjsDocumentSync({
33353
+ chunkKA7ST7IH_js.useYjsDocumentSync({
33351
33354
  doc: collab?.doc ?? null,
33352
33355
  slides,
33353
33356
  templateElementsBySlideId,
@@ -33365,13 +33368,13 @@ function CollaborationFollowLayer({
33365
33368
  slideCount
33366
33369
  }) {
33367
33370
  const collab = useCollaboration();
33368
- const { followedClientId, followUser } = chunkQVQTDWB7_js.useFollowMode({
33371
+ const { followedClientId, followUser } = chunkKA7ST7IH_js.useFollowMode({
33369
33372
  collab,
33370
33373
  activeSlideIndex,
33371
33374
  setActiveSlideIndex,
33372
33375
  slideCount
33373
33376
  });
33374
- chunkQVQTDWB7_js.useBroadcastFollower({
33377
+ chunkKA7ST7IH_js.useBroadcastFollower({
33375
33378
  collab,
33376
33379
  activeSlideIndex,
33377
33380
  setActiveSlideIndex,