pptx-react-viewer 1.17.0 → 1.17.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/dist/{chunk-HJQZJ3VE.mjs → chunk-5CD34U2V.mjs} +1 -1
- package/dist/chunk-5CD34U2V.mjs.br +0 -0
- package/dist/chunk-5CD34U2V.mjs.gz +0 -0
- package/dist/{chunk-LLHFNGAF.mjs → chunk-HN7CPQUG.mjs} +1 -1
- package/dist/chunk-HN7CPQUG.mjs.br +0 -0
- package/dist/chunk-HN7CPQUG.mjs.gz +0 -0
- package/dist/{chunk-WGLJ32FW.js → chunk-IZXN663G.js} +1 -1
- package/dist/chunk-IZXN663G.js.br +0 -0
- package/dist/chunk-IZXN663G.js.gz +0 -0
- package/dist/{chunk-LNSHC2Z5.mjs → chunk-PCQH2UBR.mjs} +114 -77
- package/dist/chunk-PCQH2UBR.mjs.br +0 -0
- package/dist/chunk-PCQH2UBR.mjs.gz +0 -0
- package/dist/{chunk-3P6O7ZDM.js → chunk-SXCO5HHN.js} +18 -18
- package/dist/chunk-SXCO5HHN.js.br +0 -0
- package/dist/chunk-SXCO5HHN.js.gz +0 -0
- package/dist/{chunk-XW5OMXW6.js → chunk-WH7YXV3I.js} +569 -532
- package/dist/chunk-WH7YXV3I.js.br +0 -0
- package/dist/chunk-WH7YXV3I.js.gz +0 -0
- package/dist/hooks-unstable.js +71 -71
- package/dist/hooks-unstable.js.br +0 -0
- package/dist/hooks-unstable.js.gz +0 -0
- package/dist/hooks-unstable.mjs +2 -2
- package/dist/hooks-unstable.mjs.br +0 -0
- package/dist/hooks-unstable.mjs.gz +0 -0
- package/dist/i18n.js +3 -3
- package/dist/i18n.js.br +1 -1
- package/dist/i18n.js.gz +0 -0
- package/dist/i18n.mjs +1 -1
- package/dist/i18n.mjs.br +0 -0
- package/dist/i18n.mjs.gz +0 -0
- package/dist/index.js +8 -8
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +3 -3
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/viewer/index.js +18 -18
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/viewer/index.mjs +3 -3
- package/dist/viewer/index.mjs.br +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +1 -1
- package/dist/chunk-3P6O7ZDM.js.br +0 -0
- package/dist/chunk-3P6O7ZDM.js.gz +0 -0
- package/dist/chunk-HJQZJ3VE.mjs.br +0 -0
- package/dist/chunk-HJQZJ3VE.mjs.gz +0 -0
- package/dist/chunk-LLHFNGAF.mjs.br +0 -0
- package/dist/chunk-LLHFNGAF.mjs.gz +0 -0
- package/dist/chunk-LNSHC2Z5.mjs.br +0 -0
- package/dist/chunk-LNSHC2Z5.mjs.gz +0 -0
- package/dist/chunk-WGLJ32FW.js.br +0 -0
- package/dist/chunk-WGLJ32FW.js.gz +0 -0
- package/dist/chunk-XW5OMXW6.js.br +0 -0
- package/dist/chunk-XW5OMXW6.js.gz +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkSXCO5HHN_js = require('./chunk-SXCO5HHN.js');
|
|
4
4
|
var chunkJWS3RQKN_js = require('./chunk-JWS3RQKN.js');
|
|
5
|
-
var
|
|
5
|
+
var chunkIZXN663G_js = require('./chunk-IZXN663G.js');
|
|
6
6
|
var chunkMGLRKGCH_js = require('./chunk-MGLRKGCH.js');
|
|
7
7
|
var React5 = require('react');
|
|
8
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -44,7 +44,7 @@ function CollaborationProvider({
|
|
|
44
44
|
canvasHeight,
|
|
45
45
|
children
|
|
46
46
|
}) {
|
|
47
|
-
const value =
|
|
47
|
+
const value = chunkSXCO5HHN_js.useCollaborativeState({
|
|
48
48
|
config,
|
|
49
49
|
canvasWidth,
|
|
50
50
|
canvasHeight
|
|
@@ -250,6 +250,7 @@ function CollaborationStatusIndicator({
|
|
|
250
250
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
251
251
|
"div",
|
|
252
252
|
{
|
|
253
|
+
role: "status",
|
|
253
254
|
"data-testid": "collaboration-status",
|
|
254
255
|
className: "flex items-center gap-1.5",
|
|
255
256
|
"aria-label": t("pptx.collaboration.statusAriaLabel", {
|
|
@@ -472,7 +473,7 @@ function LoadingState({ className }) {
|
|
|
472
473
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
473
474
|
"div",
|
|
474
475
|
{
|
|
475
|
-
className:
|
|
476
|
+
className: chunkSXCO5HHN_js.cn(
|
|
476
477
|
"h-full w-full flex items-center justify-center text-muted-foreground",
|
|
477
478
|
className
|
|
478
479
|
),
|
|
@@ -487,7 +488,7 @@ function ErrorState({ className, error }) {
|
|
|
487
488
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
488
489
|
"div",
|
|
489
490
|
{
|
|
490
|
-
className:
|
|
491
|
+
className: chunkSXCO5HHN_js.cn(
|
|
491
492
|
"h-full w-full flex items-center justify-center p-6 text-center text-red-400",
|
|
492
493
|
className
|
|
493
494
|
),
|
|
@@ -518,7 +519,7 @@ function ShortcutPanel({ isOpen, onClose }) {
|
|
|
518
519
|
}
|
|
519
520
|
)
|
|
520
521
|
] }),
|
|
521
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children:
|
|
522
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children: chunkSXCO5HHN_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
522
523
|
"div",
|
|
523
524
|
{
|
|
524
525
|
className: "flex items-center justify-between gap-3 rounded bg-muted/80 px-2 py-1.5",
|
|
@@ -578,14 +579,14 @@ function AccessibilityPanel({
|
|
|
578
579
|
"aria-label": t("pptx.accessibility.reduceMotion"),
|
|
579
580
|
"aria-checked": reducedMotion ?? false,
|
|
580
581
|
onClick: onToggleReducedMotion,
|
|
581
|
-
className:
|
|
582
|
+
className: chunkSXCO5HHN_js.cn(
|
|
582
583
|
"relative inline-flex h-5 w-9 items-center rounded-full transition-colors",
|
|
583
584
|
reducedMotion ? "bg-primary" : "bg-muted-foreground/30"
|
|
584
585
|
),
|
|
585
586
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
586
587
|
"span",
|
|
587
588
|
{
|
|
588
|
-
className:
|
|
589
|
+
className: chunkSXCO5HHN_js.cn(
|
|
589
590
|
"inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform",
|
|
590
591
|
reducedMotion ? "translate-x-4" : "translate-x-0.5"
|
|
591
592
|
)
|
|
@@ -604,7 +605,7 @@ function AccessibilityPanel({
|
|
|
604
605
|
"div",
|
|
605
606
|
{
|
|
606
607
|
role: "listitem",
|
|
607
|
-
className:
|
|
608
|
+
className: chunkSXCO5HHN_js.cn(
|
|
608
609
|
"flex items-start gap-2 rounded px-2 py-1.5 text-xs",
|
|
609
610
|
/* Severity-based background and text colouring */
|
|
610
611
|
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"
|
|
@@ -725,7 +726,7 @@ function StatusBar({
|
|
|
725
726
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
726
727
|
"span",
|
|
727
728
|
{
|
|
728
|
-
className:
|
|
729
|
+
className: chunkSXCO5HHN_js.cn(
|
|
729
730
|
"shrink-0 max-md:hidden",
|
|
730
731
|
autosaveStatus?.state === "error" ? "text-red-400" : autosaveStatus?.state === "saving" ? "text-yellow-400" : ""
|
|
731
732
|
),
|
|
@@ -738,7 +739,7 @@ function StatusBar({
|
|
|
738
739
|
{
|
|
739
740
|
type: "button",
|
|
740
741
|
onClick: onToggleNotes,
|
|
741
|
-
className:
|
|
742
|
+
className: chunkSXCO5HHN_js.cn(
|
|
742
743
|
vb,
|
|
743
744
|
"flex items-center gap-1 text-[10px]",
|
|
744
745
|
isNotesExpanded && "text-primary"
|
|
@@ -758,7 +759,7 @@ function StatusBar({
|
|
|
758
759
|
{
|
|
759
760
|
type: "button",
|
|
760
761
|
onClick: () => onSetMode("edit"),
|
|
761
|
-
className:
|
|
762
|
+
className: chunkSXCO5HHN_js.cn(vb, mode === "edit" && "text-primary"),
|
|
762
763
|
title: t("pptx.statusBar.normalView"),
|
|
763
764
|
"aria-label": t("pptx.statusBar.normalView"),
|
|
764
765
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuMonitor, { className: "w-3.5 h-3.5" })
|
|
@@ -780,7 +781,7 @@ function StatusBar({
|
|
|
780
781
|
{
|
|
781
782
|
type: "button",
|
|
782
783
|
onClick: () => onSetMode("present"),
|
|
783
|
-
className:
|
|
784
|
+
className: chunkSXCO5HHN_js.cn(vb, mode === "present" && "text-primary"),
|
|
784
785
|
title: t("pptx.statusBar.slideShow"),
|
|
785
786
|
"aria-label": t("pptx.statusBar.slideShow"),
|
|
786
787
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPresentation, { className: "w-3.5 h-3.5" })
|
|
@@ -870,7 +871,7 @@ function ResizeHandle({
|
|
|
870
871
|
{
|
|
871
872
|
role: "separator",
|
|
872
873
|
"aria-orientation": direction,
|
|
873
|
-
className:
|
|
874
|
+
className: chunkSXCO5HHN_js.cn(
|
|
874
875
|
// Outer container: generous hit area for easy clicking.
|
|
875
876
|
// The visible indicator is rendered via the inner pseudo-element (::after).
|
|
876
877
|
"relative flex-shrink-0 z-20 group",
|
|
@@ -881,7 +882,7 @@ function ResizeHandle({
|
|
|
881
882
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
882
883
|
"div",
|
|
883
884
|
{
|
|
884
|
-
className:
|
|
885
|
+
className: chunkSXCO5HHN_js.cn(
|
|
885
886
|
"absolute transition-colors",
|
|
886
887
|
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"
|
|
887
888
|
)
|
|
@@ -918,8 +919,8 @@ function DrawingShapeRenderer({
|
|
|
918
919
|
}
|
|
919
920
|
const drawingW = maxX - minX || 1;
|
|
920
921
|
const drawingH = maxY - minY || 1;
|
|
921
|
-
const shadow =
|
|
922
|
-
const sw =
|
|
922
|
+
const shadow = chunkSXCO5HHN_js.styleShadow(style);
|
|
923
|
+
const sw = chunkSXCO5HHN_js.styleStroke(style);
|
|
923
924
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
924
925
|
"svg",
|
|
925
926
|
{
|
|
@@ -928,7 +929,7 @@ function DrawingShapeRenderer({
|
|
|
928
929
|
preserveAspectRatio: "xMidYMid meet",
|
|
929
930
|
"data-testid": "smartart-drawing-shapes",
|
|
930
931
|
children: shapes.map((shape, i) => {
|
|
931
|
-
const fill = shape.fillColor ??
|
|
932
|
+
const fill = shape.fillColor ?? chunkSXCO5HHN_js.colour(i, palette);
|
|
932
933
|
const relX = shape.x - minX;
|
|
933
934
|
const relY = shape.y - minY;
|
|
934
935
|
const rx = shape.shapeType === "roundRect" ? Math.min(shape.width, shape.height) * 0.1 : 0;
|
|
@@ -937,10 +938,10 @@ function DrawingShapeRenderer({
|
|
|
937
938
|
const rotation = shape.rotation ? `rotate(${shape.rotation} ${relX + shape.width / 2} ${relY + shape.height / 2})` : void 0;
|
|
938
939
|
const strokeCol = shape.strokeColor ?? (sw > 0 ? "rgba(255,255,255,0.3)" : "none");
|
|
939
940
|
const strokeW = shape.strokeWidth ?? sw;
|
|
940
|
-
const fontSize = shape.fontSize ??
|
|
941
|
+
const fontSize = shape.fontSize ?? chunkSXCO5HHN_js.fitFontSize(shape.text ?? "", shape.width * 0.85, shape.height, 14);
|
|
941
942
|
const nodeId = nodes ? chunkJWS3RQKN_js.resolveDrawingShapeNodeId(shape, i, shapes, nodes) : void 0;
|
|
942
943
|
const nodeLabel = nodeId ? nodeLabels?.get(nodeId) : void 0;
|
|
943
|
-
const groupProps = nodeId ?
|
|
944
|
+
const groupProps = nodeId ? chunkSXCO5HHN_js.smartArtNodeGroupProps(nodeId, shadow, nodeLabel) : { style: { filter: shadow } };
|
|
944
945
|
return /* @__PURE__ */ jsxRuntime.jsxs("g", { ...groupProps, children: [
|
|
945
946
|
nodeLabel ? /* @__PURE__ */ jsxRuntime.jsx("title", { children: nodeLabel }) : null,
|
|
946
947
|
isEllipse ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -958,7 +959,7 @@ function DrawingShapeRenderer({
|
|
|
958
959
|
) : isChevron ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
959
960
|
"polygon",
|
|
960
961
|
{
|
|
961
|
-
points:
|
|
962
|
+
points: chunkSXCO5HHN_js.chevronPoints(relX, relY, shape.width, shape.height),
|
|
962
963
|
fill,
|
|
963
964
|
stroke: strokeCol,
|
|
964
965
|
strokeWidth: strokeW,
|
|
@@ -979,11 +980,11 @@ function DrawingShapeRenderer({
|
|
|
979
980
|
}
|
|
980
981
|
),
|
|
981
982
|
shape.text ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
982
|
-
|
|
983
|
+
chunkSXCO5HHN_js.SmartArtNodeText,
|
|
983
984
|
{
|
|
984
985
|
x: relX + shape.width / 2,
|
|
985
986
|
y: relY + shape.height / 2,
|
|
986
|
-
text:
|
|
987
|
+
text: chunkSXCO5HHN_js.truncate(shape.text, 40),
|
|
987
988
|
fill: shape.fontColor ?? "white",
|
|
988
989
|
fontSize,
|
|
989
990
|
className: "pointer-events-none"
|
|
@@ -999,7 +1000,7 @@ function DrawingShapeRenderer({
|
|
|
999
1000
|
function resolveNodeStyle(node, index, palette) {
|
|
1000
1001
|
const style = node.style;
|
|
1001
1002
|
return {
|
|
1002
|
-
fill: style?.fillColor ??
|
|
1003
|
+
fill: style?.fillColor ?? chunkSXCO5HHN_js.colour(index, palette),
|
|
1003
1004
|
fontColor: style?.fontColor ?? "white",
|
|
1004
1005
|
fontWeight: style?.bold ? 700 : void 0,
|
|
1005
1006
|
fontStyle: style?.italic ? "italic" : void 0,
|
|
@@ -1021,8 +1022,8 @@ function ListRenderer({
|
|
|
1021
1022
|
const itemH = (usableH - gap * (nodes.length - 1)) / nodes.length;
|
|
1022
1023
|
const itemW = w - pad * 2;
|
|
1023
1024
|
const rx = Math.min(6, itemH * 0.15);
|
|
1024
|
-
const shadow =
|
|
1025
|
-
const sw =
|
|
1025
|
+
const shadow = chunkSXCO5HHN_js.styleShadow(style);
|
|
1026
|
+
const sw = chunkSXCO5HHN_js.styleStroke(style);
|
|
1026
1027
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1027
1028
|
"svg",
|
|
1028
1029
|
{
|
|
@@ -1032,13 +1033,13 @@ function ListRenderer({
|
|
|
1032
1033
|
"data-testid": "smartart-list",
|
|
1033
1034
|
children: nodes.map((node, i) => {
|
|
1034
1035
|
const y = pad + i * (itemH + gap);
|
|
1035
|
-
const fontSize =
|
|
1036
|
+
const fontSize = chunkSXCO5HHN_js.fitFontSize(node.text, itemW * 0.9, itemH, 12);
|
|
1036
1037
|
const ns = resolveNodeStyle(node, i, palette);
|
|
1037
1038
|
const label = nodeLabels?.get(node.id);
|
|
1038
1039
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1039
1040
|
"g",
|
|
1040
1041
|
{
|
|
1041
|
-
...
|
|
1042
|
+
...chunkSXCO5HHN_js.smartArtNodeGroupProps(node.id, shadow, label),
|
|
1042
1043
|
children: [
|
|
1043
1044
|
label ? /* @__PURE__ */ jsxRuntime.jsx("title", { children: label }) : null,
|
|
1044
1045
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1050,17 +1051,17 @@ function ListRenderer({
|
|
|
1050
1051
|
height: itemH,
|
|
1051
1052
|
rx,
|
|
1052
1053
|
fill: ns.fill,
|
|
1053
|
-
opacity:
|
|
1054
|
+
opacity: chunkSXCO5HHN_js.nodeOpacity(i, nodes.length, style),
|
|
1054
1055
|
stroke: ns.strokeColor ?? (sw > 0 ? "rgba(255,255,255,0.3)" : "none"),
|
|
1055
1056
|
strokeWidth: sw
|
|
1056
1057
|
}
|
|
1057
1058
|
),
|
|
1058
1059
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1059
|
-
|
|
1060
|
+
chunkSXCO5HHN_js.SmartArtNodeText,
|
|
1060
1061
|
{
|
|
1061
1062
|
x: pad + itemW / 2,
|
|
1062
1063
|
y: y + itemH / 2,
|
|
1063
|
-
text:
|
|
1064
|
+
text: chunkSXCO5HHN_js.truncate(node.text, 40),
|
|
1064
1065
|
fill: ns.fontColor,
|
|
1065
1066
|
fontWeight: ns.fontWeight,
|
|
1066
1067
|
fontStyle: ns.fontStyle,
|
|
@@ -1092,8 +1093,8 @@ function ProcessRenderer({
|
|
|
1092
1093
|
const itemW = (usableW - gap * (nodes.length - 1)) / nodes.length;
|
|
1093
1094
|
const itemH = Math.min(h - pad * 2, h * 0.6);
|
|
1094
1095
|
const yMid = h / 2;
|
|
1095
|
-
const shadow =
|
|
1096
|
-
const sw =
|
|
1096
|
+
const shadow = chunkSXCO5HHN_js.styleShadow(style);
|
|
1097
|
+
const sw = chunkSXCO5HHN_js.styleStroke(style);
|
|
1097
1098
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1098
1099
|
"svg",
|
|
1099
1100
|
{
|
|
@@ -1107,13 +1108,13 @@ function ProcessRenderer({
|
|
|
1107
1108
|
const isFirst = i === 0;
|
|
1108
1109
|
const isLast = i === nodes.length - 1;
|
|
1109
1110
|
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}`;
|
|
1110
|
-
const fontSize =
|
|
1111
|
+
const fontSize = chunkSXCO5HHN_js.fitFontSize(node.text, itemW * 0.7, itemH, 12);
|
|
1111
1112
|
const ns = resolveNodeStyle(node, i, palette);
|
|
1112
1113
|
const label = nodeLabels?.get(node.id);
|
|
1113
1114
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1114
1115
|
"g",
|
|
1115
1116
|
{
|
|
1116
|
-
...
|
|
1117
|
+
...chunkSXCO5HHN_js.smartArtNodeGroupProps(node.id, shadow, label),
|
|
1117
1118
|
children: [
|
|
1118
1119
|
label ? /* @__PURE__ */ jsxRuntime.jsx("title", { children: label }) : null,
|
|
1119
1120
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1121,17 +1122,17 @@ function ProcessRenderer({
|
|
|
1121
1122
|
{
|
|
1122
1123
|
points,
|
|
1123
1124
|
fill: ns.fill,
|
|
1124
|
-
opacity:
|
|
1125
|
+
opacity: chunkSXCO5HHN_js.nodeOpacity(i, nodes.length, style),
|
|
1125
1126
|
stroke: ns.strokeColor ?? (sw > 0 ? "rgba(255,255,255,0.3)" : "none"),
|
|
1126
1127
|
strokeWidth: sw
|
|
1127
1128
|
}
|
|
1128
1129
|
),
|
|
1129
1130
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1130
|
-
|
|
1131
|
+
chunkSXCO5HHN_js.SmartArtNodeText,
|
|
1131
1132
|
{
|
|
1132
1133
|
x: x + itemW / 2,
|
|
1133
1134
|
y: yMid,
|
|
1134
|
-
text:
|
|
1135
|
+
text: chunkSXCO5HHN_js.truncate(node.text, 25),
|
|
1135
1136
|
fill: ns.fontColor,
|
|
1136
1137
|
fontWeight: ns.fontWeight,
|
|
1137
1138
|
fontStyle: ns.fontStyle,
|
|
@@ -1161,8 +1162,8 @@ function CycleRenderer({
|
|
|
1161
1162
|
const cy = h / 2;
|
|
1162
1163
|
const radius = size * 0.35;
|
|
1163
1164
|
const nodeR = Math.max(size * 0.06, Math.min(size * 0.12, 200 / nodes.length));
|
|
1164
|
-
const shadow =
|
|
1165
|
-
const sw =
|
|
1165
|
+
const shadow = chunkSXCO5HHN_js.styleShadow(style);
|
|
1166
|
+
const sw = chunkSXCO5HHN_js.styleStroke(style);
|
|
1166
1167
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1167
1168
|
"svg",
|
|
1168
1169
|
{
|
|
@@ -1201,13 +1202,13 @@ function CycleRenderer({
|
|
|
1201
1202
|
const angle = i / nodes.length * Math.PI * 2 - Math.PI / 2;
|
|
1202
1203
|
const nx = cx + radius * Math.cos(angle);
|
|
1203
1204
|
const ny = cy + radius * Math.sin(angle);
|
|
1204
|
-
const fontSize =
|
|
1205
|
+
const fontSize = chunkSXCO5HHN_js.fitFontSize(node.text, nodeR * 1.4, nodeR * 2, 11);
|
|
1205
1206
|
const ns = resolveNodeStyle(node, i, palette);
|
|
1206
1207
|
const label = nodeLabels?.get(node.id);
|
|
1207
1208
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1208
1209
|
"g",
|
|
1209
1210
|
{
|
|
1210
|
-
...
|
|
1211
|
+
...chunkSXCO5HHN_js.smartArtNodeGroupProps(node.id, shadow, label),
|
|
1211
1212
|
children: [
|
|
1212
1213
|
label ? /* @__PURE__ */ jsxRuntime.jsx("title", { children: label }) : null,
|
|
1213
1214
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1217,17 +1218,17 @@ function CycleRenderer({
|
|
|
1217
1218
|
cy: ny,
|
|
1218
1219
|
r: nodeR,
|
|
1219
1220
|
fill: ns.fill,
|
|
1220
|
-
opacity:
|
|
1221
|
+
opacity: chunkSXCO5HHN_js.nodeOpacity(i, nodes.length, style),
|
|
1221
1222
|
stroke: ns.strokeColor ?? (sw > 0 ? "rgba(255,255,255,0.3)" : "none"),
|
|
1222
1223
|
strokeWidth: sw
|
|
1223
1224
|
}
|
|
1224
1225
|
),
|
|
1225
1226
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1226
|
-
|
|
1227
|
+
chunkSXCO5HHN_js.SmartArtNodeText,
|
|
1227
1228
|
{
|
|
1228
1229
|
x: nx,
|
|
1229
1230
|
y: ny,
|
|
1230
|
-
text:
|
|
1231
|
+
text: chunkSXCO5HHN_js.truncate(node.text, 20),
|
|
1231
1232
|
fill: ns.fontColor,
|
|
1232
1233
|
fontWeight: ns.fontWeight,
|
|
1233
1234
|
fontStyle: ns.fontStyle,
|
|
@@ -1262,8 +1263,8 @@ function MatrixRenderer({
|
|
|
1262
1263
|
const cellW = (usableW - gap * (cols - 1)) / cols;
|
|
1263
1264
|
const cellH = (usableH - gap * (rows - 1)) / rows;
|
|
1264
1265
|
const rx = Math.min(6, Math.min(cellW, cellH) * 0.1);
|
|
1265
|
-
const shadow =
|
|
1266
|
-
const sw =
|
|
1266
|
+
const shadow = chunkSXCO5HHN_js.styleShadow(style);
|
|
1267
|
+
const sw = chunkSXCO5HHN_js.styleStroke(style);
|
|
1267
1268
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1268
1269
|
"svg",
|
|
1269
1270
|
{
|
|
@@ -1276,13 +1277,13 @@ function MatrixRenderer({
|
|
|
1276
1277
|
const row = Math.floor(i / cols);
|
|
1277
1278
|
const x = pad + col * (cellW + gap);
|
|
1278
1279
|
const y = pad + row * (cellH + gap);
|
|
1279
|
-
const fontSize =
|
|
1280
|
+
const fontSize = chunkSXCO5HHN_js.fitFontSize(node.text, cellW * 0.85, cellH, 12);
|
|
1280
1281
|
const ns = resolveNodeStyle(node, i, palette);
|
|
1281
1282
|
const label = nodeLabels?.get(node.id);
|
|
1282
1283
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1283
1284
|
"g",
|
|
1284
1285
|
{
|
|
1285
|
-
...
|
|
1286
|
+
...chunkSXCO5HHN_js.smartArtNodeGroupProps(node.id, shadow, label),
|
|
1286
1287
|
children: [
|
|
1287
1288
|
label ? /* @__PURE__ */ jsxRuntime.jsx("title", { children: label }) : null,
|
|
1288
1289
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1294,17 +1295,17 @@ function MatrixRenderer({
|
|
|
1294
1295
|
height: cellH,
|
|
1295
1296
|
rx,
|
|
1296
1297
|
fill: ns.fill,
|
|
1297
|
-
opacity:
|
|
1298
|
+
opacity: chunkSXCO5HHN_js.nodeOpacity(i, nodes.length, style),
|
|
1298
1299
|
stroke: ns.strokeColor ?? (sw > 0 ? "rgba(255,255,255,0.3)" : "none"),
|
|
1299
1300
|
strokeWidth: sw
|
|
1300
1301
|
}
|
|
1301
1302
|
),
|
|
1302
1303
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1303
|
-
|
|
1304
|
+
chunkSXCO5HHN_js.SmartArtNodeText,
|
|
1304
1305
|
{
|
|
1305
1306
|
x: x + cellW / 2,
|
|
1306
1307
|
y: y + cellH / 2,
|
|
1307
|
-
text:
|
|
1308
|
+
text: chunkSXCO5HHN_js.truncate(node.text, 30),
|
|
1308
1309
|
fill: ns.fontColor,
|
|
1309
1310
|
fontWeight: ns.fontWeight ?? 500,
|
|
1310
1311
|
fontStyle: ns.fontStyle,
|
|
@@ -1333,8 +1334,8 @@ function PyramidRenderer({
|
|
|
1333
1334
|
const usableH = h - pad * 2;
|
|
1334
1335
|
const bandH = (usableH - gap * (nodes.length - 1)) / nodes.length;
|
|
1335
1336
|
const maxW = w - pad * 2;
|
|
1336
|
-
const shadow =
|
|
1337
|
-
const sw =
|
|
1337
|
+
const shadow = chunkSXCO5HHN_js.styleShadow(style);
|
|
1338
|
+
const sw = chunkSXCO5HHN_js.styleStroke(style);
|
|
1338
1339
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1339
1340
|
"svg",
|
|
1340
1341
|
{
|
|
@@ -1358,28 +1359,28 @@ function PyramidRenderer({
|
|
|
1358
1359
|
`${bottomRight},${y + bandH}`,
|
|
1359
1360
|
`${bottomLeft},${y + bandH}`
|
|
1360
1361
|
].join(" ");
|
|
1361
|
-
const fontSize =
|
|
1362
|
+
const fontSize = chunkSXCO5HHN_js.fitFontSize(node.text, topW * 0.85, bandH, 12);
|
|
1362
1363
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1363
1364
|
"g",
|
|
1364
1365
|
{
|
|
1365
|
-
...
|
|
1366
|
+
...chunkSXCO5HHN_js.smartArtNodeGroupProps(node.id, shadow),
|
|
1366
1367
|
children: [
|
|
1367
1368
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1368
1369
|
"polygon",
|
|
1369
1370
|
{
|
|
1370
1371
|
points,
|
|
1371
|
-
fill:
|
|
1372
|
-
opacity:
|
|
1372
|
+
fill: chunkSXCO5HHN_js.colour(i, palette),
|
|
1373
|
+
opacity: chunkSXCO5HHN_js.nodeOpacity(i, nodes.length, style),
|
|
1373
1374
|
stroke: sw > 0 ? "rgba(255,255,255,0.3)" : "none",
|
|
1374
1375
|
strokeWidth: sw
|
|
1375
1376
|
}
|
|
1376
1377
|
),
|
|
1377
1378
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1378
|
-
|
|
1379
|
+
chunkSXCO5HHN_js.SmartArtNodeText,
|
|
1379
1380
|
{
|
|
1380
1381
|
x: w / 2,
|
|
1381
1382
|
y: y + bandH / 2,
|
|
1382
|
-
text:
|
|
1383
|
+
text: chunkSXCO5HHN_js.truncate(node.text, 30),
|
|
1383
1384
|
fill: "white",
|
|
1384
1385
|
fontSize,
|
|
1385
1386
|
className: "pointer-events-none"
|
|
@@ -1401,7 +1402,7 @@ function VennRenderer({
|
|
|
1401
1402
|
}) {
|
|
1402
1403
|
const w = element.width;
|
|
1403
1404
|
const h = element.height;
|
|
1404
|
-
const shadow =
|
|
1405
|
+
const shadow = chunkSXCO5HHN_js.styleShadow(style);
|
|
1405
1406
|
if (nodes.length <= 4) {
|
|
1406
1407
|
const cx = w / 2;
|
|
1407
1408
|
const cy2 = h / 2;
|
|
@@ -1418,19 +1419,19 @@ function VennRenderer({
|
|
|
1418
1419
|
const angle = i / nodes.length * Math.PI * 2 - Math.PI / 2;
|
|
1419
1420
|
const nx = cx + spread * Math.cos(angle);
|
|
1420
1421
|
const ny = cy2 + spread * Math.sin(angle);
|
|
1421
|
-
const fontSize =
|
|
1422
|
+
const fontSize = chunkSXCO5HHN_js.fitFontSize(node.text, r2 * 1.2, r2 * 2, 11);
|
|
1422
1423
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1423
1424
|
"g",
|
|
1424
1425
|
{
|
|
1425
|
-
...
|
|
1426
|
+
...chunkSXCO5HHN_js.smartArtNodeGroupProps(node.id, shadow),
|
|
1426
1427
|
children: [
|
|
1427
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: nx, cy: ny, r: r2, fill:
|
|
1428
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: nx, cy: ny, r: r2, fill: chunkSXCO5HHN_js.colour(i, palette), opacity: 0.35 }),
|
|
1428
1429
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1429
|
-
|
|
1430
|
+
chunkSXCO5HHN_js.SmartArtNodeText,
|
|
1430
1431
|
{
|
|
1431
1432
|
x: nx,
|
|
1432
1433
|
y: ny,
|
|
1433
|
-
text:
|
|
1434
|
+
text: chunkSXCO5HHN_js.truncate(node.text, 20),
|
|
1434
1435
|
fill: "white",
|
|
1435
1436
|
fontSize,
|
|
1436
1437
|
fontWeight: "bold",
|
|
@@ -1459,19 +1460,19 @@ function VennRenderer({
|
|
|
1459
1460
|
"data-testid": "smartart-venn",
|
|
1460
1461
|
children: nodes.map((node, i) => {
|
|
1461
1462
|
const nx = offsetX + i * (r * 2 - overlap);
|
|
1462
|
-
const fontSize =
|
|
1463
|
+
const fontSize = chunkSXCO5HHN_js.fitFontSize(node.text, r * 1.2, r * 2, 10);
|
|
1463
1464
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1464
1465
|
"g",
|
|
1465
1466
|
{
|
|
1466
|
-
...
|
|
1467
|
+
...chunkSXCO5HHN_js.smartArtNodeGroupProps(node.id, shadow),
|
|
1467
1468
|
children: [
|
|
1468
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: nx, cy, r, fill:
|
|
1469
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: nx, cy, r, fill: chunkSXCO5HHN_js.colour(i, palette), opacity: 0.35 }),
|
|
1469
1470
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1470
|
-
|
|
1471
|
+
chunkSXCO5HHN_js.SmartArtNodeText,
|
|
1471
1472
|
{
|
|
1472
1473
|
x: nx,
|
|
1473
1474
|
y: cy,
|
|
1474
|
-
text:
|
|
1475
|
+
text: chunkSXCO5HHN_js.truncate(node.text, 20),
|
|
1475
1476
|
fill: "white",
|
|
1476
1477
|
fontSize,
|
|
1477
1478
|
fontWeight: "bold",
|
|
@@ -1497,7 +1498,7 @@ function FunnelRenderer({
|
|
|
1497
1498
|
const pad = 8;
|
|
1498
1499
|
const usableW = w - pad * 2;
|
|
1499
1500
|
const stageH = (h - pad * 2) / nodes.length;
|
|
1500
|
-
const shadow =
|
|
1501
|
+
const shadow = chunkSXCO5HHN_js.styleShadow(style);
|
|
1501
1502
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1502
1503
|
"svg",
|
|
1503
1504
|
{
|
|
@@ -1519,26 +1520,26 @@ function FunnelRenderer({
|
|
|
1519
1520
|
`${bottomRight},${y + stageH}`,
|
|
1520
1521
|
`${bottomLeft},${y + stageH}`
|
|
1521
1522
|
].join(" ");
|
|
1522
|
-
const fontSize =
|
|
1523
|
+
const fontSize = chunkSXCO5HHN_js.fitFontSize(node.text, topWidth * 0.85, stageH, 11);
|
|
1523
1524
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1524
1525
|
"g",
|
|
1525
1526
|
{
|
|
1526
|
-
...
|
|
1527
|
+
...chunkSXCO5HHN_js.smartArtNodeGroupProps(node.id, shadow),
|
|
1527
1528
|
children: [
|
|
1528
1529
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1529
1530
|
"polygon",
|
|
1530
1531
|
{
|
|
1531
1532
|
points,
|
|
1532
|
-
fill:
|
|
1533
|
-
opacity:
|
|
1533
|
+
fill: chunkSXCO5HHN_js.colour(i, palette),
|
|
1534
|
+
opacity: chunkSXCO5HHN_js.nodeOpacity(i, nodes.length, style)
|
|
1534
1535
|
}
|
|
1535
1536
|
),
|
|
1536
1537
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1537
|
-
|
|
1538
|
+
chunkSXCO5HHN_js.SmartArtNodeText,
|
|
1538
1539
|
{
|
|
1539
1540
|
x: w / 2,
|
|
1540
1541
|
y: y + stageH / 2,
|
|
1541
|
-
text:
|
|
1542
|
+
text: chunkSXCO5HHN_js.truncate(node.text, 30),
|
|
1542
1543
|
fill: "white",
|
|
1543
1544
|
fontSize,
|
|
1544
1545
|
className: "pointer-events-none"
|
|
@@ -1565,7 +1566,7 @@ function TargetRenderer({
|
|
|
1565
1566
|
const maxR = Math.min(cx - 8, cy - 8);
|
|
1566
1567
|
const fontSize = Math.max(7, Math.min(10, maxR / (nodes.length + 1)));
|
|
1567
1568
|
const labelX = cx + maxR + 8;
|
|
1568
|
-
const shadow =
|
|
1569
|
+
const shadow = chunkSXCO5HHN_js.styleShadow(style);
|
|
1569
1570
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1570
1571
|
"svg",
|
|
1571
1572
|
{
|
|
@@ -1578,7 +1579,7 @@ function TargetRenderer({
|
|
|
1578
1579
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1579
1580
|
"g",
|
|
1580
1581
|
{
|
|
1581
|
-
...
|
|
1582
|
+
...chunkSXCO5HHN_js.smartArtNodeGroupProps(node.id, shadow),
|
|
1582
1583
|
children: [
|
|
1583
1584
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1584
1585
|
"circle",
|
|
@@ -1586,8 +1587,8 @@ function TargetRenderer({
|
|
|
1586
1587
|
cx,
|
|
1587
1588
|
cy,
|
|
1588
1589
|
r: Math.max(r, 4),
|
|
1589
|
-
fill:
|
|
1590
|
-
opacity:
|
|
1590
|
+
fill: chunkSXCO5HHN_js.colour(i, palette),
|
|
1591
|
+
opacity: chunkSXCO5HHN_js.nodeOpacity(i, nodes.length, style)
|
|
1591
1592
|
}
|
|
1592
1593
|
),
|
|
1593
1594
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1597,7 +1598,7 @@ function TargetRenderer({
|
|
|
1597
1598
|
y1: cy,
|
|
1598
1599
|
x2: labelX - 2,
|
|
1599
1600
|
y2: 8 + i * (fontSize + 6),
|
|
1600
|
-
stroke:
|
|
1601
|
+
stroke: chunkSXCO5HHN_js.colour(i, palette),
|
|
1601
1602
|
strokeWidth: 1,
|
|
1602
1603
|
opacity: 0.6
|
|
1603
1604
|
}
|
|
@@ -1609,10 +1610,10 @@ function TargetRenderer({
|
|
|
1609
1610
|
y: 8 + i * (fontSize + 6) + fontSize / 2,
|
|
1610
1611
|
textAnchor: "start",
|
|
1611
1612
|
dominantBaseline: "central",
|
|
1612
|
-
fill:
|
|
1613
|
+
fill: chunkSXCO5HHN_js.colour(i, palette),
|
|
1613
1614
|
fontSize,
|
|
1614
1615
|
className: "pointer-events-none",
|
|
1615
|
-
children:
|
|
1616
|
+
children: chunkSXCO5HHN_js.truncate(node.text, 30)
|
|
1616
1617
|
}
|
|
1617
1618
|
)
|
|
1618
1619
|
]
|
|
@@ -1629,12 +1630,12 @@ function HierarchyRenderer({
|
|
|
1629
1630
|
palette,
|
|
1630
1631
|
style
|
|
1631
1632
|
}) {
|
|
1632
|
-
const roots =
|
|
1633
|
+
const roots = chunkSXCO5HHN_js.buildTree(nodes);
|
|
1633
1634
|
if (roots.length === 0) {
|
|
1634
1635
|
return /* @__PURE__ */ jsxRuntime.jsx(ListRenderer, { element, nodes, palette, style });
|
|
1635
1636
|
}
|
|
1636
|
-
const totalLeaves = roots.reduce((s, r) => s +
|
|
1637
|
-
const depth = Math.max(...roots.map(
|
|
1637
|
+
const totalLeaves = roots.reduce((s, r) => s + chunkSXCO5HHN_js.treeWidth(r), 0);
|
|
1638
|
+
const depth = Math.max(...roots.map(chunkSXCO5HHN_js.treeDepth));
|
|
1638
1639
|
const svgW = element.width;
|
|
1639
1640
|
const svgH = element.height;
|
|
1640
1641
|
const cellW = svgW / totalLeaves;
|
|
@@ -1642,24 +1643,24 @@ function HierarchyRenderer({
|
|
|
1642
1643
|
const boxW = Math.min(cellW * 0.8, 140);
|
|
1643
1644
|
const boxH = Math.min(cellH * 0.4, 36);
|
|
1644
1645
|
const rx = Math.min(6, boxH * 0.15);
|
|
1645
|
-
const shadow =
|
|
1646
|
-
const sw =
|
|
1646
|
+
const shadow = chunkSXCO5HHN_js.styleShadow(style);
|
|
1647
|
+
const sw = chunkSXCO5HHN_js.styleStroke(style);
|
|
1647
1648
|
const elements = [];
|
|
1648
1649
|
let colourIdx = 0;
|
|
1649
1650
|
function renderTreeNode(t, xOffset, level) {
|
|
1650
|
-
const w =
|
|
1651
|
+
const w = chunkSXCO5HHN_js.treeWidth(t);
|
|
1651
1652
|
const nodeCx = (xOffset + w / 2) * cellW;
|
|
1652
1653
|
const nodeCy = level * cellH + cellH / 2;
|
|
1653
1654
|
const ci = colourIdx++;
|
|
1654
|
-
const fontSize =
|
|
1655
|
+
const fontSize = chunkSXCO5HHN_js.fitFontSize(t.node.text, boxW * 0.9, boxH, 11);
|
|
1655
1656
|
for (const child of t.children) {
|
|
1656
|
-
const childW =
|
|
1657
|
+
const childW = chunkSXCO5HHN_js.treeWidth(child);
|
|
1657
1658
|
let childOffset2 = xOffset;
|
|
1658
1659
|
for (const c of t.children) {
|
|
1659
1660
|
if (c === child) {
|
|
1660
1661
|
break;
|
|
1661
1662
|
}
|
|
1662
|
-
childOffset2 +=
|
|
1663
|
+
childOffset2 += chunkSXCO5HHN_js.treeWidth(c);
|
|
1663
1664
|
}
|
|
1664
1665
|
const childCx = (childOffset2 + childW / 2) * cellW;
|
|
1665
1666
|
const childCy = (level + 1) * cellH + cellH / 2;
|
|
@@ -1682,7 +1683,7 @@ function HierarchyRenderer({
|
|
|
1682
1683
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1683
1684
|
"g",
|
|
1684
1685
|
{
|
|
1685
|
-
...
|
|
1686
|
+
...chunkSXCO5HHN_js.smartArtNodeGroupProps(t.node.id, shadow),
|
|
1686
1687
|
children: [
|
|
1687
1688
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1688
1689
|
"rect",
|
|
@@ -1692,18 +1693,18 @@ function HierarchyRenderer({
|
|
|
1692
1693
|
width: boxW,
|
|
1693
1694
|
height: boxH,
|
|
1694
1695
|
rx,
|
|
1695
|
-
fill:
|
|
1696
|
-
opacity:
|
|
1696
|
+
fill: chunkSXCO5HHN_js.colour(ci, palette),
|
|
1697
|
+
opacity: chunkSXCO5HHN_js.nodeOpacity(ci, nodes.length, style),
|
|
1697
1698
|
stroke: sw > 0 ? "rgba(255,255,255,0.3)" : "none",
|
|
1698
1699
|
strokeWidth: sw
|
|
1699
1700
|
}
|
|
1700
1701
|
),
|
|
1701
1702
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1702
|
-
|
|
1703
|
+
chunkSXCO5HHN_js.SmartArtNodeText,
|
|
1703
1704
|
{
|
|
1704
1705
|
x: nodeCx,
|
|
1705
1706
|
y: nodeCy,
|
|
1706
|
-
text:
|
|
1707
|
+
text: chunkSXCO5HHN_js.truncate(t.node.text, 40),
|
|
1707
1708
|
fill: "white",
|
|
1708
1709
|
fontSize,
|
|
1709
1710
|
className: "pointer-events-none"
|
|
@@ -1717,7 +1718,7 @@ function HierarchyRenderer({
|
|
|
1717
1718
|
let childOffset = xOffset;
|
|
1718
1719
|
for (const child of t.children) {
|
|
1719
1720
|
renderTreeNode(child, childOffset, level + 1);
|
|
1720
|
-
childOffset +=
|
|
1721
|
+
childOffset += chunkSXCO5HHN_js.treeWidth(child);
|
|
1721
1722
|
}
|
|
1722
1723
|
return w;
|
|
1723
1724
|
}
|
|
@@ -1752,7 +1753,7 @@ function GearRenderer({
|
|
|
1752
1753
|
const gearR = Math.min(spacing * 0.4, h * 0.35);
|
|
1753
1754
|
const innerR = gearR * 0.7;
|
|
1754
1755
|
const teethCount = 8;
|
|
1755
|
-
const shadow =
|
|
1756
|
+
const shadow = chunkSXCO5HHN_js.styleShadow(style);
|
|
1756
1757
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1757
1758
|
"svg",
|
|
1758
1759
|
{
|
|
@@ -1764,27 +1765,27 @@ function GearRenderer({
|
|
|
1764
1765
|
gearNodes.map((node, i) => {
|
|
1765
1766
|
const gx = spacing * (i + 1);
|
|
1766
1767
|
const gy = h / 2 + (i % 2 === 0 ? 0 : gearR * 0.35);
|
|
1767
|
-
const fontSize =
|
|
1768
|
+
const fontSize = chunkSXCO5HHN_js.fitFontSize(node.text, innerR * 1.2, innerR * 2, 11);
|
|
1768
1769
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1769
1770
|
"g",
|
|
1770
1771
|
{
|
|
1771
|
-
...
|
|
1772
|
+
...chunkSXCO5HHN_js.smartArtNodeGroupProps(node.id, shadow),
|
|
1772
1773
|
children: [
|
|
1773
1774
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1774
1775
|
"path",
|
|
1775
1776
|
{
|
|
1776
|
-
d:
|
|
1777
|
-
fill:
|
|
1778
|
-
opacity:
|
|
1777
|
+
d: chunkSXCO5HHN_js.gearPath(gx, gy, gearR, innerR, teethCount),
|
|
1778
|
+
fill: chunkSXCO5HHN_js.colour(i, palette),
|
|
1779
|
+
opacity: chunkSXCO5HHN_js.nodeOpacity(i, nodes.length, style)
|
|
1779
1780
|
}
|
|
1780
1781
|
),
|
|
1781
1782
|
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: gx, cy: gy, r: innerR * 0.5, fill: "white", opacity: 0.25 }),
|
|
1782
1783
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1783
|
-
|
|
1784
|
+
chunkSXCO5HHN_js.SmartArtNodeText,
|
|
1784
1785
|
{
|
|
1785
1786
|
x: gx,
|
|
1786
1787
|
y: gy,
|
|
1787
|
-
text:
|
|
1788
|
+
text: chunkSXCO5HHN_js.truncate(node.text, 20),
|
|
1788
1789
|
fill: "white",
|
|
1789
1790
|
fontSize,
|
|
1790
1791
|
fontWeight: "bold",
|
|
@@ -1806,8 +1807,8 @@ function GearRenderer({
|
|
|
1806
1807
|
cx: lx,
|
|
1807
1808
|
cy: ly,
|
|
1808
1809
|
r: 3,
|
|
1809
|
-
fill:
|
|
1810
|
-
opacity:
|
|
1810
|
+
fill: chunkSXCO5HHN_js.colour(gearCount + i, palette),
|
|
1811
|
+
opacity: chunkSXCO5HHN_js.nodeOpacity(gearCount + i, nodes.length, style)
|
|
1811
1812
|
}
|
|
1812
1813
|
),
|
|
1813
1814
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1817,10 +1818,10 @@ function GearRenderer({
|
|
|
1817
1818
|
y: ly,
|
|
1818
1819
|
textAnchor: "start",
|
|
1819
1820
|
dominantBaseline: "central",
|
|
1820
|
-
fill:
|
|
1821
|
+
fill: chunkSXCO5HHN_js.colour(gearCount + i, palette),
|
|
1821
1822
|
fontSize: 10,
|
|
1822
1823
|
className: "pointer-events-none",
|
|
1823
|
-
children:
|
|
1824
|
+
children: chunkSXCO5HHN_js.truncate(node.text, 30)
|
|
1824
1825
|
}
|
|
1825
1826
|
)
|
|
1826
1827
|
] }, `${element.id}-gear-extra-${node.id}-${i}`);
|
|
@@ -1844,7 +1845,7 @@ function TimelineRenderer({
|
|
|
1844
1845
|
const lineLen = lineEndX - lineStartX;
|
|
1845
1846
|
const dotR = Math.max(4, Math.min(8, lineLen / (nodes.length * 4)));
|
|
1846
1847
|
const labelOffset = Math.min(h * 0.28, 40);
|
|
1847
|
-
const shadow =
|
|
1848
|
+
const shadow = chunkSXCO5HHN_js.styleShadow(style);
|
|
1848
1849
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1849
1850
|
"svg",
|
|
1850
1851
|
{
|
|
@@ -1866,11 +1867,11 @@ function TimelineRenderer({
|
|
|
1866
1867
|
const above = i % 2 === 0;
|
|
1867
1868
|
const textY = above ? lineY - labelOffset : lineY + labelOffset;
|
|
1868
1869
|
const stemEndY = above ? lineY - dotR - 2 : lineY + dotR + 2;
|
|
1869
|
-
const fontSize =
|
|
1870
|
+
const fontSize = chunkSXCO5HHN_js.fitFontSize(node.text, lineLen / nodes.length * 0.9, labelOffset, 10);
|
|
1870
1871
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1871
1872
|
"g",
|
|
1872
1873
|
{
|
|
1873
|
-
...
|
|
1874
|
+
...chunkSXCO5HHN_js.smartArtNodeGroupProps(node.id, shadow),
|
|
1874
1875
|
children: [
|
|
1875
1876
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1876
1877
|
"line",
|
|
@@ -1879,7 +1880,7 @@ function TimelineRenderer({
|
|
|
1879
1880
|
y1: stemEndY,
|
|
1880
1881
|
x2: x,
|
|
1881
1882
|
y2: textY + (above ? fontSize : -fontSize),
|
|
1882
|
-
stroke:
|
|
1883
|
+
stroke: chunkSXCO5HHN_js.colour(i, palette),
|
|
1883
1884
|
strokeWidth: 1,
|
|
1884
1885
|
opacity: 0.5
|
|
1885
1886
|
}
|
|
@@ -1890,17 +1891,17 @@ function TimelineRenderer({
|
|
|
1890
1891
|
cx: x,
|
|
1891
1892
|
cy: lineY,
|
|
1892
1893
|
r: dotR,
|
|
1893
|
-
fill:
|
|
1894
|
-
opacity:
|
|
1894
|
+
fill: chunkSXCO5HHN_js.colour(i, palette),
|
|
1895
|
+
opacity: chunkSXCO5HHN_js.nodeOpacity(i, nodes.length, style)
|
|
1895
1896
|
}
|
|
1896
1897
|
),
|
|
1897
1898
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1898
|
-
|
|
1899
|
+
chunkSXCO5HHN_js.SmartArtNodeText,
|
|
1899
1900
|
{
|
|
1900
|
-
text:
|
|
1901
|
+
text: chunkSXCO5HHN_js.truncate(node.text, 20) ?? "",
|
|
1901
1902
|
x,
|
|
1902
1903
|
y: textY,
|
|
1903
|
-
fill:
|
|
1904
|
+
fill: chunkSXCO5HHN_js.colour(i, palette),
|
|
1904
1905
|
fontSize,
|
|
1905
1906
|
anchor: above ? "bottom" : "top",
|
|
1906
1907
|
className: "pointer-events-none"
|
|
@@ -1933,8 +1934,8 @@ function BendingProcessRenderer({
|
|
|
1933
1934
|
const boxH = Math.min(cellH * 0.6, 32);
|
|
1934
1935
|
const rx = Math.min(5, boxH * 0.15);
|
|
1935
1936
|
const arrowSize = 6;
|
|
1936
|
-
const shadow =
|
|
1937
|
-
const sw =
|
|
1937
|
+
const shadow = chunkSXCO5HHN_js.styleShadow(style);
|
|
1938
|
+
const sw = chunkSXCO5HHN_js.styleStroke(style);
|
|
1938
1939
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1939
1940
|
"svg",
|
|
1940
1941
|
{
|
|
@@ -1948,7 +1949,7 @@ function BendingProcessRenderer({
|
|
|
1948
1949
|
const col = row % 2 === 0 ? colInRow : COLS - 1 - colInRow;
|
|
1949
1950
|
const nodeCx = padX + col * cellW + cellW / 2;
|
|
1950
1951
|
const nodeCy = padY + row * cellH + cellH / 2;
|
|
1951
|
-
const fontSize =
|
|
1952
|
+
const fontSize = chunkSXCO5HHN_js.fitFontSize(node.text, boxW * 0.85, boxH, 10);
|
|
1952
1953
|
let arrow = null;
|
|
1953
1954
|
if (i < nodes.length - 1) {
|
|
1954
1955
|
const nextRow = Math.floor((i + 1) / COLS);
|
|
@@ -2008,7 +2009,7 @@ function BendingProcessRenderer({
|
|
|
2008
2009
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2009
2010
|
"g",
|
|
2010
2011
|
{
|
|
2011
|
-
...
|
|
2012
|
+
...chunkSXCO5HHN_js.smartArtNodeGroupProps(node.id, shadow),
|
|
2012
2013
|
children: [
|
|
2013
2014
|
arrow,
|
|
2014
2015
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -2019,18 +2020,18 @@ function BendingProcessRenderer({
|
|
|
2019
2020
|
width: boxW,
|
|
2020
2021
|
height: boxH,
|
|
2021
2022
|
rx,
|
|
2022
|
-
fill:
|
|
2023
|
-
opacity:
|
|
2023
|
+
fill: chunkSXCO5HHN_js.colour(i, palette),
|
|
2024
|
+
opacity: chunkSXCO5HHN_js.nodeOpacity(i, nodes.length, style),
|
|
2024
2025
|
stroke: sw > 0 ? "rgba(255,255,255,0.3)" : "none",
|
|
2025
2026
|
strokeWidth: sw
|
|
2026
2027
|
}
|
|
2027
2028
|
),
|
|
2028
2029
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2029
|
-
|
|
2030
|
+
chunkSXCO5HHN_js.SmartArtNodeText,
|
|
2030
2031
|
{
|
|
2031
2032
|
x: nodeCx,
|
|
2032
2033
|
y: nodeCy,
|
|
2033
|
-
text:
|
|
2034
|
+
text: chunkSXCO5HHN_js.truncate(node.text, 20),
|
|
2034
2035
|
fill: "white",
|
|
2035
2036
|
fontSize,
|
|
2036
2037
|
className: "pointer-events-none"
|
|
@@ -2339,8 +2340,8 @@ function SmartArtRendererImpl({
|
|
|
2339
2340
|
}
|
|
2340
2341
|
);
|
|
2341
2342
|
}
|
|
2342
|
-
const palette =
|
|
2343
|
-
const style =
|
|
2343
|
+
const palette = chunkSXCO5HHN_js.resolvePalette(element);
|
|
2344
|
+
const style = chunkSXCO5HHN_js.resolveStyle(element);
|
|
2344
2345
|
const a11y = chunkJWS3RQKN_js.buildSmartArtA11y(smartArtData);
|
|
2345
2346
|
const nodeLabels = new Map(a11y.nodes.map((n) => [n.id, n.label]));
|
|
2346
2347
|
const editable = canEdit && Boolean(onUpdateElement);
|
|
@@ -2353,7 +2354,7 @@ function SmartArtRendererImpl({
|
|
|
2353
2354
|
const reflowed = chunkJWS3RQKN_js.rebuildDrawingShapesIfCleared(
|
|
2354
2355
|
updated,
|
|
2355
2356
|
smartArtData.layout,
|
|
2356
|
-
|
|
2357
|
+
chunkSXCO5HHN_js.resolveSmartArtDataPalette(updated),
|
|
2357
2358
|
style,
|
|
2358
2359
|
element.id,
|
|
2359
2360
|
box
|
|
@@ -2370,7 +2371,7 @@ function SmartArtRendererImpl({
|
|
|
2370
2371
|
const reflowed = chunkJWS3RQKN_js.rebuildDrawingShapesIfCleared(
|
|
2371
2372
|
next,
|
|
2372
2373
|
smartArtData.layout,
|
|
2373
|
-
|
|
2374
|
+
chunkSXCO5HHN_js.resolveSmartArtDataPalette(next),
|
|
2374
2375
|
style,
|
|
2375
2376
|
element.id,
|
|
2376
2377
|
box
|
|
@@ -2393,7 +2394,7 @@ function SmartArtRendererImpl({
|
|
|
2393
2394
|
);
|
|
2394
2395
|
} else {
|
|
2395
2396
|
const namedLayout = smartArtData.layout;
|
|
2396
|
-
const layoutType = namedLayout ?
|
|
2397
|
+
const layoutType = namedLayout ? chunkSXCO5HHN_js.layoutToCategory(namedLayout) : (smartArtData.resolvedLayoutType ?? smartArtData.layoutType ?? "list").toLowerCase();
|
|
2397
2398
|
content = renderLayout(layoutType, element, nodes, palette, style, nodeLabels);
|
|
2398
2399
|
}
|
|
2399
2400
|
const body = editable ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -2407,7 +2408,7 @@ function SmartArtRendererImpl({
|
|
|
2407
2408
|
children: content
|
|
2408
2409
|
}
|
|
2409
2410
|
) : content;
|
|
2410
|
-
return
|
|
2411
|
+
return chunkSXCO5HHN_js.wrapChrome(chrome, body, className, { role: a11y.role, label: a11y.label });
|
|
2411
2412
|
}
|
|
2412
2413
|
function renderLayout(layoutType, element, nodes, palette, style, nodeLabels) {
|
|
2413
2414
|
if (layoutType.includes("hierarchy") || layoutType.includes("org")) {
|
|
@@ -2471,34 +2472,34 @@ function renderLayout(layoutType, element, nodes, palette, style, nodeLabels) {
|
|
|
2471
2472
|
return /* @__PURE__ */ jsxRuntime.jsx(BendingProcessRenderer, { element, nodes, palette, style });
|
|
2472
2473
|
}
|
|
2473
2474
|
if (layoutType.includes("stepdown")) {
|
|
2474
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
2475
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkSXCO5HHN_js.renderStepDownProcess(element, nodes, palette, style) });
|
|
2475
2476
|
}
|
|
2476
2477
|
if (layoutType.includes("alternatingflow") || layoutType.includes("alternating")) {
|
|
2477
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
2478
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkSXCO5HHN_js.renderAlternatingFlow(element, nodes, palette, style) });
|
|
2478
2479
|
}
|
|
2479
2480
|
if (layoutType.includes("descending")) {
|
|
2480
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
2481
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkSXCO5HHN_js.renderDescendingProcess(element, nodes, palette, style) });
|
|
2481
2482
|
}
|
|
2482
2483
|
if (layoutType.includes("pictureaccent")) {
|
|
2483
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
2484
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkSXCO5HHN_js.renderPictureAccentList(element, nodes, palette, style) });
|
|
2484
2485
|
}
|
|
2485
2486
|
if (layoutType.includes("verticalblock")) {
|
|
2486
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
2487
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkSXCO5HHN_js.renderVerticalBlockList(element, nodes, palette, style) });
|
|
2487
2488
|
}
|
|
2488
2489
|
if (layoutType.includes("grouped")) {
|
|
2489
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
2490
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkSXCO5HHN_js.renderGroupedList(element, nodes, palette, style) });
|
|
2490
2491
|
}
|
|
2491
2492
|
if (layoutType.includes("pyramidlist")) {
|
|
2492
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
2493
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkSXCO5HHN_js.renderPyramidList(element, nodes, palette, style) });
|
|
2493
2494
|
}
|
|
2494
2495
|
if (layoutType.includes("horizontalpicture")) {
|
|
2495
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
2496
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkSXCO5HHN_js.renderHorizontalPictureList(element, nodes, palette, style) });
|
|
2496
2497
|
}
|
|
2497
2498
|
if (layoutType.includes("accentprocess")) {
|
|
2498
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
2499
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkSXCO5HHN_js.renderAccentProcess(element, nodes, palette, style) });
|
|
2499
2500
|
}
|
|
2500
2501
|
if (layoutType.includes("verticalchevron")) {
|
|
2501
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
2502
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkSXCO5HHN_js.renderVerticalChevronList(element, nodes, palette, style) });
|
|
2502
2503
|
}
|
|
2503
2504
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2504
2505
|
ListRenderer,
|
|
@@ -2548,14 +2549,14 @@ function ThumbnailTable({
|
|
|
2548
2549
|
element,
|
|
2549
2550
|
textStyle
|
|
2550
2551
|
}) {
|
|
2551
|
-
const parsedTable =
|
|
2552
|
+
const parsedTable = chunkSXCO5HHN_js.parseTableElementData(element, textStyle);
|
|
2552
2553
|
if (parsedTable) {
|
|
2553
2554
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full overflow-hidden pointer-events-none", children: /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "w-full h-full border-collapse table-fixed", children: [
|
|
2554
2555
|
parsedTable.columnPercentages.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: parsedTable.columnPercentages.map((pct, ci) => /* @__PURE__ */ jsxRuntime.jsx("col", { style: { width: `${pct.toFixed(2)}%` } }, `${element.id}-tc-${ci}`)) }),
|
|
2555
2556
|
/* @__PURE__ */ jsxRuntime.jsx("tbody", { children: parsedTable.rows.map((row, ri) => {
|
|
2556
|
-
const cells =
|
|
2557
|
+
const cells = chunkSXCO5HHN_js.ensureArrayValue(row["a:tc"]);
|
|
2557
2558
|
const rowHeightRaw = Number.parseInt(String(row["@_h"] || ""), 10);
|
|
2558
|
-
const rowHeight = Number.isFinite(rowHeightRaw) && rowHeightRaw > 0 ? Math.max(16, rowHeightRaw /
|
|
2559
|
+
const rowHeight = Number.isFinite(rowHeightRaw) && rowHeightRaw > 0 ? Math.max(16, rowHeightRaw / chunkSXCO5HHN_js.EMU_PER_PX) : void 0;
|
|
2559
2560
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2560
2561
|
"tr",
|
|
2561
2562
|
{
|
|
@@ -2570,7 +2571,7 @@ function ThumbnailTable({
|
|
|
2570
2571
|
const colSpan = Number.isFinite(gridSpanRaw) && gridSpanRaw > 1 ? gridSpanRaw : void 0;
|
|
2571
2572
|
const rowSpanRaw = Number.parseInt(String(cell["@_rowSpan"] || ""), 10);
|
|
2572
2573
|
const rSpan = Number.isFinite(rowSpanRaw) && rowSpanRaw > 1 ? rowSpanRaw : void 0;
|
|
2573
|
-
const bandStyle =
|
|
2574
|
+
const bandStyle = chunkSXCO5HHN_js.getTableCellBandStyle(
|
|
2574
2575
|
element,
|
|
2575
2576
|
ri,
|
|
2576
2577
|
ci,
|
|
@@ -2584,10 +2585,10 @@ function ThumbnailTable({
|
|
|
2584
2585
|
colSpan,
|
|
2585
2586
|
rowSpan: rSpan,
|
|
2586
2587
|
style: {
|
|
2587
|
-
...
|
|
2588
|
+
...chunkSXCO5HHN_js.extractTableCellStyle(cell, textStyle),
|
|
2588
2589
|
...bandStyle
|
|
2589
2590
|
},
|
|
2590
|
-
children:
|
|
2591
|
+
children: chunkSXCO5HHN_js.extractCellText(cell) || "\xA0"
|
|
2591
2592
|
},
|
|
2592
2593
|
`${element.id}-td-${ri}-${ci}`
|
|
2593
2594
|
);
|
|
@@ -2609,7 +2610,7 @@ function ThumbnailTable({
|
|
|
2609
2610
|
if (cell.hMerge || cell.vMerge) {
|
|
2610
2611
|
return null;
|
|
2611
2612
|
}
|
|
2612
|
-
const bandStyle =
|
|
2613
|
+
const bandStyle = chunkSXCO5HHN_js.getTableCellBandStyle(
|
|
2613
2614
|
element,
|
|
2614
2615
|
ri,
|
|
2615
2616
|
ci,
|
|
@@ -2623,7 +2624,7 @@ function ThumbnailTable({
|
|
|
2623
2624
|
colSpan: cell.gridSpan && cell.gridSpan > 1 ? cell.gridSpan : void 0,
|
|
2624
2625
|
rowSpan: cell.rowSpan && cell.rowSpan > 1 ? cell.rowSpan : void 0,
|
|
2625
2626
|
style: {
|
|
2626
|
-
...
|
|
2627
|
+
...chunkSXCO5HHN_js.cellStyleToCss(cell.style),
|
|
2627
2628
|
...bandStyle
|
|
2628
2629
|
},
|
|
2629
2630
|
children: cell.text || "\xA0"
|
|
@@ -2651,7 +2652,7 @@ function ThumbnailChart({ element }) {
|
|
|
2651
2652
|
if (!chartData || chartData.series.length === 0) {
|
|
2652
2653
|
return /* @__PURE__ */ jsxRuntime.jsx(ThumbnailFallbackLabel, { label: "Chart" });
|
|
2653
2654
|
}
|
|
2654
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full pointer-events-none", children:
|
|
2655
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full pointer-events-none", children: chunkSXCO5HHN_js.renderChartElement(element) });
|
|
2655
2656
|
}
|
|
2656
2657
|
function SlideThumbnailImpl({
|
|
2657
2658
|
slide,
|
|
@@ -2660,12 +2661,12 @@ function SlideThumbnailImpl({
|
|
|
2660
2661
|
}) {
|
|
2661
2662
|
const safeCanvasWidth = Math.max(canvasSize.width, 1);
|
|
2662
2663
|
const safeCanvasHeight = Math.max(canvasSize.height, 1);
|
|
2663
|
-
const scale =
|
|
2664
|
+
const scale = chunkSXCO5HHN_js.SLIDE_NAV_THUMBNAIL_WIDTH / safeCanvasWidth;
|
|
2664
2665
|
const previewHeight = Math.max(56, Math.round(safeCanvasHeight * scale));
|
|
2665
2666
|
const previewElements = [...templateElements, ...slide.elements].slice(0, 60);
|
|
2666
2667
|
const { t } = reactI18next.useTranslation();
|
|
2667
2668
|
const transitionLabel = slide.transition ? (() => {
|
|
2668
|
-
const opt =
|
|
2669
|
+
const opt = chunkSXCO5HHN_js.SLIDE_TRANSITION_OPTIONS.find((o) => o.value === slide.transition?.type);
|
|
2669
2670
|
return opt ? t(opt.i18nKey) : slide.transition.type;
|
|
2670
2671
|
})() : void 0;
|
|
2671
2672
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -2697,31 +2698,31 @@ function SlideThumbnailImpl({
|
|
|
2697
2698
|
const elementHeight = Math.max(element.height, 1);
|
|
2698
2699
|
const elShapeStyle = chunkMGLRKGCH_js.hasShapeProperties(element) ? element.shapeStyle : void 0;
|
|
2699
2700
|
const hasFill = elShapeStyle?.fillColor !== void 0 && elShapeStyle?.fillColor !== "transparent" || Boolean(chunkJWS3RQKN_js.buildCssGradientFromShapeStyle(elShapeStyle) || elShapeStyle?.fillGradient) || elShapeStyle?.fillMode === "pattern" && Boolean(elShapeStyle.fillPatternPreset);
|
|
2700
|
-
const fillColor = chunkJWS3RQKN_js.normalizeHexColor(elShapeStyle?.fillColor,
|
|
2701
|
+
const fillColor = chunkJWS3RQKN_js.normalizeHexColor(elShapeStyle?.fillColor, chunkSXCO5HHN_js.DEFAULT_FILL_COLOR);
|
|
2701
2702
|
const strokeWidth = Math.max(0, elShapeStyle?.strokeWidth || 0);
|
|
2702
|
-
const strokeColor = chunkJWS3RQKN_js.normalizeHexColor(elShapeStyle?.strokeColor,
|
|
2703
|
-
const shapeVisualStyle =
|
|
2703
|
+
const strokeColor = chunkJWS3RQKN_js.normalizeHexColor(elShapeStyle?.strokeColor, chunkSXCO5HHN_js.DEFAULT_STROKE_COLOR);
|
|
2704
|
+
const shapeVisualStyle = chunkSXCO5HHN_js.getShapeVisualStyle(
|
|
2704
2705
|
element,
|
|
2705
2706
|
hasFill,
|
|
2706
2707
|
fillColor,
|
|
2707
2708
|
strokeWidth,
|
|
2708
2709
|
strokeColor
|
|
2709
2710
|
);
|
|
2710
|
-
const vectorShape =
|
|
2711
|
+
const vectorShape = chunkSXCO5HHN_js.renderVectorShape(
|
|
2711
2712
|
element,
|
|
2712
2713
|
hasFill,
|
|
2713
2714
|
fillColor,
|
|
2714
2715
|
strokeWidth,
|
|
2715
2716
|
strokeColor
|
|
2716
2717
|
);
|
|
2717
|
-
const fallbackTextColor = element.type === "shape" && hasFill ? "#ffffff" :
|
|
2718
|
-
const textStyle =
|
|
2719
|
-
const imageRenderStyle =
|
|
2718
|
+
const fallbackTextColor = element.type === "shape" && hasFill ? "#ffffff" : chunkSXCO5HHN_js.DEFAULT_TEXT_COLOR;
|
|
2719
|
+
const textStyle = chunkSXCO5HHN_js.getTextStyleForElement(element, fallbackTextColor);
|
|
2720
|
+
const imageRenderStyle = chunkSXCO5HHN_js.getImageRenderStyle(element);
|
|
2720
2721
|
const canRenderText = chunkJWS3RQKN_js.isEditableTextElement(element);
|
|
2721
2722
|
const elText = chunkMGLRKGCH_js.hasTextProperties(element) ? element.text : void 0;
|
|
2722
2723
|
const elTextSegments = chunkMGLRKGCH_js.hasTextProperties(element) ? element.textSegments : void 0;
|
|
2723
2724
|
const hasText = typeof elText === "string" && elText.trim().length > 0 || (elTextSegments?.length ?? 0) > 0;
|
|
2724
|
-
const fallbackLabel =
|
|
2725
|
+
const fallbackLabel = chunkSXCO5HHN_js.shouldRenderFallbackLabel(element, canRenderText) ? chunkJWS3RQKN_js.getElementLabel(element) : "";
|
|
2725
2726
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2726
2727
|
"div",
|
|
2727
2728
|
{
|
|
@@ -2734,11 +2735,11 @@ function SlideThumbnailImpl({
|
|
|
2734
2735
|
transform: chunkJWS3RQKN_js.getElementTransform(element),
|
|
2735
2736
|
transformOrigin: "center"
|
|
2736
2737
|
},
|
|
2737
|
-
children: (element.type === "picture" || element.type === "image") && (element.svgData || element.imageData) ?
|
|
2738
|
+
children: (element.type === "picture" || element.type === "image") && (element.svgData || element.imageData) ? chunkSXCO5HHN_js.isImageTiled(element) ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2738
2739
|
"div",
|
|
2739
2740
|
{
|
|
2740
2741
|
className: "pointer-events-none w-full h-full",
|
|
2741
|
-
style:
|
|
2742
|
+
style: chunkSXCO5HHN_js.getImageTilingStyle(element)
|
|
2742
2743
|
}
|
|
2743
2744
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
2744
2745
|
"img",
|
|
@@ -2756,12 +2757,12 @@ function SlideThumbnailImpl({
|
|
|
2756
2757
|
{
|
|
2757
2758
|
className: "w-full h-full whitespace-pre-wrap break-words px-1 py-0.5 leading-[1.3]",
|
|
2758
2759
|
style: {
|
|
2759
|
-
...
|
|
2760
|
+
...chunkSXCO5HHN_js.getTextLayoutStyle(element),
|
|
2760
2761
|
...textStyle,
|
|
2761
2762
|
transform: chunkJWS3RQKN_js.getTextCompensationTransform(element),
|
|
2762
2763
|
transformOrigin: "center"
|
|
2763
2764
|
},
|
|
2764
|
-
children:
|
|
2765
|
+
children: chunkSXCO5HHN_js.renderTextSegments(element, fallbackTextColor)
|
|
2765
2766
|
}
|
|
2766
2767
|
),
|
|
2767
2768
|
!hasText && fallbackLabel.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 flex items-center justify-center text-[10px] text-muted-foreground", children: fallbackLabel })
|
|
@@ -3289,7 +3290,7 @@ function ResizeHandles({
|
|
|
3289
3290
|
"button",
|
|
3290
3291
|
{
|
|
3291
3292
|
type: "button",
|
|
3292
|
-
className:
|
|
3293
|
+
className: chunkSXCO5HHN_js.cn("absolute z-10 group", posClass, cursor),
|
|
3293
3294
|
style: peStyle,
|
|
3294
3295
|
onPointerDown: (e) => handleResizePointer(e, handle),
|
|
3295
3296
|
onMouseDown: (e) => {
|
|
@@ -3307,7 +3308,7 @@ function ResizeHandles({
|
|
|
3307
3308
|
"button",
|
|
3308
3309
|
{
|
|
3309
3310
|
type: "button",
|
|
3310
|
-
className:
|
|
3311
|
+
className: chunkSXCO5HHN_js.cn("absolute z-10", posClass, cursor),
|
|
3311
3312
|
style: peStyle,
|
|
3312
3313
|
onPointerDown: (e) => handleResizePointer(e, handle),
|
|
3313
3314
|
onMouseDown: (e) => {
|
|
@@ -3315,7 +3316,7 @@ function ResizeHandles({
|
|
|
3315
3316
|
onResizePointerDown(elementId, e, handle);
|
|
3316
3317
|
},
|
|
3317
3318
|
children: [
|
|
3318
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
3319
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkSXCO5HHN_js.cn(sizeClass, "border border-white bg-primary shadow") }),
|
|
3319
3320
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -inset-2 max-md:-inset-1" })
|
|
3320
3321
|
]
|
|
3321
3322
|
},
|
|
@@ -3394,7 +3395,7 @@ var ConnectorElementRenderer = React5__default.default.memo(
|
|
|
3394
3395
|
const viewHeight = Math.max(el.height, 1);
|
|
3395
3396
|
const ss = shapeEl?.shapeStyle;
|
|
3396
3397
|
const strokeWidth = Math.max(0, ss?.strokeWidth ?? 2);
|
|
3397
|
-
const strokeColor = chunkJWS3RQKN_js.normalizeHexColor(ss?.strokeColor,
|
|
3398
|
+
const strokeColor = chunkJWS3RQKN_js.normalizeHexColor(ss?.strokeColor, chunkSXCO5HHN_js.DEFAULT_STROKE_COLOR);
|
|
3398
3399
|
const strokePaint = chunkJWS3RQKN_js.colorWithOpacity(strokeColor, ss?.strokeOpacity);
|
|
3399
3400
|
const dashType = chunkJWS3RQKN_js.normalizeStrokeDashType(ss?.strokeDash);
|
|
3400
3401
|
const dashArray = chunkJWS3RQKN_js.getSvgStrokeDasharray(
|
|
@@ -3415,7 +3416,7 @@ var ConnectorElementRenderer = React5__default.default.memo(
|
|
|
3415
3416
|
const connectorText = textEl?.text?.trim() ?? "";
|
|
3416
3417
|
const connectorTextSegments = textEl?.textSegments;
|
|
3417
3418
|
const connectorTextStyle = textEl?.textStyle;
|
|
3418
|
-
const pathGeometry = shapeEl ?
|
|
3419
|
+
const pathGeometry = shapeEl ? chunkSXCO5HHN_js.getConnectorPathGeometry(shapeEl) : {
|
|
3419
3420
|
pathData: `M 0 0 L ${viewWidth} ${viewHeight}`,
|
|
3420
3421
|
startX: 0,
|
|
3421
3422
|
startY: 0,
|
|
@@ -3424,8 +3425,8 @@ var ConnectorElementRenderer = React5__default.default.memo(
|
|
|
3424
3425
|
};
|
|
3425
3426
|
const hitTargetWidth = Math.max(strokeWidth * 3, 14);
|
|
3426
3427
|
const selColor = selClr === "blue-400" ? "#60a5fa" : "#3b82f6";
|
|
3427
|
-
const lineShadow =
|
|
3428
|
-
const lineGlow =
|
|
3428
|
+
const lineShadow = chunkSXCO5HHN_js.buildLineShadowCss(el);
|
|
3429
|
+
const lineGlow = chunkSXCO5HHN_js.buildLineGlowFilter(el);
|
|
3429
3430
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3430
3431
|
"div",
|
|
3431
3432
|
{
|
|
@@ -3435,8 +3436,8 @@ var ConnectorElementRenderer = React5__default.default.memo(
|
|
|
3435
3436
|
style: {
|
|
3436
3437
|
left: el.x,
|
|
3437
3438
|
top: el.y,
|
|
3438
|
-
width: Math.max(el.width,
|
|
3439
|
-
height: Math.max(el.height,
|
|
3439
|
+
width: Math.max(el.width, chunkSXCO5HHN_js.MIN_ELEMENT_SIZE),
|
|
3440
|
+
height: Math.max(el.height, chunkSXCO5HHN_js.MIN_ELEMENT_SIZE),
|
|
3440
3441
|
transform: chunkJWS3RQKN_js.getElementTransform(el),
|
|
3441
3442
|
transformOrigin: "center",
|
|
3442
3443
|
background: "transparent",
|
|
@@ -3458,14 +3459,14 @@ var ConnectorElementRenderer = React5__default.default.memo(
|
|
|
3458
3459
|
style: { overflow: "visible", pointerEvents: "none" },
|
|
3459
3460
|
children: [
|
|
3460
3461
|
/* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
|
|
3461
|
-
|
|
3462
|
+
chunkSXCO5HHN_js.renderConnectorMarker(
|
|
3462
3463
|
startMarkerId,
|
|
3463
3464
|
startArrow,
|
|
3464
3465
|
strokePaint,
|
|
3465
3466
|
ss?.connectorStartArrowWidth,
|
|
3466
3467
|
ss?.connectorStartArrowLength
|
|
3467
3468
|
),
|
|
3468
|
-
|
|
3469
|
+
chunkSXCO5HHN_js.renderConnectorMarker(
|
|
3469
3470
|
endMarkerId,
|
|
3470
3471
|
endArrow,
|
|
3471
3472
|
strokePaint,
|
|
@@ -3610,14 +3611,14 @@ function elementHasTextHyperlink(el) {
|
|
|
3610
3611
|
return Boolean(el.textSegments?.some((segment) => Boolean(segment.style?.hyperlink)));
|
|
3611
3612
|
}
|
|
3612
3613
|
function renderDagDuotoneFilterForElement(el) {
|
|
3613
|
-
if (!
|
|
3614
|
+
if (!chunkSXCO5HHN_js.hasDagDuotoneEffect(el)) {
|
|
3614
3615
|
return null;
|
|
3615
3616
|
}
|
|
3616
3617
|
const duotone = el.shapeStyle?.dagDuotone;
|
|
3617
3618
|
if (!duotone) {
|
|
3618
3619
|
return null;
|
|
3619
3620
|
}
|
|
3620
|
-
return
|
|
3621
|
+
return chunkSXCO5HHN_js.renderDagDuotoneSvgFilter(el.id, duotone.color1, duotone.color2);
|
|
3621
3622
|
}
|
|
3622
3623
|
function getContainerStyle({
|
|
3623
3624
|
el,
|
|
@@ -3634,12 +3635,12 @@ function getContainerStyle({
|
|
|
3634
3635
|
return {
|
|
3635
3636
|
left: isFullscreenMedia ? 0 : el.x,
|
|
3636
3637
|
top: isFullscreenMedia ? 0 : el.y,
|
|
3637
|
-
width: isFullscreenMedia ? "100%" : Math.max(el.width,
|
|
3638
|
-
height: isFullscreenMedia ? "100%" : Math.max(el.height,
|
|
3638
|
+
width: isFullscreenMedia ? "100%" : Math.max(el.width, chunkSXCO5HHN_js.MIN_ELEMENT_SIZE),
|
|
3639
|
+
height: isFullscreenMedia ? "100%" : Math.max(el.height, chunkSXCO5HHN_js.MIN_ELEMENT_SIZE),
|
|
3639
3640
|
transform: isFullscreenMedia ? "none" : chunkJWS3RQKN_js.getElementTransform(el),
|
|
3640
3641
|
transformOrigin: "center",
|
|
3641
3642
|
overflow: overflowValue,
|
|
3642
|
-
clipPath: isImg && !has3DExtrusion ?
|
|
3643
|
+
clipPath: isImg && !has3DExtrusion ? chunkSXCO5HHN_js.getCropShapeClipPath(el) : void 0,
|
|
3643
3644
|
zIndex: isFullscreenMedia ? 20 : zIndex,
|
|
3644
3645
|
opacity,
|
|
3645
3646
|
visibility: animationState?.visible === false ? "hidden" : "visible",
|
|
@@ -3703,13 +3704,13 @@ function getSegmentTspanProps(segment, element, fallbackColor) {
|
|
|
3703
3704
|
if (s.strikethrough) {
|
|
3704
3705
|
decos.push("line-through");
|
|
3705
3706
|
}
|
|
3706
|
-
const fill = s.hyperlink ? chunkJWS3RQKN_js.normalizeHexColor(s.color || element.textStyle?.color,
|
|
3707
|
+
const fill = s.hyperlink ? chunkJWS3RQKN_js.normalizeHexColor(s.color || element.textStyle?.color, chunkSXCO5HHN_js.HYPERLINK_COLOR) : chunkJWS3RQKN_js.normalizeHexColor(s.color || element.textStyle?.color, fallbackColor);
|
|
3707
3708
|
return {
|
|
3708
3709
|
fill,
|
|
3709
|
-
fontSize: s.fontSize ?? element.textStyle?.fontSize ??
|
|
3710
|
+
fontSize: s.fontSize ?? element.textStyle?.fontSize ?? chunkSXCO5HHN_js.DEFAULT_TEXT_FONT_SIZE,
|
|
3710
3711
|
fontWeight: s.bold ? 700 : 400,
|
|
3711
3712
|
fontStyle: s.italic ? "italic" : void 0,
|
|
3712
|
-
fontFamily: s.fontFamily || element.textStyle?.fontFamily ? chunkMGLRKGCH_js.getSubstituteFontFamily(s.fontFamily || element.textStyle?.fontFamily || "") :
|
|
3713
|
+
fontFamily: s.fontFamily || element.textStyle?.fontFamily ? chunkMGLRKGCH_js.getSubstituteFontFamily(s.fontFamily || element.textStyle?.fontFamily || "") : chunkSXCO5HHN_js.DEFAULT_FONT_FAMILY,
|
|
3713
3714
|
textDecoration: decos.length > 0 ? decos.join(" ") : void 0
|
|
3714
3715
|
};
|
|
3715
3716
|
}
|
|
@@ -3738,8 +3739,8 @@ function WarpedText({
|
|
|
3738
3739
|
const warpAdj2 = textEl.textStyle?.textWarpAdj2;
|
|
3739
3740
|
const align = textEl.textStyle?.align ?? "center";
|
|
3740
3741
|
const { startOffset, textAnchor } = getAlignmentProps(align);
|
|
3741
|
-
const baseFontSize = textEl.textStyle?.fontSize ??
|
|
3742
|
-
const baseFontFamily = textEl.textStyle?.fontFamily ? chunkMGLRKGCH_js.getSubstituteFontFamily(textEl.textStyle.fontFamily) :
|
|
3742
|
+
const baseFontSize = textEl.textStyle?.fontSize ?? chunkSXCO5HHN_js.DEFAULT_TEXT_FONT_SIZE;
|
|
3743
|
+
const baseFontFamily = textEl.textStyle?.fontFamily ? chunkMGLRKGCH_js.getSubstituteFontFamily(textEl.textStyle.fontFamily) : chunkSXCO5HHN_js.DEFAULT_FONT_FAMILY;
|
|
3743
3744
|
const baseFill = chunkJWS3RQKN_js.normalizeHexColor(textEl.textStyle?.color, fallbackColor);
|
|
3744
3745
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3745
3746
|
"svg",
|
|
@@ -3896,7 +3897,7 @@ function ChartElementView({
|
|
|
3896
3897
|
const selectedPart = selection?.elementId === element.id ? selection.part : null;
|
|
3897
3898
|
const canEdit = editable && Boolean(onUpdateElement);
|
|
3898
3899
|
const viewModel = React5.useMemo(
|
|
3899
|
-
() => canEdit ?
|
|
3900
|
+
() => canEdit ? chunkSXCO5HHN_js.buildReactChartViewModel(element) : null,
|
|
3900
3901
|
[canEdit, element]
|
|
3901
3902
|
);
|
|
3902
3903
|
React5.useEffect(ensureInteractionStyles, []);
|
|
@@ -4042,7 +4043,7 @@ function ChartElementView({
|
|
|
4042
4043
|
onPointerUp: handlePointerUp,
|
|
4043
4044
|
onDoubleClick: handleDoubleClick,
|
|
4044
4045
|
children: [
|
|
4045
|
-
|
|
4046
|
+
chunkSXCO5HHN_js.renderChartElement(renderedElement),
|
|
4046
4047
|
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: chunkJWS3RQKN_js.formatAxisValue(dragValue) }),
|
|
4047
4048
|
titleDraft !== null && /* @__PURE__ */ jsxRuntime.jsx(
|
|
4048
4049
|
"input",
|
|
@@ -4209,7 +4210,7 @@ function renderImg(el, style, filter, alt, opacity) {
|
|
|
4209
4210
|
] });
|
|
4210
4211
|
}
|
|
4211
4212
|
}
|
|
4212
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-gray-500 bg-gray-100", children:
|
|
4213
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-gray-500 bg-gray-100", children: chunkIZXN663G_js.translationsEn["pptx.elementType.image"] });
|
|
4213
4214
|
}
|
|
4214
4215
|
const effectStyles = {
|
|
4215
4216
|
...filter ? { filter } : {},
|
|
@@ -4217,28 +4218,28 @@ function renderImg(el, style, filter, alt, opacity) {
|
|
|
4217
4218
|
};
|
|
4218
4219
|
const artisticEffectName = chunkMGLRKGCH_js.isImageLikeElement(el) ? el.imageEffects?.artisticEffect : void 0;
|
|
4219
4220
|
const artisticRadius = chunkMGLRKGCH_js.isImageLikeElement(el) ? el.imageEffects?.artisticRadius ?? 5 : 5;
|
|
4220
|
-
if (
|
|
4221
|
+
if (chunkSXCO5HHN_js.isImageTiled(el)) {
|
|
4221
4222
|
const tileSrc = imgSrc(el);
|
|
4222
4223
|
if (!tileSrc) {
|
|
4223
4224
|
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" });
|
|
4224
4225
|
}
|
|
4225
|
-
const tileDuotoneColors =
|
|
4226
|
+
const tileDuotoneColors = chunkSXCO5HHN_js.getDuotoneColors(el);
|
|
4226
4227
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
4227
|
-
tileDuotoneColors &&
|
|
4228
|
-
|
|
4229
|
-
|
|
4228
|
+
tileDuotoneColors && chunkSXCO5HHN_js.renderDuotoneSvgFilter(el.id, tileDuotoneColors.color1, tileDuotoneColors.color2),
|
|
4229
|
+
chunkSXCO5HHN_js.renderArtisticEffectSvgFilter(el.id, artisticEffectName, artisticRadius),
|
|
4230
|
+
chunkSXCO5HHN_js.renderImageAlphaSvgFilter(el),
|
|
4230
4231
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4231
4232
|
"div",
|
|
4232
4233
|
{
|
|
4233
4234
|
className: "pointer-events-none select-none w-full h-full",
|
|
4234
|
-
style: { ...
|
|
4235
|
+
style: { ...chunkSXCO5HHN_js.getImageTilingStyle(el), ...effectStyles }
|
|
4235
4236
|
}
|
|
4236
4237
|
)
|
|
4237
4238
|
] });
|
|
4238
4239
|
}
|
|
4239
4240
|
const colorWash = "imageEffects" in el ? el.imageEffects?.colorWash : void 0;
|
|
4240
4241
|
const clrChange = "imageEffects" in el ? el.imageEffects?.clrChange : void 0;
|
|
4241
|
-
const duotoneColors =
|
|
4242
|
+
const duotoneColors = chunkSXCO5HHN_js.getDuotoneColors(el);
|
|
4242
4243
|
const useDuotoneCanvas = Boolean(duotoneColors && !clrChange);
|
|
4243
4244
|
const filterForImg = useDuotoneCanvas ? chunkJWS3RQKN_js.getImageEffectsFilter(el, { excludeDuotone: true }) : filter;
|
|
4244
4245
|
const canvasEffectStyles = {
|
|
@@ -4246,9 +4247,9 @@ function renderImg(el, style, filter, alt, opacity) {
|
|
|
4246
4247
|
...opacity !== void 0 ? { opacity } : {}
|
|
4247
4248
|
};
|
|
4248
4249
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
4249
|
-
duotoneColors && !useDuotoneCanvas &&
|
|
4250
|
-
|
|
4251
|
-
|
|
4250
|
+
duotoneColors && !useDuotoneCanvas && chunkSXCO5HHN_js.renderDuotoneSvgFilter(el.id, duotoneColors.color1, duotoneColors.color2),
|
|
4251
|
+
chunkSXCO5HHN_js.renderArtisticEffectSvgFilter(el.id, artisticEffectName, artisticRadius),
|
|
4252
|
+
chunkSXCO5HHN_js.renderImageAlphaSvgFilter(el),
|
|
4252
4253
|
useDuotoneCanvas && duotoneColors ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
4253
4254
|
DuotoneImage,
|
|
4254
4255
|
{
|
|
@@ -4359,9 +4360,9 @@ function renderInk(el, options) {
|
|
|
4359
4360
|
function renderGroup(children) {
|
|
4360
4361
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative w-full h-full pointer-events-none", children: children.map((c, childIndex) => {
|
|
4361
4362
|
const { hf, fc, sw, sc } = shapeParams(c);
|
|
4362
|
-
const ss =
|
|
4363
|
-
const vs =
|
|
4364
|
-
const ts =
|
|
4363
|
+
const ss = chunkSXCO5HHN_js.getShapeVisualStyle(c, hf, fc, sw, sc);
|
|
4364
|
+
const vs = chunkSXCO5HHN_js.renderVectorShape(c, hf, fc, sw, sc);
|
|
4365
|
+
const ts = chunkSXCO5HHN_js.getTextStyleForElement(c, chunkSXCO5HHN_js.DEFAULT_TEXT_COLOR);
|
|
4365
4366
|
const isTxt = chunkJWS3RQKN_js.isEditableTextElement(c);
|
|
4366
4367
|
const isI = c.type === "picture" || c.type === "image";
|
|
4367
4368
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -4371,12 +4372,12 @@ function renderGroup(children) {
|
|
|
4371
4372
|
style: {
|
|
4372
4373
|
left: c.x,
|
|
4373
4374
|
top: c.y,
|
|
4374
|
-
width: Math.max(c.width,
|
|
4375
|
-
height: Math.max(c.height,
|
|
4375
|
+
width: Math.max(c.width, chunkSXCO5HHN_js.MIN_ELEMENT_SIZE),
|
|
4376
|
+
height: Math.max(c.height, chunkSXCO5HHN_js.MIN_ELEMENT_SIZE),
|
|
4376
4377
|
transform: chunkJWS3RQKN_js.getElementTransform(c),
|
|
4377
4378
|
transformOrigin: "center",
|
|
4378
4379
|
overflow: isI ? "hidden" : void 0,
|
|
4379
|
-
clipPath: isI ?
|
|
4380
|
+
clipPath: isI ? chunkSXCO5HHN_js.getCropShapeClipPath(c) : void 0,
|
|
4380
4381
|
...ss,
|
|
4381
4382
|
// Explicit z-index preserves document order stacking within the
|
|
4382
4383
|
// group: later children in the array (= later in p:grpSp XML)
|
|
@@ -4384,19 +4385,19 @@ function renderGroup(children) {
|
|
|
4384
4385
|
// Placed after ...ss to ensure it is never overwritten.
|
|
4385
4386
|
zIndex: childIndex
|
|
4386
4387
|
},
|
|
4387
|
-
children: isI && ("svgData" in c && c.svgData || "imageData" in c && c.imageData) ?
|
|
4388
|
+
children: isI && ("svgData" in c && c.svgData || "imageData" in c && c.imageData) ? chunkSXCO5HHN_js.isImageTiled(c) ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
4388
4389
|
"div",
|
|
4389
4390
|
{
|
|
4390
4391
|
className: "pointer-events-none select-none w-full h-full",
|
|
4391
|
-
style:
|
|
4392
|
+
style: chunkSXCO5HHN_js.getImageTilingStyle(c)
|
|
4392
4393
|
}
|
|
4393
4394
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
4394
4395
|
"img",
|
|
4395
4396
|
{
|
|
4396
4397
|
src: "svgData" in c && c.svgData ? c.svgData : c.imageData,
|
|
4397
|
-
alt:
|
|
4398
|
+
alt: chunkIZXN663G_js.translationsEn["pptx.ink.groupChildAlt"],
|
|
4398
4399
|
className: "pointer-events-none select-none",
|
|
4399
|
-
style:
|
|
4400
|
+
style: chunkSXCO5HHN_js.getImageRenderStyle(c),
|
|
4400
4401
|
draggable: false
|
|
4401
4402
|
}
|
|
4402
4403
|
) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
@@ -4406,7 +4407,7 @@ function renderGroup(children) {
|
|
|
4406
4407
|
{
|
|
4407
4408
|
className: "relative z-10 w-full h-full pointer-events-none whitespace-pre-wrap break-words leading-[1.3]",
|
|
4408
4409
|
style: ts,
|
|
4409
|
-
children:
|
|
4410
|
+
children: chunkSXCO5HHN_js.renderTextSegments(c, chunkSXCO5HHN_js.DEFAULT_TEXT_COLOR)
|
|
4410
4411
|
}
|
|
4411
4412
|
) : null
|
|
4412
4413
|
] })
|
|
@@ -4468,7 +4469,7 @@ function renderContentPart(el, options) {
|
|
|
4468
4469
|
}
|
|
4469
4470
|
);
|
|
4470
4471
|
}
|
|
4471
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children:
|
|
4472
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkIZXN663G_js.translationsEn["pptx.ink.contentPartFallback"] });
|
|
4472
4473
|
}
|
|
4473
4474
|
function ExcelIcon(color, size = 32) {
|
|
4474
4475
|
return /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", children: [
|
|
@@ -4526,7 +4527,7 @@ function PdfIcon(color, size = 32) {
|
|
|
4526
4527
|
fill: "none"
|
|
4527
4528
|
}
|
|
4528
4529
|
),
|
|
4529
|
-
/* @__PURE__ */ jsxRuntime.jsx("text", { x: "12", y: "14", textAnchor: "middle", fill: color, fontSize: "7", fontWeight: "bold", children:
|
|
4530
|
+
/* @__PURE__ */ jsxRuntime.jsx("text", { x: "12", y: "14", textAnchor: "middle", fill: color, fontSize: "7", fontWeight: "bold", children: chunkIZXN663G_js.translationsEn["pptx.file.pdf"] })
|
|
4530
4531
|
] });
|
|
4531
4532
|
}
|
|
4532
4533
|
function VisioIcon(color, size = 32) {
|
|
@@ -4755,7 +4756,7 @@ function InlineTextEditor({
|
|
|
4755
4756
|
pending.endOffset
|
|
4756
4757
|
);
|
|
4757
4758
|
});
|
|
4758
|
-
const warpStyle =
|
|
4759
|
+
const warpStyle = chunkSXCO5HHN_js.getTextWarpStyle(textStyleRaw);
|
|
4759
4760
|
const compensationTransform = chunkJWS3RQKN_js.getTextCompensationTransform(element);
|
|
4760
4761
|
const warpTransform = warpStyle?.transform;
|
|
4761
4762
|
const mergedTransform = [compensationTransform, warpTransform].filter(Boolean).join(" ") || void 0;
|
|
@@ -4831,7 +4832,7 @@ function InlineTextEditor({
|
|
|
4831
4832
|
const text = e.clipboardData.getData("text/plain");
|
|
4832
4833
|
document.execCommand("insertText", false, text);
|
|
4833
4834
|
},
|
|
4834
|
-
children: seed.hasRichSegments ?
|
|
4835
|
+
children: seed.hasRichSegments ? chunkSXCO5HHN_js.renderTextSegments(element, chunkSXCO5HHN_js.DEFAULT_TEXT_COLOR) : seed.initialText
|
|
4835
4836
|
}
|
|
4836
4837
|
);
|
|
4837
4838
|
}
|
|
@@ -5161,8 +5162,8 @@ function SmartArt3DRenderer({
|
|
|
5161
5162
|
if (nodes.length === 0) {
|
|
5162
5163
|
return null;
|
|
5163
5164
|
}
|
|
5164
|
-
const palette =
|
|
5165
|
-
const style =
|
|
5165
|
+
const palette = chunkSXCO5HHN_js.resolvePalette(element);
|
|
5166
|
+
const style = chunkSXCO5HHN_js.resolveStyle(element);
|
|
5166
5167
|
const layoutResult = chunkJWS3RQKN_js.computeSmartArtLayout(
|
|
5167
5168
|
nodes,
|
|
5168
5169
|
{ width: element.width, height: element.height },
|
|
@@ -5471,7 +5472,7 @@ function renderBody(options) {
|
|
|
5471
5472
|
textDirection: txtSE?.textDirection,
|
|
5472
5473
|
textStyle: txtS,
|
|
5473
5474
|
textStyleRaw: txtSE,
|
|
5474
|
-
layoutStyle:
|
|
5475
|
+
layoutStyle: chunkSXCO5HHN_js.getTextLayoutStyle(el),
|
|
5475
5476
|
element: el,
|
|
5476
5477
|
onCommit,
|
|
5477
5478
|
onCancel,
|
|
@@ -5482,7 +5483,7 @@ function renderBody(options) {
|
|
|
5482
5483
|
] });
|
|
5483
5484
|
}
|
|
5484
5485
|
if (el.type === "table") {
|
|
5485
|
-
return
|
|
5486
|
+
return chunkSXCO5HHN_js.renderTableElement(el, txtS, {
|
|
5486
5487
|
editable: isSel,
|
|
5487
5488
|
selectedCell: isSel ? tableSt : null,
|
|
5488
5489
|
onSelectCell: onCellSel,
|
|
@@ -5513,7 +5514,7 @@ function renderBody(options) {
|
|
|
5513
5514
|
);
|
|
5514
5515
|
}
|
|
5515
5516
|
if (el.type === "media") {
|
|
5516
|
-
return
|
|
5517
|
+
return chunkSXCO5HHN_js.renderMediaElement(el, media, {
|
|
5517
5518
|
autoPlay: isPresentationPassive,
|
|
5518
5519
|
fullScreen: isPresentationPassive && Boolean(el.fullScreen),
|
|
5519
5520
|
isPresentationMode: isPresentationPassive,
|
|
@@ -5535,7 +5536,7 @@ function renderBody(options) {
|
|
|
5535
5536
|
if (doGrp && el.type === "group" && el.children) {
|
|
5536
5537
|
return renderGroup(el.children);
|
|
5537
5538
|
}
|
|
5538
|
-
if (
|
|
5539
|
+
if (chunkSXCO5HHN_js.shouldRenderFallbackLabel(el, isTxtEl)) {
|
|
5539
5540
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkJWS3RQKN_js.getElementLabel(el) });
|
|
5540
5541
|
}
|
|
5541
5542
|
const isLinkedTxbx = chunkMGLRKGCH_js.hasTextProperties(el) && el.linkedTxbxId !== void 0;
|
|
@@ -5543,7 +5544,7 @@ function renderBody(options) {
|
|
|
5543
5544
|
const linkedSegments = isLinkedTxbx && slideElements ? chunkMGLRKGCH_js.getLinkedTextBoxSegments(el, slideElements) : void 0;
|
|
5544
5545
|
const warpPreset = chunkMGLRKGCH_js.hasTextProperties(el) ? el.textStyle?.textWarpPreset : void 0;
|
|
5545
5546
|
const useSvgWarp = chunkJWS3RQKN_js.shouldUseSvgWarp(warpPreset);
|
|
5546
|
-
const scene3dStyle = chunkMGLRKGCH_js.hasTextProperties(el) ?
|
|
5547
|
+
const scene3dStyle = chunkMGLRKGCH_js.hasTextProperties(el) ? chunkSXCO5HHN_js.buildTextBody3DSceneStyle(el.textStyle) : void 0;
|
|
5547
5548
|
const compensationTransform = chunkJWS3RQKN_js.getTextCompensationTransform(el);
|
|
5548
5549
|
const composedTransform = [compensationTransform, scene3dStyle?.transform].filter(Boolean).join(" ") || void 0;
|
|
5549
5550
|
const scene3dNonTransform = scene3dStyle ? {
|
|
@@ -5558,12 +5559,12 @@ function renderBody(options) {
|
|
|
5558
5559
|
isTxtEl ? useSvgWarp ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
5559
5560
|
"div",
|
|
5560
5561
|
{
|
|
5561
|
-
className:
|
|
5562
|
+
className: chunkSXCO5HHN_js.cn(
|
|
5562
5563
|
"relative z-10 w-full h-full",
|
|
5563
5564
|
onHyperlinkClick ? "" : "pointer-events-none"
|
|
5564
5565
|
),
|
|
5565
5566
|
style: {
|
|
5566
|
-
...
|
|
5567
|
+
...chunkSXCO5HHN_js.getTextLayoutStyle(el),
|
|
5567
5568
|
transform: composedTransform,
|
|
5568
5569
|
transformOrigin: "center",
|
|
5569
5570
|
...scene3dNonTransform,
|
|
@@ -5575,7 +5576,7 @@ function renderBody(options) {
|
|
|
5575
5576
|
element: el,
|
|
5576
5577
|
width: el.width,
|
|
5577
5578
|
height: el.height,
|
|
5578
|
-
fallbackColor:
|
|
5579
|
+
fallbackColor: chunkSXCO5HHN_js.DEFAULT_TEXT_COLOR,
|
|
5579
5580
|
findHighlights: findHl,
|
|
5580
5581
|
fieldContext
|
|
5581
5582
|
}
|
|
@@ -5584,22 +5585,22 @@ function renderBody(options) {
|
|
|
5584
5585
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
5585
5586
|
"div",
|
|
5586
5587
|
{
|
|
5587
|
-
className:
|
|
5588
|
+
className: chunkSXCO5HHN_js.cn(
|
|
5588
5589
|
"relative z-10 w-full h-full whitespace-pre-wrap break-words leading-[1.3]",
|
|
5589
5590
|
onHyperlinkClick ? "" : "pointer-events-none"
|
|
5590
5591
|
),
|
|
5591
5592
|
style: {
|
|
5592
|
-
...
|
|
5593
|
+
...chunkSXCO5HHN_js.getTextLayoutStyle(el),
|
|
5593
5594
|
...txtS,
|
|
5594
|
-
...
|
|
5595
|
+
...chunkSXCO5HHN_js.getTextWarpStyle(txtSE),
|
|
5595
5596
|
transform: composedTransform,
|
|
5596
5597
|
transformOrigin: "center",
|
|
5597
5598
|
...scene3dNonTransform,
|
|
5598
5599
|
...linkedOverflowCss
|
|
5599
5600
|
},
|
|
5600
|
-
children:
|
|
5601
|
+
children: chunkSXCO5HHN_js.renderTextSegments(
|
|
5601
5602
|
el,
|
|
5602
|
-
|
|
5603
|
+
chunkSXCO5HHN_js.DEFAULT_TEXT_COLOR,
|
|
5603
5604
|
void 0,
|
|
5604
5605
|
findHl,
|
|
5605
5606
|
onHyperlinkClick,
|
|
@@ -5612,12 +5613,12 @@ function renderBody(options) {
|
|
|
5612
5613
|
) : chunkMGLRKGCH_js.hasTextProperties(el) && el.promptText ? useSvgWarp ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
5613
5614
|
"div",
|
|
5614
5615
|
{
|
|
5615
|
-
className:
|
|
5616
|
+
className: chunkSXCO5HHN_js.cn(
|
|
5616
5617
|
"relative z-10 w-full h-full",
|
|
5617
5618
|
onHyperlinkClick ? "" : "pointer-events-none"
|
|
5618
5619
|
),
|
|
5619
5620
|
style: {
|
|
5620
|
-
...
|
|
5621
|
+
...chunkSXCO5HHN_js.getTextLayoutStyle(el),
|
|
5621
5622
|
transform: composedTransform,
|
|
5622
5623
|
transformOrigin: "center",
|
|
5623
5624
|
...scene3dNonTransform,
|
|
@@ -5629,7 +5630,7 @@ function renderBody(options) {
|
|
|
5629
5630
|
element: el,
|
|
5630
5631
|
width: el.width,
|
|
5631
5632
|
height: el.height,
|
|
5632
|
-
fallbackColor:
|
|
5633
|
+
fallbackColor: chunkSXCO5HHN_js.DEFAULT_TEXT_COLOR,
|
|
5633
5634
|
findHighlights: findHl,
|
|
5634
5635
|
fieldContext
|
|
5635
5636
|
}
|
|
@@ -5638,22 +5639,22 @@ function renderBody(options) {
|
|
|
5638
5639
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
5639
5640
|
"div",
|
|
5640
5641
|
{
|
|
5641
|
-
className:
|
|
5642
|
+
className: chunkSXCO5HHN_js.cn(
|
|
5642
5643
|
"relative z-10 w-full h-full whitespace-pre-wrap break-words leading-[1.3]",
|
|
5643
5644
|
onHyperlinkClick ? "" : "pointer-events-none"
|
|
5644
5645
|
),
|
|
5645
5646
|
style: {
|
|
5646
|
-
...
|
|
5647
|
+
...chunkSXCO5HHN_js.getTextLayoutStyle(el),
|
|
5647
5648
|
...txtS,
|
|
5648
|
-
...
|
|
5649
|
+
...chunkSXCO5HHN_js.getTextWarpStyle(txtSE),
|
|
5649
5650
|
transform: composedTransform,
|
|
5650
5651
|
transformOrigin: "center",
|
|
5651
5652
|
...scene3dNonTransform,
|
|
5652
5653
|
...linkedOverflowCss
|
|
5653
5654
|
},
|
|
5654
|
-
children:
|
|
5655
|
+
children: chunkSXCO5HHN_js.renderTextSegments(
|
|
5655
5656
|
el,
|
|
5656
|
-
|
|
5657
|
+
chunkSXCO5HHN_js.DEFAULT_TEXT_COLOR,
|
|
5657
5658
|
void 0,
|
|
5658
5659
|
findHl,
|
|
5659
5660
|
onHyperlinkClick,
|
|
@@ -5708,8 +5709,8 @@ function LinkTooltip({ label, hasUrl }) {
|
|
|
5708
5709
|
function shapeParams(el) {
|
|
5709
5710
|
const ss = chunkMGLRKGCH_js.hasShapeProperties(el) ? el.shapeStyle : void 0;
|
|
5710
5711
|
const sw = Math.max(0, ss?.strokeWidth || 0);
|
|
5711
|
-
const sc = chunkJWS3RQKN_js.normalizeHexColor(ss?.strokeColor,
|
|
5712
|
-
const fc = chunkJWS3RQKN_js.normalizeHexColor(ss?.fillColor,
|
|
5712
|
+
const sc = chunkJWS3RQKN_js.normalizeHexColor(ss?.strokeColor, chunkSXCO5HHN_js.DEFAULT_STROKE_COLOR);
|
|
5713
|
+
const fc = chunkJWS3RQKN_js.normalizeHexColor(ss?.fillColor, chunkSXCO5HHN_js.DEFAULT_FILL_COLOR);
|
|
5713
5714
|
const hf = ss?.fillColor !== void 0 && ss?.fillColor !== "transparent" || Boolean(chunkJWS3RQKN_js.buildCssGradientFromShapeStyle(ss) || ss?.fillGradient) || ss?.fillMode === "pattern" && Boolean(ss.fillPatternPreset);
|
|
5714
5715
|
return { hf, fc, sw, sc };
|
|
5715
5716
|
}
|
|
@@ -5768,15 +5769,15 @@ var ElementRenderer = React5__default.default.memo(
|
|
|
5768
5769
|
const elementLocks = el.locks;
|
|
5769
5770
|
const isTxt = chunkJWS3RQKN_js.isEditableTextElement(el) && !elementLocks?.noTextEdit;
|
|
5770
5771
|
const txtSE = chunkMGLRKGCH_js.hasTextProperties(el) ? el.textStyle : void 0;
|
|
5771
|
-
const ss =
|
|
5772
|
-
const ts =
|
|
5773
|
-
const vs =
|
|
5772
|
+
const ss = chunkSXCO5HHN_js.getShapeVisualStyle(el, hf, fc, sw, sc);
|
|
5773
|
+
const ts = chunkSXCO5HHN_js.getTextStyleForElement(el, chunkSXCO5HHN_js.DEFAULT_TEXT_COLOR);
|
|
5774
|
+
const vs = chunkSXCO5HHN_js.renderVectorShape(el, hf, fc, sw, sc);
|
|
5774
5775
|
const isImg = el.type === "picture" || el.type === "image";
|
|
5775
5776
|
const isModel3D = el.type === "model3d";
|
|
5776
|
-
const isConn =
|
|
5777
|
+
const isConn = chunkSXCO5HHN_js.isConnectorOrLineElement(el);
|
|
5777
5778
|
const shapeStyle3d = chunkMGLRKGCH_js.hasShapeProperties(el) ? el.shapeStyle : void 0;
|
|
5778
5779
|
const extrusionData = React5.useMemo(
|
|
5779
|
-
() =>
|
|
5780
|
+
() => chunkSXCO5HHN_js.build3DExtrusionData(shapeStyle3d?.shape3d, shapeStyle3d?.scene3d, fc, el.width, el.height),
|
|
5780
5781
|
[shapeStyle3d?.shape3d, shapeStyle3d?.scene3d, fc, el.width, el.height]
|
|
5781
5782
|
);
|
|
5782
5783
|
const [isMediaPlaying, setIsMediaPlaying] = React5.useState(false);
|
|
@@ -5830,7 +5831,7 @@ var ElementRenderer = React5__default.default.memo(
|
|
|
5830
5831
|
"aria-roledescription": ariaRoleDescription,
|
|
5831
5832
|
"aria-selected": isSelected ? true : void 0,
|
|
5832
5833
|
tabIndex: isFocusable ? 0 : -1,
|
|
5833
|
-
className:
|
|
5834
|
+
className: chunkSXCO5HHN_js.cn(
|
|
5834
5835
|
"absolute border",
|
|
5835
5836
|
"focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-500",
|
|
5836
5837
|
cur,
|
|
@@ -5912,7 +5913,7 @@ var ElementRenderer = React5__default.default.memo(
|
|
|
5912
5913
|
txtSE,
|
|
5913
5914
|
txtS: ts,
|
|
5914
5915
|
vecShape: vs,
|
|
5915
|
-
imgStyle:
|
|
5916
|
+
imgStyle: chunkSXCO5HHN_js.getImageRenderStyle(el),
|
|
5916
5917
|
imgFilter: chunkJWS3RQKN_js.getImageEffectsFilter(el),
|
|
5917
5918
|
imgOpacity: chunkJWS3RQKN_js.getImageEffectsOpacity(el),
|
|
5918
5919
|
imgAlt: imageAltText,
|
|
@@ -6275,7 +6276,7 @@ function SectionHeader({
|
|
|
6275
6276
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6276
6277
|
lu.LuChevronDown,
|
|
6277
6278
|
{
|
|
6278
|
-
className:
|
|
6279
|
+
className: chunkSXCO5HHN_js.cn(
|
|
6279
6280
|
"h-3 w-3 flex-shrink-0 transition-transform",
|
|
6280
6281
|
isCollapsed ? "-rotate-90" : "rotate-0"
|
|
6281
6282
|
)
|
|
@@ -6376,7 +6377,7 @@ function LazyThumbnailInner({
|
|
|
6376
6377
|
className: "relative w-full overflow-hidden rounded border border-border bg-muted/30 animate-pulse",
|
|
6377
6378
|
style: {
|
|
6378
6379
|
height: previewHeight,
|
|
6379
|
-
minWidth:
|
|
6380
|
+
minWidth: chunkSXCO5HHN_js.SLIDE_NAV_THUMBNAIL_WIDTH
|
|
6380
6381
|
}
|
|
6381
6382
|
}
|
|
6382
6383
|
) });
|
|
@@ -6413,7 +6414,7 @@ function buildFlatPaneItems(sectionGroups, showSectionHeaders, collapsedSections
|
|
|
6413
6414
|
function estimateSlideItemHeight(canvasWidth, canvasHeight) {
|
|
6414
6415
|
const safeW = Math.max(canvasWidth, 1);
|
|
6415
6416
|
const safeH = Math.max(canvasHeight, 1);
|
|
6416
|
-
const scale =
|
|
6417
|
+
const scale = chunkSXCO5HHN_js.SLIDE_NAV_THUMBNAIL_WIDTH / safeW;
|
|
6417
6418
|
const previewHeight = Math.max(56, Math.round(safeH * scale));
|
|
6418
6419
|
return previewHeight + 30;
|
|
6419
6420
|
}
|
|
@@ -6449,14 +6450,17 @@ function SlideItemInner({
|
|
|
6449
6450
|
);
|
|
6450
6451
|
const safeCanvasWidth = Math.max(canvasSize.width, 1);
|
|
6451
6452
|
const safeCanvasHeight = Math.max(canvasSize.height, 1);
|
|
6452
|
-
const scale =
|
|
6453
|
+
const scale = chunkSXCO5HHN_js.SLIDE_NAV_THUMBNAIL_WIDTH / safeCanvasWidth;
|
|
6453
6454
|
const previewHeight = Math.max(56, Math.round(safeCanvasHeight * scale));
|
|
6454
6455
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6455
|
-
"
|
|
6456
|
+
"button",
|
|
6456
6457
|
{
|
|
6458
|
+
type: "button",
|
|
6457
6459
|
ref: slideRef,
|
|
6458
|
-
|
|
6459
|
-
|
|
6460
|
+
"aria-label": `Go to slide ${slideIndex + 1}`,
|
|
6461
|
+
"aria-current": isActive ? "true" : void 0,
|
|
6462
|
+
className: chunkSXCO5HHN_js.cn(
|
|
6463
|
+
"group relative flex w-full items-center gap-1 cursor-pointer border-0 bg-transparent py-0.5 px-1 text-left transition-all",
|
|
6460
6464
|
isActive && "bg-accent/40 before:absolute before:left-0 before:top-1 before:bottom-1 before:w-[3px] before:bg-primary before:rounded-r",
|
|
6461
6465
|
isHidden && "opacity-50"
|
|
6462
6466
|
),
|
|
@@ -6471,7 +6475,7 @@ function SlideItemInner({
|
|
|
6471
6475
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6472
6476
|
"span",
|
|
6473
6477
|
{
|
|
6474
|
-
className:
|
|
6478
|
+
className: chunkSXCO5HHN_js.cn(
|
|
6475
6479
|
"text-[10px] tabular-nums text-right select-none w-full",
|
|
6476
6480
|
isActive ? "text-primary font-medium" : "text-muted-foreground"
|
|
6477
6481
|
),
|
|
@@ -6491,7 +6495,7 @@ function SlideItemInner({
|
|
|
6491
6495
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
6492
6496
|
"div",
|
|
6493
6497
|
{
|
|
6494
|
-
className:
|
|
6498
|
+
className: chunkSXCO5HHN_js.cn(
|
|
6495
6499
|
"relative flex-1 overflow-hidden border transition-colors bg-white",
|
|
6496
6500
|
isActive ? "border-primary/60" : "border-transparent group-hover:border-border/40"
|
|
6497
6501
|
),
|
|
@@ -6686,7 +6690,7 @@ function SlidesPaneSidebar({
|
|
|
6686
6690
|
[sectionGroups, showSectionHeaders, collapsedSections]
|
|
6687
6691
|
);
|
|
6688
6692
|
const shouldVirtualize = slides.length >= VIRTUALIZATION_THRESHOLD;
|
|
6689
|
-
const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } =
|
|
6693
|
+
const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunkSXCO5HHN_js.useVirtualizedSlides({
|
|
6690
6694
|
totalItems: shouldVirtualize ? flatItems.length : 0,
|
|
6691
6695
|
itemHeight: estimatedItemHeight
|
|
6692
6696
|
});
|
|
@@ -6912,7 +6916,7 @@ function HandoutMasterPanel({
|
|
|
6912
6916
|
"button",
|
|
6913
6917
|
{
|
|
6914
6918
|
type: "button",
|
|
6915
|
-
className:
|
|
6919
|
+
className: chunkSXCO5HHN_js.cn(
|
|
6916
6920
|
"px-2 py-1.5 rounded text-[11px] font-medium transition-colors",
|
|
6917
6921
|
slidesPerPage === count ? "bg-primary text-white" : "bg-accent/50 text-muted-foreground hover:bg-accent/70 hover:text-foreground"
|
|
6918
6922
|
),
|
|
@@ -7033,7 +7037,7 @@ function SlideMastersList({
|
|
|
7033
7037
|
"div",
|
|
7034
7038
|
{
|
|
7035
7039
|
ref: isMasterActive ? activeRef : void 0,
|
|
7036
|
-
className:
|
|
7040
|
+
className: chunkSXCO5HHN_js.cn(
|
|
7037
7041
|
"group relative cursor-pointer rounded-lg border-2 p-1 transition-all",
|
|
7038
7042
|
isMasterActive ? "border-amber-500 bg-amber-500/10" : "border-border bg-background/40 hover:border-border"
|
|
7039
7043
|
),
|
|
@@ -7050,7 +7054,7 @@ function SlideMastersList({
|
|
|
7050
7054
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 px-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7051
7055
|
"span",
|
|
7052
7056
|
{
|
|
7053
|
-
className:
|
|
7057
|
+
className: chunkSXCO5HHN_js.cn(
|
|
7054
7058
|
"text-[10px] font-medium",
|
|
7055
7059
|
isMasterActive ? "text-amber-400" : "text-muted-foreground"
|
|
7056
7060
|
),
|
|
@@ -7066,7 +7070,7 @@ function SlideMastersList({
|
|
|
7066
7070
|
"div",
|
|
7067
7071
|
{
|
|
7068
7072
|
ref: isLayoutActive ? activeRef : void 0,
|
|
7069
|
-
className:
|
|
7073
|
+
className: chunkSXCO5HHN_js.cn(
|
|
7070
7074
|
"group relative cursor-pointer rounded-md border-2 p-0.5 transition-all",
|
|
7071
7075
|
isLayoutActive ? "border-primary bg-primary/10" : "border-border bg-background/40 hover:border-border"
|
|
7072
7076
|
),
|
|
@@ -7083,7 +7087,7 @@ function SlideMastersList({
|
|
|
7083
7087
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5 px-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7084
7088
|
"span",
|
|
7085
7089
|
{
|
|
7086
|
-
className:
|
|
7090
|
+
className: chunkSXCO5HHN_js.cn(
|
|
7087
7091
|
"text-[9px]",
|
|
7088
7092
|
isLayoutActive ? "text-primary" : "text-muted-foreground"
|
|
7089
7093
|
),
|
|
@@ -7152,7 +7156,7 @@ function MasterViewSidebar({
|
|
|
7152
7156
|
"button",
|
|
7153
7157
|
{
|
|
7154
7158
|
type: "button",
|
|
7155
|
-
className:
|
|
7159
|
+
className: chunkSXCO5HHN_js.cn(
|
|
7156
7160
|
"flex-1 px-1 py-1.5 text-[10px] font-medium transition-colors border-b-2",
|
|
7157
7161
|
masterViewTab === tab.key ? "border-amber-500 text-amber-400" : "border-transparent text-muted-foreground hover:text-foreground"
|
|
7158
7162
|
),
|
|
@@ -7567,7 +7571,7 @@ function SectionBlock({
|
|
|
7567
7571
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7568
7572
|
lu.LuChevronDown,
|
|
7569
7573
|
{
|
|
7570
|
-
className:
|
|
7574
|
+
className: chunkSXCO5HHN_js.cn("h-3 w-3 transition-transform", collapsed ? "-rotate-90" : "rotate-0")
|
|
7571
7575
|
}
|
|
7572
7576
|
),
|
|
7573
7577
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-left", children: section.label }),
|
|
@@ -7614,7 +7618,7 @@ function SlideCardImpl({
|
|
|
7614
7618
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7615
7619
|
"div",
|
|
7616
7620
|
{
|
|
7617
|
-
className:
|
|
7621
|
+
className: chunkSXCO5HHN_js.cn(
|
|
7618
7622
|
"group relative cursor-pointer rounded-lg border-2 p-1 transition-all",
|
|
7619
7623
|
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",
|
|
7620
7624
|
slide.hidden && "opacity-40"
|
|
@@ -7633,7 +7637,7 @@ function SlideCardImpl({
|
|
|
7633
7637
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7634
7638
|
"span",
|
|
7635
7639
|
{
|
|
7636
|
-
className:
|
|
7640
|
+
className: chunkSXCO5HHN_js.cn(
|
|
7637
7641
|
"text-[11px] font-medium",
|
|
7638
7642
|
isSelected ? "text-primary" : isActive ? "text-primary/70" : "text-muted-foreground"
|
|
7639
7643
|
),
|
|
@@ -9368,7 +9372,7 @@ var SlideNotesPanel = ({
|
|
|
9368
9372
|
});
|
|
9369
9373
|
const hasNotes = draft.trim().length > 0;
|
|
9370
9374
|
const slideLabel = activeSlide ? t("pptx.notes.slideN", { n: activeSlide.slideNumber }) : t("pptx.notes.noSlide");
|
|
9371
|
-
const { dragY, handlers: dragHandlers } =
|
|
9375
|
+
const { dragY, handlers: dragHandlers } = chunkSXCO5HHN_js.useSheetDismissDrag(onToggle);
|
|
9372
9376
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
9373
9377
|
isExpanded && /* @__PURE__ */ jsxRuntime.jsx(
|
|
9374
9378
|
"button",
|
|
@@ -9382,7 +9386,7 @@ var SlideNotesPanel = ({
|
|
|
9382
9386
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
9383
9387
|
"div",
|
|
9384
9388
|
{
|
|
9385
|
-
className:
|
|
9389
|
+
className: chunkSXCO5HHN_js.cn(
|
|
9386
9390
|
"flex flex-col border-t border-border/60 bg-background select-none",
|
|
9387
9391
|
// On mobile, hide the entire notes strip when collapsed: the
|
|
9388
9392
|
// MobileBottomBar's Notes button is the entry point instead.
|
|
@@ -9733,7 +9737,7 @@ function SlideDiffRow({
|
|
|
9733
9737
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9734
9738
|
"div",
|
|
9735
9739
|
{
|
|
9736
|
-
className:
|
|
9740
|
+
className: chunkSXCO5HHN_js.cn(
|
|
9737
9741
|
"rounded-lg border transition-colors",
|
|
9738
9742
|
isResolved ? "border-border/60 bg-card/40 opacity-60" : "border-border bg-background/70"
|
|
9739
9743
|
),
|
|
@@ -9747,7 +9751,7 @@ function SlideDiffRow({
|
|
|
9747
9751
|
children: [
|
|
9748
9752
|
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" }),
|
|
9749
9753
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-foreground", children: t("pptx.compare.slideNumber", { number: slideNumber }) }),
|
|
9750
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
9754
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkSXCO5HHN_js.cn("rounded-full px-2 py-0.5 text-[10px] font-medium", statusColor), children: statusLabel }),
|
|
9751
9755
|
diff.changes.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-muted-foreground", children: [
|
|
9752
9756
|
diff.changes.length,
|
|
9753
9757
|
" ",
|
|
@@ -9757,7 +9761,7 @@ function SlideDiffRow({
|
|
|
9757
9761
|
isResolved && /* @__PURE__ */ jsxRuntime.jsx(
|
|
9758
9762
|
"span",
|
|
9759
9763
|
{
|
|
9760
|
-
className:
|
|
9764
|
+
className: chunkSXCO5HHN_js.cn(
|
|
9761
9765
|
"text-[10px] font-medium",
|
|
9762
9766
|
accepted ? "text-green-400" : "text-muted-foreground"
|
|
9763
9767
|
),
|
|
@@ -9785,7 +9789,7 @@ function SlideDiffRow({
|
|
|
9785
9789
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9786
9790
|
"div",
|
|
9787
9791
|
{
|
|
9788
|
-
className:
|
|
9792
|
+
className: chunkSXCO5HHN_js.cn(
|
|
9789
9793
|
"rounded border overflow-hidden",
|
|
9790
9794
|
diff.status === "added" ? "border-green-700/60" : diff.status === "changed" ? "border-amber-700/60" : "border-border"
|
|
9791
9795
|
),
|
|
@@ -10460,7 +10464,7 @@ function DocumentPropertiesDialog({
|
|
|
10460
10464
|
const handleClose = React5.useCallback(() => {
|
|
10461
10465
|
onClose();
|
|
10462
10466
|
}, [onClose]);
|
|
10463
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
10467
|
+
const { panelStyle, handlers: dragHandlers } = chunkSXCO5HHN_js.useModalDismissDrag(handleClose);
|
|
10464
10468
|
if (!isOpen) {
|
|
10465
10469
|
return null;
|
|
10466
10470
|
}
|
|
@@ -11069,31 +11073,31 @@ function ScaledSlidePreviewImpl({
|
|
|
11069
11073
|
const elementHeight = Math.max(element.height, 1);
|
|
11070
11074
|
const elShapeStyle = chunkMGLRKGCH_js.hasShapeProperties(element) ? element.shapeStyle : void 0;
|
|
11071
11075
|
const hasFill = elShapeStyle?.fillColor !== void 0 && elShapeStyle?.fillColor !== "transparent" || Boolean(chunkJWS3RQKN_js.buildCssGradientFromShapeStyle(elShapeStyle) || elShapeStyle?.fillGradient) || elShapeStyle?.fillMode === "pattern" && Boolean(elShapeStyle.fillPatternPreset);
|
|
11072
|
-
const fillColor = chunkJWS3RQKN_js.normalizeHexColor(elShapeStyle?.fillColor,
|
|
11076
|
+
const fillColor = chunkJWS3RQKN_js.normalizeHexColor(elShapeStyle?.fillColor, chunkSXCO5HHN_js.DEFAULT_FILL_COLOR);
|
|
11073
11077
|
const strokeWidth = Math.max(0, elShapeStyle?.strokeWidth || 0);
|
|
11074
|
-
const strokeColor = chunkJWS3RQKN_js.normalizeHexColor(elShapeStyle?.strokeColor,
|
|
11075
|
-
const shapeVisualStyle =
|
|
11078
|
+
const strokeColor = chunkJWS3RQKN_js.normalizeHexColor(elShapeStyle?.strokeColor, chunkSXCO5HHN_js.DEFAULT_STROKE_COLOR);
|
|
11079
|
+
const shapeVisualStyle = chunkSXCO5HHN_js.getShapeVisualStyle(
|
|
11076
11080
|
element,
|
|
11077
11081
|
hasFill,
|
|
11078
11082
|
fillColor,
|
|
11079
11083
|
strokeWidth,
|
|
11080
11084
|
strokeColor
|
|
11081
11085
|
);
|
|
11082
|
-
const vectorShape =
|
|
11086
|
+
const vectorShape = chunkSXCO5HHN_js.renderVectorShape(
|
|
11083
11087
|
element,
|
|
11084
11088
|
hasFill,
|
|
11085
11089
|
fillColor,
|
|
11086
11090
|
strokeWidth,
|
|
11087
11091
|
strokeColor
|
|
11088
11092
|
);
|
|
11089
|
-
const fallbackTextColor = element.type === "shape" && hasFill ? "#ffffff" :
|
|
11090
|
-
const textStyle =
|
|
11091
|
-
const imageRenderStyle =
|
|
11093
|
+
const fallbackTextColor = element.type === "shape" && hasFill ? "#ffffff" : chunkSXCO5HHN_js.DEFAULT_TEXT_COLOR;
|
|
11094
|
+
const textStyle = chunkSXCO5HHN_js.getTextStyleForElement(element, fallbackTextColor);
|
|
11095
|
+
const imageRenderStyle = chunkSXCO5HHN_js.getImageRenderStyle(element);
|
|
11092
11096
|
const canRenderText = chunkJWS3RQKN_js.isEditableTextElement(element);
|
|
11093
11097
|
const elText = chunkMGLRKGCH_js.hasTextProperties(element) ? element.text : void 0;
|
|
11094
11098
|
const elTextSegments = chunkMGLRKGCH_js.hasTextProperties(element) ? element.textSegments : void 0;
|
|
11095
11099
|
const hasText = typeof elText === "string" && elText.trim().length > 0 || (elTextSegments?.length ?? 0) > 0;
|
|
11096
|
-
const fallbackLabel =
|
|
11100
|
+
const fallbackLabel = chunkSXCO5HHN_js.shouldRenderFallbackLabel(element, canRenderText) ? chunkJWS3RQKN_js.getElementLabel(element) : "";
|
|
11097
11101
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11098
11102
|
"div",
|
|
11099
11103
|
{
|
|
@@ -11106,11 +11110,11 @@ function ScaledSlidePreviewImpl({
|
|
|
11106
11110
|
transform: chunkJWS3RQKN_js.getElementTransform(element),
|
|
11107
11111
|
transformOrigin: "center"
|
|
11108
11112
|
},
|
|
11109
|
-
children: (element.type === "picture" || element.type === "image") && (element.svgData || element.imageData) ?
|
|
11113
|
+
children: (element.type === "picture" || element.type === "image") && (element.svgData || element.imageData) ? chunkSXCO5HHN_js.isImageTiled(element) ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
11110
11114
|
"div",
|
|
11111
11115
|
{
|
|
11112
11116
|
className: "pointer-events-none w-full h-full",
|
|
11113
|
-
style:
|
|
11117
|
+
style: chunkSXCO5HHN_js.getImageTilingStyle(element)
|
|
11114
11118
|
}
|
|
11115
11119
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
11116
11120
|
"img",
|
|
@@ -11128,12 +11132,12 @@ function ScaledSlidePreviewImpl({
|
|
|
11128
11132
|
{
|
|
11129
11133
|
className: "w-full h-full whitespace-pre-wrap break-words px-1 py-0.5 leading-[1.3]",
|
|
11130
11134
|
style: {
|
|
11131
|
-
...
|
|
11135
|
+
...chunkSXCO5HHN_js.getTextLayoutStyle(element),
|
|
11132
11136
|
...textStyle,
|
|
11133
11137
|
transform: chunkJWS3RQKN_js.getTextCompensationTransform(element),
|
|
11134
11138
|
transformOrigin: "center"
|
|
11135
11139
|
},
|
|
11136
|
-
children:
|
|
11140
|
+
children: chunkSXCO5HHN_js.renderTextSegments(element, fallbackTextColor)
|
|
11137
11141
|
}
|
|
11138
11142
|
),
|
|
11139
11143
|
!hasText && fallbackLabel.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 flex items-center justify-center text-[10px] text-muted-foreground", children: fallbackLabel })
|
|
@@ -11153,7 +11157,7 @@ function PreviewSmartArt({ element }) {
|
|
|
11153
11157
|
if (!data || data.nodes.length === 0) {
|
|
11154
11158
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[10px] text-muted-foreground pointer-events-none", children: "SmartArt" });
|
|
11155
11159
|
}
|
|
11156
|
-
const palette =
|
|
11160
|
+
const palette = chunkSXCO5HHN_js.resolvePalette(element);
|
|
11157
11161
|
const shapes = data.drawingShapes;
|
|
11158
11162
|
if (shapes && shapes.length > 0) {
|
|
11159
11163
|
let minX = Infinity;
|
|
@@ -11183,7 +11187,7 @@ function PreviewSmartArt({ element }) {
|
|
|
11183
11187
|
className: "w-full h-full pointer-events-none",
|
|
11184
11188
|
preserveAspectRatio: "xMidYMid meet",
|
|
11185
11189
|
children: shapes.map((shape, i) => {
|
|
11186
|
-
const fill = shape.fillColor ??
|
|
11190
|
+
const fill = shape.fillColor ?? chunkSXCO5HHN_js.colour(i, palette);
|
|
11187
11191
|
const relX = shape.x - minX;
|
|
11188
11192
|
const relY = shape.y - minY;
|
|
11189
11193
|
const isEllipse = shape.shapeType === "ellipse";
|
|
@@ -11229,7 +11233,7 @@ function PreviewSmartArt({ element }) {
|
|
|
11229
11233
|
}
|
|
11230
11234
|
const nodes = data.nodes;
|
|
11231
11235
|
const count = nodes.length;
|
|
11232
|
-
const category = data.layout ?
|
|
11236
|
+
const category = data.layout ? chunkSXCO5HHN_js.layoutToCategory(data.layout) : data.resolvedLayoutType ?? "list";
|
|
11233
11237
|
const useCircles = category === "cycle" || category === "radial" || category === "venn";
|
|
11234
11238
|
const useChevrons = category === "process" || category === "chevron";
|
|
11235
11239
|
const gap = 2;
|
|
@@ -11241,7 +11245,7 @@ function PreviewSmartArt({ element }) {
|
|
|
11241
11245
|
preserveAspectRatio: "xMidYMid meet",
|
|
11242
11246
|
children: nodes.map((node, i) => {
|
|
11243
11247
|
const w = (100 - gap * (count - 1)) / count;
|
|
11244
|
-
const fill =
|
|
11248
|
+
const fill = chunkSXCO5HHN_js.colour(i, palette);
|
|
11245
11249
|
if (useCircles) {
|
|
11246
11250
|
const r = Math.min(w, 40) / 2;
|
|
11247
11251
|
return /* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx: i * (w + gap) + w / 2, cy: 30, rx: r, ry: r, fill }, node.id);
|
|
@@ -11883,7 +11887,7 @@ function SelectionPane({
|
|
|
11883
11887
|
setDragIndex(null);
|
|
11884
11888
|
setDragOverIndex(null);
|
|
11885
11889
|
},
|
|
11886
|
-
className:
|
|
11890
|
+
className: chunkSXCO5HHN_js.cn(
|
|
11887
11891
|
"flex items-center gap-1.5 px-2 py-1 text-xs cursor-pointer transition-colors",
|
|
11888
11892
|
isSelected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground",
|
|
11889
11893
|
dragOverIndex === realIndex ? "border-t-2 border-primary" : ""
|
|
@@ -12134,7 +12138,7 @@ function AnimationsSection(p) {
|
|
|
12134
12138
|
type: "button",
|
|
12135
12139
|
onClick: handlePreview,
|
|
12136
12140
|
disabled,
|
|
12137
|
-
className:
|
|
12141
|
+
className: chunkSXCO5HHN_js.cn(pill, previewActive ? "bg-primary hover:bg-primary/80 text-white" : ""),
|
|
12138
12142
|
title: t("pptx.animations.previewTooltip"),
|
|
12139
12143
|
children: [
|
|
12140
12144
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuPlay, { className: ic2 }),
|
|
@@ -12200,7 +12204,7 @@ function AnimationsSection(p) {
|
|
|
12200
12204
|
{
|
|
12201
12205
|
type: "button",
|
|
12202
12206
|
onClick: p.onOpenAnimationPanel ?? p.onToggleInspector,
|
|
12203
|
-
className:
|
|
12207
|
+
className: chunkSXCO5HHN_js.cn(
|
|
12204
12208
|
pill,
|
|
12205
12209
|
p.isInspectorPaneOpen ? "bg-primary hover:bg-primary/80 text-white" : ""
|
|
12206
12210
|
),
|
|
@@ -12264,7 +12268,7 @@ function ArrangeSection(p) {
|
|
|
12264
12268
|
disabled: !p.canEdit || p.canActivateFormatPainter === false && !p.formatPainterActive,
|
|
12265
12269
|
"data-testid": "format-painter-toggle",
|
|
12266
12270
|
"data-active": p.formatPainterActive ? "true" : "false",
|
|
12267
|
-
className:
|
|
12271
|
+
className: chunkSXCO5HHN_js.cn(
|
|
12268
12272
|
pill,
|
|
12269
12273
|
p.formatPainterActive ? "bg-amber-600 hover:bg-amber-500 text-amber-50" : ""
|
|
12270
12274
|
),
|
|
@@ -12377,7 +12381,7 @@ function DesignSection(p) {
|
|
|
12377
12381
|
{
|
|
12378
12382
|
onClick: p.onToggleThemeGallery,
|
|
12379
12383
|
disabled: !p.canEdit,
|
|
12380
|
-
className:
|
|
12384
|
+
className: chunkSXCO5HHN_js.cn(
|
|
12381
12385
|
pill,
|
|
12382
12386
|
p.isThemeGalleryOpen ? "bg-primary hover:bg-primary/80 text-white" : ""
|
|
12383
12387
|
),
|
|
@@ -12393,7 +12397,7 @@ function DesignSection(p) {
|
|
|
12393
12397
|
{
|
|
12394
12398
|
onClick: p.onToggleThemeEditor,
|
|
12395
12399
|
disabled: !p.canEdit,
|
|
12396
|
-
className:
|
|
12400
|
+
className: chunkSXCO5HHN_js.cn(pill, p.isThemeEditorOpen ? "bg-primary hover:bg-primary/80 text-white" : ""),
|
|
12397
12401
|
title: t("pptx.ribbon.editThemeTitle"),
|
|
12398
12402
|
children: [
|
|
12399
12403
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuPencil, { className: ics }),
|
|
@@ -12418,7 +12422,7 @@ function DesignSection(p) {
|
|
|
12418
12422
|
"button",
|
|
12419
12423
|
{
|
|
12420
12424
|
onClick: p.onToggleInspector,
|
|
12421
|
-
className:
|
|
12425
|
+
className: chunkSXCO5HHN_js.cn(
|
|
12422
12426
|
pill,
|
|
12423
12427
|
p.isInspectorPaneOpen ? "bg-primary hover:bg-primary/80 text-white" : ""
|
|
12424
12428
|
),
|
|
@@ -12460,7 +12464,7 @@ function TransitionsSection(p) {
|
|
|
12460
12464
|
{
|
|
12461
12465
|
type: "button",
|
|
12462
12466
|
onClick: () => setSelected(preset.value),
|
|
12463
|
-
className:
|
|
12467
|
+
className: chunkSXCO5HHN_js.cn(
|
|
12464
12468
|
"flex-shrink-0 px-2 py-1 max-md:min-h-[44px] rounded border text-[11px] leading-tight transition-colors",
|
|
12465
12469
|
selected === preset.value ? "border-primary bg-primary/10 text-primary font-medium" : "border-border bg-muted hover:bg-accent text-foreground"
|
|
12466
12470
|
),
|
|
@@ -12545,7 +12549,7 @@ function TransitionsSection(p) {
|
|
|
12545
12549
|
{
|
|
12546
12550
|
type: "button",
|
|
12547
12551
|
onClick: p.onToggleInspector,
|
|
12548
|
-
className:
|
|
12552
|
+
className: chunkSXCO5HHN_js.cn(
|
|
12549
12553
|
pill,
|
|
12550
12554
|
p.isInspectorPaneOpen ? "bg-primary hover:bg-primary/80 text-white" : ""
|
|
12551
12555
|
),
|
|
@@ -12565,7 +12569,7 @@ function ReviewSection(p) {
|
|
|
12565
12569
|
"button",
|
|
12566
12570
|
{
|
|
12567
12571
|
onClick: p.onToggleComments,
|
|
12568
|
-
className:
|
|
12572
|
+
className: chunkSXCO5HHN_js.cn(
|
|
12569
12573
|
pill,
|
|
12570
12574
|
p.isCommentsPanelOpen ? "bg-primary hover:bg-primary/80 text-white" : ""
|
|
12571
12575
|
),
|
|
@@ -12581,7 +12585,7 @@ function ReviewSection(p) {
|
|
|
12581
12585
|
"button",
|
|
12582
12586
|
{
|
|
12583
12587
|
onClick: () => p.onSetSpellCheckEnabled(!p.spellCheckEnabled),
|
|
12584
|
-
className:
|
|
12588
|
+
className: chunkSXCO5HHN_js.cn(pill, p.spellCheckEnabled ? "bg-primary hover:bg-primary/80 text-white" : ""),
|
|
12585
12589
|
title: t("pptx.review.toggleSpellCheck"),
|
|
12586
12590
|
children: [
|
|
12587
12591
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuSpellCheck, { className: ic2 }),
|
|
@@ -12629,7 +12633,7 @@ function DrawSection(p) {
|
|
|
12629
12633
|
{
|
|
12630
12634
|
type: "button",
|
|
12631
12635
|
onClick: () => p.onSetActiveTool(tool.id),
|
|
12632
|
-
className:
|
|
12636
|
+
className: chunkSXCO5HHN_js.cn(
|
|
12633
12637
|
i < a.length - 1 ? gB : gL,
|
|
12634
12638
|
p.activeTool === tool.id ? tool.ac ?? "bg-accent text-foreground" : ""
|
|
12635
12639
|
),
|
|
@@ -12856,7 +12860,7 @@ function SlidesGroup(p) {
|
|
|
12856
12860
|
type: "button",
|
|
12857
12861
|
onClick: handleNewSlide,
|
|
12858
12862
|
disabled: !p.canEdit || p.layoutOptions.length === 0,
|
|
12859
|
-
className:
|
|
12863
|
+
className: chunkSXCO5HHN_js.cn(
|
|
12860
12864
|
pill,
|
|
12861
12865
|
"whitespace-nowrap",
|
|
12862
12866
|
p.layoutOptions.length > 0 ? "rounded-r-none" : ""
|
|
@@ -13046,7 +13050,7 @@ function HomeSection(p) {
|
|
|
13046
13050
|
setTimeout(() => setCutFeedback(false), 600);
|
|
13047
13051
|
},
|
|
13048
13052
|
disabled: !p.canEdit,
|
|
13049
|
-
className:
|
|
13053
|
+
className: chunkSXCO5HHN_js.cn(gB, cutFeedback && "bg-green-600/20 text-green-400"),
|
|
13050
13054
|
title: t("pptx.arrange.cut"),
|
|
13051
13055
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuScissors, { className: ic2 })
|
|
13052
13056
|
}
|
|
@@ -13060,7 +13064,7 @@ function HomeSection(p) {
|
|
|
13060
13064
|
setCopiedFeedback(true);
|
|
13061
13065
|
setTimeout(() => setCopiedFeedback(false), 600);
|
|
13062
13066
|
},
|
|
13063
|
-
className:
|
|
13067
|
+
className: chunkSXCO5HHN_js.cn(gB, copiedFeedback && "bg-green-600/20 text-green-400"),
|
|
13064
13068
|
title: t("pptx.arrange.copy"),
|
|
13065
13069
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuCopy, { className: ic2 })
|
|
13066
13070
|
}
|
|
@@ -13073,7 +13077,7 @@ function HomeSection(p) {
|
|
|
13073
13077
|
disabled: !p.canEdit || p.canActivateFormatPainter === false && !p.formatPainterActive,
|
|
13074
13078
|
"data-testid": "format-painter-toggle",
|
|
13075
13079
|
"data-active": p.formatPainterActive ? "true" : "false",
|
|
13076
|
-
className:
|
|
13080
|
+
className: chunkSXCO5HHN_js.cn(
|
|
13077
13081
|
gL,
|
|
13078
13082
|
p.formatPainterActive ? "bg-amber-600 hover:bg-amber-500 text-amber-50" : ""
|
|
13079
13083
|
),
|
|
@@ -13248,7 +13252,7 @@ function InsertSection(p) {
|
|
|
13248
13252
|
onChange: (e) => p.onSetNewShapeType(e.target.value),
|
|
13249
13253
|
className: "bg-transparent py-1.5 pl-2 pr-1 outline-none text-xs",
|
|
13250
13254
|
title: t("pptx.insert.shapeType"),
|
|
13251
|
-
children:
|
|
13255
|
+
children: chunkSXCO5HHN_js.SHAPE_PRESETS.map((sp) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: sp.type, className: "bg-background", children: t(sp.i18nKey) }, sp.type))
|
|
13252
13256
|
}
|
|
13253
13257
|
),
|
|
13254
13258
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -13259,7 +13263,7 @@ function InsertSection(p) {
|
|
|
13259
13263
|
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",
|
|
13260
13264
|
title: t("pptx.insert.addShape"),
|
|
13261
13265
|
children: [
|
|
13262
|
-
|
|
13266
|
+
chunkSXCO5HHN_js.SHAPE_PRESETS.find((sp) => sp.type === p.newShapeType)?.icon || /* @__PURE__ */ jsxRuntime.jsx(lu.LuSquare, { className: ic2 }),
|
|
13263
13267
|
t("pptx.insert.shape")
|
|
13264
13268
|
]
|
|
13265
13269
|
}
|
|
@@ -13661,7 +13665,7 @@ function SlideShowSection(p) {
|
|
|
13661
13665
|
"button",
|
|
13662
13666
|
{
|
|
13663
13667
|
onClick: p.onToggleSubtitles,
|
|
13664
|
-
className:
|
|
13668
|
+
className: chunkSXCO5HHN_js.cn(pill, p.showSubtitles ? "bg-primary hover:bg-primary/80 text-white" : ""),
|
|
13665
13669
|
title: t("pptx.slideShow.subtitlesTooltip"),
|
|
13666
13670
|
children: [
|
|
13667
13671
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuCaptions, { className: ic2 }),
|
|
@@ -14499,7 +14503,7 @@ function ViewSection(p) {
|
|
|
14499
14503
|
{
|
|
14500
14504
|
onClick: () => p.onSetEditTemplateMode(!p.editTemplateMode),
|
|
14501
14505
|
disabled: !p.canEdit,
|
|
14502
|
-
className:
|
|
14506
|
+
className: chunkSXCO5HHN_js.cn(
|
|
14503
14507
|
pill,
|
|
14504
14508
|
p.editTemplateMode ? "bg-amber-600 hover:bg-amber-500 text-amber-50" : ""
|
|
14505
14509
|
),
|
|
@@ -14512,7 +14516,7 @@ function ViewSection(p) {
|
|
|
14512
14516
|
{
|
|
14513
14517
|
type: "button",
|
|
14514
14518
|
onClick: p.onToggleSelectionPane,
|
|
14515
|
-
className:
|
|
14519
|
+
className: chunkSXCO5HHN_js.cn(
|
|
14516
14520
|
pill,
|
|
14517
14521
|
p.isSelectionPaneOpen ? "bg-primary hover:bg-primary/80 text-white" : ""
|
|
14518
14522
|
),
|
|
@@ -14529,7 +14533,7 @@ function ViewSection(p) {
|
|
|
14529
14533
|
type: "button",
|
|
14530
14534
|
onClick: p.onToggleEyedropper,
|
|
14531
14535
|
disabled: !p.canEdit,
|
|
14532
|
-
className:
|
|
14536
|
+
className: chunkSXCO5HHN_js.cn(
|
|
14533
14537
|
pill,
|
|
14534
14538
|
p.eyedropperActive ? "bg-purple-600 hover:bg-purple-500 text-purple-50" : ""
|
|
14535
14539
|
),
|
|
@@ -14544,7 +14548,7 @@ function ViewSection(p) {
|
|
|
14544
14548
|
"button",
|
|
14545
14549
|
{
|
|
14546
14550
|
onClick: () => p.onSetShowGrid(!p.showGrid),
|
|
14547
|
-
className:
|
|
14551
|
+
className: chunkSXCO5HHN_js.cn(pill, p.showGrid ? "bg-primary text-white" : ""),
|
|
14548
14552
|
title: t("pptx.grid.toggleGrid"),
|
|
14549
14553
|
children: t("pptx.grid.grid")
|
|
14550
14554
|
}
|
|
@@ -14553,7 +14557,7 @@ function ViewSection(p) {
|
|
|
14553
14557
|
"button",
|
|
14554
14558
|
{
|
|
14555
14559
|
onClick: () => p.onSetShowRulers(!p.showRulers),
|
|
14556
|
-
className:
|
|
14560
|
+
className: chunkSXCO5HHN_js.cn(pill, p.showRulers ? "bg-primary text-white" : ""),
|
|
14557
14561
|
title: t("pptx.ruler.toggleRulers"),
|
|
14558
14562
|
children: t("pptx.ruler.rulers")
|
|
14559
14563
|
}
|
|
@@ -14562,7 +14566,7 @@ function ViewSection(p) {
|
|
|
14562
14566
|
"button",
|
|
14563
14567
|
{
|
|
14564
14568
|
onClick: () => p.onSetSnapToGrid(!p.snapToGrid),
|
|
14565
|
-
className:
|
|
14569
|
+
className: chunkSXCO5HHN_js.cn(pill, p.snapToGrid ? "bg-primary text-white" : ""),
|
|
14566
14570
|
title: t("pptx.grid.snapToGrid"),
|
|
14567
14571
|
children: t("pptx.grid.snapToGrid")
|
|
14568
14572
|
}
|
|
@@ -14571,7 +14575,7 @@ function ViewSection(p) {
|
|
|
14571
14575
|
"button",
|
|
14572
14576
|
{
|
|
14573
14577
|
onClick: () => p.onSetSnapToShape(!p.snapToShape),
|
|
14574
|
-
className:
|
|
14578
|
+
className: chunkSXCO5HHN_js.cn(pill, p.snapToShape ? "bg-primary text-white" : ""),
|
|
14575
14579
|
title: t("pptx.grid.snapToShape"),
|
|
14576
14580
|
children: t("pptx.grid.snapToShape")
|
|
14577
14581
|
}
|
|
@@ -14598,7 +14602,7 @@ function ViewSection(p) {
|
|
|
14598
14602
|
"button",
|
|
14599
14603
|
{
|
|
14600
14604
|
onClick: () => p.onSetSpellCheckEnabled(!p.spellCheckEnabled),
|
|
14601
|
-
className:
|
|
14605
|
+
className: chunkSXCO5HHN_js.cn(pill, p.spellCheckEnabled ? "bg-primary text-white" : ""),
|
|
14602
14606
|
title: t("pptx.view.toggleSpellCheck"),
|
|
14603
14607
|
children: t("pptx.view.spell")
|
|
14604
14608
|
}
|
|
@@ -14617,7 +14621,7 @@ function MobileSheet({
|
|
|
14617
14621
|
headerRight
|
|
14618
14622
|
}) {
|
|
14619
14623
|
const sheetRef = React5.useRef(null);
|
|
14620
|
-
const { dragY, dragging, handlers } =
|
|
14624
|
+
const { dragY, dragging, handlers } = chunkSXCO5HHN_js.useSheetDismissDrag(onClose);
|
|
14621
14625
|
React5.useEffect(() => {
|
|
14622
14626
|
if (!open) {
|
|
14623
14627
|
return;
|
|
@@ -14648,7 +14652,7 @@ function MobileSheet({
|
|
|
14648
14652
|
"div",
|
|
14649
14653
|
{
|
|
14650
14654
|
ref: sheetRef,
|
|
14651
|
-
className:
|
|
14655
|
+
className: chunkSXCO5HHN_js.cn(
|
|
14652
14656
|
"relative bg-background border-t border-border rounded-t-2xl shadow-2xl flex flex-col overflow-hidden",
|
|
14653
14657
|
"animate-in slide-in-from-bottom duration-200",
|
|
14654
14658
|
className
|
|
@@ -14706,7 +14710,7 @@ function MobileMenuSheet(props) {
|
|
|
14706
14710
|
{
|
|
14707
14711
|
type: "button",
|
|
14708
14712
|
onClick: () => setActive(active === key ? null : key),
|
|
14709
|
-
className:
|
|
14713
|
+
className: chunkSXCO5HHN_js.cn(
|
|
14710
14714
|
"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]",
|
|
14711
14715
|
active === key ? "bg-primary text-white border-primary" : "border-border text-muted-foreground hover:text-foreground hover:bg-accent/40"
|
|
14712
14716
|
),
|
|
@@ -14997,7 +15001,7 @@ function MobileToolbar(props) {
|
|
|
14997
15001
|
{
|
|
14998
15002
|
type: "button",
|
|
14999
15003
|
onClick: () => onSetMode("present"),
|
|
15000
|
-
className:
|
|
15004
|
+
className: chunkSXCO5HHN_js.cn(btn, "text-primary"),
|
|
15001
15005
|
title: t("pptx.toolbar.present"),
|
|
15002
15006
|
"aria-label": t("pptx.toolbar.present"),
|
|
15003
15007
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPresentation, { className: "w-5 h-5" })
|
|
@@ -15008,7 +15012,7 @@ function MobileToolbar(props) {
|
|
|
15008
15012
|
{
|
|
15009
15013
|
type: "button",
|
|
15010
15014
|
onClick: props.onOpenShareDialog ?? props.onPackageForSharing,
|
|
15011
|
-
className:
|
|
15015
|
+
className: chunkSXCO5HHN_js.cn(btn, "bg-primary text-white hover:bg-primary/90 px-3"),
|
|
15012
15016
|
title: t("pptx.toolbar.share"),
|
|
15013
15017
|
"aria-label": t("pptx.toolbar.share"),
|
|
15014
15018
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuShare2, { className: "w-4 h-4" })
|
|
@@ -15033,7 +15037,7 @@ var FILL_COLORS = [
|
|
|
15033
15037
|
"#008888",
|
|
15034
15038
|
"#888888"
|
|
15035
15039
|
];
|
|
15036
|
-
var TOP_SHAPES =
|
|
15040
|
+
var TOP_SHAPES = chunkSXCO5HHN_js.SHAPE_PRESETS.slice(0, 12);
|
|
15037
15041
|
function DrawingGroup(p) {
|
|
15038
15042
|
const { t } = reactI18next.useTranslation();
|
|
15039
15043
|
const [shapesOpen, setShapesOpen] = React5.useState(false);
|
|
@@ -15114,7 +15118,7 @@ function DrawingGroup(p) {
|
|
|
15114
15118
|
"button",
|
|
15115
15119
|
{
|
|
15116
15120
|
type: "button",
|
|
15117
|
-
className:
|
|
15121
|
+
className: chunkSXCO5HHN_js.cn(
|
|
15118
15122
|
"flex items-center gap-2 w-full px-3 py-1.5 text-xs text-foreground hover:bg-muted transition-colors",
|
|
15119
15123
|
p.newShapeType === s.type && "bg-accent"
|
|
15120
15124
|
),
|
|
@@ -15258,7 +15262,7 @@ function DrawingGroup(p) {
|
|
|
15258
15262
|
{
|
|
15259
15263
|
type: "button",
|
|
15260
15264
|
disabled: true,
|
|
15261
|
-
className:
|
|
15265
|
+
className: chunkSXCO5HHN_js.cn(pill, "opacity-50 cursor-not-allowed"),
|
|
15262
15266
|
title: t("pptx.drawing.shapeEffectsUnavailable"),
|
|
15263
15267
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSparkles, { className: ic2 })
|
|
15264
15268
|
}
|
|
@@ -15368,7 +15372,7 @@ function TabRowActions(p) {
|
|
|
15368
15372
|
{
|
|
15369
15373
|
type: "button",
|
|
15370
15374
|
onClick: p.onOpenShareDialog ?? p.onPackageForSharing,
|
|
15371
|
-
className:
|
|
15375
|
+
className: chunkSXCO5HHN_js.cn(
|
|
15372
15376
|
"relative inline-flex items-center gap-1 px-2.5 py-1 rounded-sm text-[11px] font-medium transition-colors whitespace-nowrap",
|
|
15373
15377
|
isCollaborating ? "bg-green-600 hover:bg-green-500 text-white" : "bg-primary hover:bg-primary/90 text-white"
|
|
15374
15378
|
),
|
|
@@ -15448,7 +15452,7 @@ function CustomShowsControls({
|
|
|
15448
15452
|
{
|
|
15449
15453
|
type: "button",
|
|
15450
15454
|
onClick: onToggleCurrentSlideInActiveShow,
|
|
15451
|
-
className:
|
|
15455
|
+
className: chunkSXCO5HHN_js.cn(
|
|
15452
15456
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
15453
15457
|
isCurrentSlideInActiveShow ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
15454
15458
|
),
|
|
@@ -15496,7 +15500,7 @@ function PresentDropdown({
|
|
|
15496
15500
|
{
|
|
15497
15501
|
type: "button",
|
|
15498
15502
|
onClick: onPresent,
|
|
15499
|
-
className:
|
|
15503
|
+
className: chunkSXCO5HHN_js.cn(
|
|
15500
15504
|
"px-2 py-1 transition-colors",
|
|
15501
15505
|
isActive ? "bg-primary text-white" : "hover:bg-accent text-foreground"
|
|
15502
15506
|
),
|
|
@@ -15509,7 +15513,7 @@ function PresentDropdown({
|
|
|
15509
15513
|
{
|
|
15510
15514
|
type: "button",
|
|
15511
15515
|
onClick: () => setOpen((prev) => !prev),
|
|
15512
|
-
className:
|
|
15516
|
+
className: chunkSXCO5HHN_js.cn(
|
|
15513
15517
|
"px-1 py-1 transition-colors border-l border-border",
|
|
15514
15518
|
open ? "bg-primary text-white" : "hover:bg-accent text-foreground"
|
|
15515
15519
|
),
|
|
@@ -15697,7 +15701,7 @@ function OverflowMenu(p) {
|
|
|
15697
15701
|
{
|
|
15698
15702
|
type: "button",
|
|
15699
15703
|
onClick: () => p.onSetOverflowMenuOpen(!p.isOverflowMenuOpen),
|
|
15700
|
-
className:
|
|
15704
|
+
className: chunkSXCO5HHN_js.cn(
|
|
15701
15705
|
"p-1.5 rounded transition-colors",
|
|
15702
15706
|
p.isOverflowMenuOpen ? "bg-primary/80 text-white" : "bg-muted hover:bg-accent"
|
|
15703
15707
|
),
|
|
@@ -15752,7 +15756,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
15752
15756
|
{
|
|
15753
15757
|
type: "button",
|
|
15754
15758
|
onClick: onToggleSidebar,
|
|
15755
|
-
className:
|
|
15759
|
+
className: chunkSXCO5HHN_js.cn(qab, !isSidebarCollapsed ? "text-foreground" : "text-muted-foreground"),
|
|
15756
15760
|
title: t("pptx.toolbar.toggleSlidesPanel"),
|
|
15757
15761
|
"aria-label": t("pptx.toolbar.toggleSlidesPanel"),
|
|
15758
15762
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelLeft, { className: ic2 })
|
|
@@ -15764,7 +15768,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
15764
15768
|
{
|
|
15765
15769
|
type: "button",
|
|
15766
15770
|
onClick: p.onToggleComments,
|
|
15767
|
-
className:
|
|
15771
|
+
className: chunkSXCO5HHN_js.cn(
|
|
15768
15772
|
qab,
|
|
15769
15773
|
"relative max-md:hidden",
|
|
15770
15774
|
p.isCommentsPanelOpen ? "text-foreground" : "text-muted-foreground"
|
|
@@ -15831,7 +15835,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
15831
15835
|
{
|
|
15832
15836
|
type: "button",
|
|
15833
15837
|
onClick: onToggleInspector,
|
|
15834
|
-
className:
|
|
15838
|
+
className: chunkSXCO5HHN_js.cn(qab, isInspectorPaneOpen ? "text-foreground" : "text-muted-foreground"),
|
|
15835
15839
|
title: t("pptx.toolbar.toggleInspector"),
|
|
15836
15840
|
"aria-label": t("pptx.toolbar.toggleInspector"),
|
|
15837
15841
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelRight, { className: ic2 })
|
|
@@ -15842,7 +15846,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
15842
15846
|
{
|
|
15843
15847
|
type: "button",
|
|
15844
15848
|
onClick: p.onOpenSettings ?? p.onToggleShortcuts,
|
|
15845
|
-
className:
|
|
15849
|
+
className: chunkSXCO5HHN_js.cn(qab, "text-muted-foreground"),
|
|
15846
15850
|
title: t("pptx.toolbar.settingsShortcuts"),
|
|
15847
15851
|
"aria-label": t("pptx.toolbar.settings"),
|
|
15848
15852
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSettings, { className: ics })
|
|
@@ -15881,49 +15885,58 @@ function Toolbar(p) {
|
|
|
15881
15885
|
className: "relative z-20 border-b border-border bg-secondary/50 overflow-visible",
|
|
15882
15886
|
children: [
|
|
15883
15887
|
/* @__PURE__ */ jsxRuntime.jsx(ToolbarPrimaryRow, { ...p }),
|
|
15884
|
-
showRibbon && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
15885
|
-
|
|
15886
|
-
|
|
15887
|
-
|
|
15888
|
-
|
|
15889
|
-
|
|
15890
|
-
|
|
15891
|
-
"
|
|
15892
|
-
|
|
15893
|
-
|
|
15894
|
-
|
|
15895
|
-
|
|
15896
|
-
|
|
15897
|
-
|
|
15898
|
-
|
|
15899
|
-
|
|
15900
|
-
|
|
15901
|
-
|
|
15902
|
-
|
|
15903
|
-
|
|
15904
|
-
|
|
15905
|
-
|
|
15906
|
-
|
|
15907
|
-
|
|
15908
|
-
|
|
15909
|
-
|
|
15910
|
-
|
|
15911
|
-
|
|
15912
|
-
|
|
15913
|
-
"px-2 py-1 rounded text-[11px] transition-colors mr-1",
|
|
15914
|
-
isCompactToolbarOpen ? "bg-primary/80 text-white" : "text-muted-foreground hover:text-foreground"
|
|
15915
|
-
),
|
|
15916
|
-
title: t(
|
|
15917
|
-
isCompactToolbarOpen ? "pptx.ribbon.collapseRibbon" : "pptx.ribbon.expandRibbon"
|
|
15888
|
+
showRibbon && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
15889
|
+
"div",
|
|
15890
|
+
{
|
|
15891
|
+
role: "tablist",
|
|
15892
|
+
className: "flex items-center border-b border-border/60 px-1 max-md:overflow-x-auto max-md:scrollbar-none",
|
|
15893
|
+
children: [
|
|
15894
|
+
chunkSXCO5HHN_js.TOOLBAR_SECTIONS.map((s) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
15895
|
+
"button",
|
|
15896
|
+
{
|
|
15897
|
+
type: "button",
|
|
15898
|
+
role: "tab",
|
|
15899
|
+
"aria-selected": toolbarSection === s.id,
|
|
15900
|
+
onClick: () => onSetToolbarSection(s.id),
|
|
15901
|
+
className: chunkSXCO5HHN_js.cn(
|
|
15902
|
+
"relative px-3.5 py-2 text-[12px] font-medium whitespace-nowrap transition-colors max-md:min-h-[36px] max-md:px-3",
|
|
15903
|
+
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"
|
|
15904
|
+
),
|
|
15905
|
+
children: t(s.labelKey)
|
|
15906
|
+
},
|
|
15907
|
+
s.id
|
|
15908
|
+
)),
|
|
15909
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1" }),
|
|
15910
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
15911
|
+
TabRowActions,
|
|
15912
|
+
{
|
|
15913
|
+
onEnterRehearsalMode: p.canEdit ? p.onEnterRehearsalMode : void 0,
|
|
15914
|
+
onOpenShareDialog: p.onOpenShareDialog,
|
|
15915
|
+
onPackageForSharing: p.onPackageForSharing
|
|
15916
|
+
}
|
|
15918
15917
|
),
|
|
15919
|
-
|
|
15920
|
-
|
|
15921
|
-
|
|
15922
|
-
|
|
15918
|
+
isNarrowViewport && /* @__PURE__ */ jsxRuntime.jsx(
|
|
15919
|
+
"button",
|
|
15920
|
+
{
|
|
15921
|
+
type: "button",
|
|
15922
|
+
onClick: p.onToggleCompactToolbar,
|
|
15923
|
+
className: chunkSXCO5HHN_js.cn(
|
|
15924
|
+
"px-2 py-1 rounded text-[11px] transition-colors mr-1",
|
|
15925
|
+
isCompactToolbarOpen ? "bg-primary/80 text-white" : "text-muted-foreground hover:text-foreground"
|
|
15926
|
+
),
|
|
15927
|
+
title: t(
|
|
15928
|
+
isCompactToolbarOpen ? "pptx.ribbon.collapseRibbon" : "pptx.ribbon.expandRibbon"
|
|
15929
|
+
),
|
|
15930
|
+
children: t(isCompactToolbarOpen ? "pptx.ribbon.collapseRibbon" : "pptx.ribbon.expandRibbon")
|
|
15931
|
+
}
|
|
15932
|
+
)
|
|
15933
|
+
]
|
|
15934
|
+
}
|
|
15935
|
+
),
|
|
15923
15936
|
showRibbon && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
15924
15937
|
"div",
|
|
15925
15938
|
{
|
|
15926
|
-
className:
|
|
15939
|
+
className: chunkSXCO5HHN_js.cn(
|
|
15927
15940
|
"flex items-center gap-1.5 px-2 py-1 max-md:px-1 max-md:py-0.5 overflow-visible flex-nowrap",
|
|
15928
15941
|
isNarrowViewport && !isCompactToolbarOpen && "hidden"
|
|
15929
15942
|
),
|
|
@@ -16161,13 +16174,13 @@ function Toolbar(p) {
|
|
|
16161
16174
|
}
|
|
16162
16175
|
var INPUT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px]";
|
|
16163
16176
|
var SELECT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px]";
|
|
16164
|
-
var ENTRANCE_PRESETS =
|
|
16177
|
+
var ENTRANCE_PRESETS = chunkSXCO5HHN_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
16165
16178
|
(o) => o.value === "fadeIn" || o.value === "flyIn" || o.value === "zoomIn"
|
|
16166
16179
|
);
|
|
16167
|
-
var EXIT_PRESETS =
|
|
16180
|
+
var EXIT_PRESETS = chunkSXCO5HHN_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
16168
16181
|
(o) => o.value === "fadeOut" || o.value === "flyOut" || o.value === "zoomOut"
|
|
16169
16182
|
);
|
|
16170
|
-
var EMPHASIS_PRESETS =
|
|
16183
|
+
var EMPHASIS_PRESETS = chunkSXCO5HHN_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
16171
16184
|
(o) => o.value === "spin" || o.value === "pulse" || o.value === "colorWave" || o.value === "bounce" || o.value === "flash" || o.value === "growShrink" || o.value === "teeter"
|
|
16172
16185
|
);
|
|
16173
16186
|
var TRIGGER_OPTIONS = [
|
|
@@ -16269,7 +16282,7 @@ function AnimationTimelineSection({
|
|
|
16269
16282
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-6 rounded bg-muted/50 border border-border overflow-hidden", children: timelineBarData.map((bar) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
16270
16283
|
"div",
|
|
16271
16284
|
{
|
|
16272
|
-
className:
|
|
16285
|
+
className: chunkSXCO5HHN_js.cn(
|
|
16273
16286
|
"absolute top-0.5 bottom-0.5 rounded-sm transition-colors",
|
|
16274
16287
|
animationTypeColor(bar.anim),
|
|
16275
16288
|
bar.anim.elementId === selectedElementId && "ring-1 ring-primary"
|
|
@@ -16303,7 +16316,7 @@ function AnimationTimelineSection({
|
|
|
16303
16316
|
onDragEnd: handleDragEnd,
|
|
16304
16317
|
onMouseEnter: () => handleAnimationHover(anim),
|
|
16305
16318
|
onMouseLeave: handleAnimationHoverEnd,
|
|
16306
|
-
className:
|
|
16319
|
+
className: chunkSXCO5HHN_js.cn(
|
|
16307
16320
|
"flex items-center gap-1 px-1 py-0.5 rounded text-[10px] cursor-grab transition-colors",
|
|
16308
16321
|
isSelected ? "bg-primary/30 text-primary" : "bg-muted/50 text-muted-foreground",
|
|
16309
16322
|
isDragging && "opacity-40",
|
|
@@ -16467,13 +16480,13 @@ function useAnimationPreview({
|
|
|
16467
16480
|
if (!preset || preset === "none") {
|
|
16468
16481
|
return;
|
|
16469
16482
|
}
|
|
16470
|
-
|
|
16483
|
+
chunkSXCO5HHN_js.startPreviewAnimation(anim.elementId, preset, {
|
|
16471
16484
|
direction: anim.direction,
|
|
16472
16485
|
durationMs: anim.durationMs ?? 500,
|
|
16473
16486
|
timingCurve: anim.timingCurve
|
|
16474
16487
|
});
|
|
16475
16488
|
}, []);
|
|
16476
|
-
const handleAnimationHoverEnd = React5.useCallback(() =>
|
|
16489
|
+
const handleAnimationHoverEnd = React5.useCallback(() => chunkSXCO5HHN_js.stopPreviewAnimation(), []);
|
|
16477
16490
|
const handlePreviewClick = React5.useCallback(() => {
|
|
16478
16491
|
if (!selectedElementAnimation) {
|
|
16479
16492
|
return;
|
|
@@ -16482,7 +16495,7 @@ function useAnimationPreview({
|
|
|
16482
16495
|
if (!preset || preset === "none") {
|
|
16483
16496
|
return;
|
|
16484
16497
|
}
|
|
16485
|
-
|
|
16498
|
+
chunkSXCO5HHN_js.startPreviewAnimation(selectedElementId, preset, {
|
|
16486
16499
|
direction: selectedElementAnimation.direction,
|
|
16487
16500
|
durationMs: selectedElementAnimation.durationMs ?? 500,
|
|
16488
16501
|
timingCurve: selectedElementAnimation.timingCurve
|
|
@@ -16814,7 +16827,7 @@ function AnimationPanel({
|
|
|
16814
16827
|
{
|
|
16815
16828
|
type: "button",
|
|
16816
16829
|
disabled: !canEdit,
|
|
16817
|
-
className:
|
|
16830
|
+
className: chunkSXCO5HHN_js.cn(
|
|
16818
16831
|
"flex items-center justify-center w-7 h-7 rounded border transition-colors",
|
|
16819
16832
|
isActive ? "border-primary bg-primary/20 text-primary" : "border-border bg-muted text-muted-foreground hover:bg-accent"
|
|
16820
16833
|
),
|
|
@@ -17056,7 +17069,7 @@ function ActionTriggerSection({
|
|
|
17056
17069
|
"select",
|
|
17057
17070
|
{
|
|
17058
17071
|
disabled: !canEdit,
|
|
17059
|
-
className:
|
|
17072
|
+
className: chunkSXCO5HHN_js.cn(INPUT, "w-full"),
|
|
17060
17073
|
value: activeType,
|
|
17061
17074
|
onChange: (e) => onChangeType(e.target.value),
|
|
17062
17075
|
children: ACTION_TYPE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.label) }, o.value))
|
|
@@ -17067,7 +17080,7 @@ function ActionTriggerSection({
|
|
|
17067
17080
|
{
|
|
17068
17081
|
type: "text",
|
|
17069
17082
|
disabled: !canEdit,
|
|
17070
|
-
className:
|
|
17083
|
+
className: chunkSXCO5HHN_js.cn(INPUT, "w-full"),
|
|
17071
17084
|
placeholder: "https://...",
|
|
17072
17085
|
value: action?.url ?? fallbackUrl ?? "",
|
|
17073
17086
|
onChange: (e) => onChangeUrl(e.target.value)
|
|
@@ -17078,7 +17091,7 @@ function ActionTriggerSection({
|
|
|
17078
17091
|
{
|
|
17079
17092
|
type: "number",
|
|
17080
17093
|
disabled: !canEdit,
|
|
17081
|
-
className:
|
|
17094
|
+
className: chunkSXCO5HHN_js.cn(INPUT, "w-full"),
|
|
17082
17095
|
placeholder: t("pptx.action.slideNumberPlaceholder"),
|
|
17083
17096
|
min: 1,
|
|
17084
17097
|
max: slideCount,
|
|
@@ -18733,7 +18746,7 @@ function ConnectorPanel({
|
|
|
18733
18746
|
"select",
|
|
18734
18747
|
{
|
|
18735
18748
|
disabled: !canEdit,
|
|
18736
|
-
className:
|
|
18749
|
+
className: chunkSXCO5HHN_js.cn(INPUT, "w-full"),
|
|
18737
18750
|
value: selectedElement.shapeStyle?.[key] ?? "none",
|
|
18738
18751
|
onChange: (e) => onUpdateElementStyle({ [key]: e.target.value }),
|
|
18739
18752
|
children: [
|
|
@@ -18785,7 +18798,7 @@ function OlePropertiesPanel({
|
|
|
18785
18798
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
18786
18799
|
"span",
|
|
18787
18800
|
{
|
|
18788
|
-
className:
|
|
18801
|
+
className: chunkSXCO5HHN_js.cn(
|
|
18789
18802
|
"inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium",
|
|
18790
18803
|
ole.isLinked ? "bg-blue-500/20 text-blue-400" : "bg-green-500/20 text-green-400"
|
|
18791
18804
|
),
|
|
@@ -18844,7 +18857,7 @@ function LayerOrderButtons({
|
|
|
18844
18857
|
"button",
|
|
18845
18858
|
{
|
|
18846
18859
|
type: "button",
|
|
18847
|
-
className:
|
|
18860
|
+
className: chunkSXCO5HHN_js.cn("flex-1", BTN),
|
|
18848
18861
|
disabled: !canEdit,
|
|
18849
18862
|
onClick: () => onMoveLayer("forward"),
|
|
18850
18863
|
children: "\u2191 Forward"
|
|
@@ -18854,7 +18867,7 @@ function LayerOrderButtons({
|
|
|
18854
18867
|
"button",
|
|
18855
18868
|
{
|
|
18856
18869
|
type: "button",
|
|
18857
|
-
className:
|
|
18870
|
+
className: chunkSXCO5HHN_js.cn("flex-1", BTN),
|
|
18858
18871
|
disabled: !canEdit,
|
|
18859
18872
|
onClick: () => onMoveLayer("backward"),
|
|
18860
18873
|
children: "\u2193 Backward"
|
|
@@ -18878,7 +18891,7 @@ function ArtisticEffectsGallery({
|
|
|
18878
18891
|
{
|
|
18879
18892
|
type: "button",
|
|
18880
18893
|
disabled: !canEdit,
|
|
18881
|
-
className:
|
|
18894
|
+
className: chunkSXCO5HHN_js.cn(
|
|
18882
18895
|
"flex flex-col items-center gap-0.5 rounded border p-0.5 hover:bg-accent/50",
|
|
18883
18896
|
isActive ? "border-primary bg-primary/10" : "border-border"
|
|
18884
18897
|
),
|
|
@@ -19327,7 +19340,7 @@ function ImagePropertiesPanel({
|
|
|
19327
19340
|
{
|
|
19328
19341
|
rows: 2,
|
|
19329
19342
|
disabled: !canEdit,
|
|
19330
|
-
className:
|
|
19343
|
+
className: chunkSXCO5HHN_js.cn(INPUT, "resize-none text-[11px]"),
|
|
19331
19344
|
value: selectedElement.altText ?? "",
|
|
19332
19345
|
onChange: (e) => onUpdateElement({
|
|
19333
19346
|
altText: e.target.value
|
|
@@ -20286,11 +20299,11 @@ function ShapeTextPanels({
|
|
|
20286
20299
|
{
|
|
20287
20300
|
value: selectedElement.shapeType || "rect",
|
|
20288
20301
|
disabled: !canEdit,
|
|
20289
|
-
className:
|
|
20302
|
+
className: chunkSXCO5HHN_js.cn(INPUT, "w-full"),
|
|
20290
20303
|
onChange: (e) => onUpdateElement({
|
|
20291
20304
|
shapeType: e.target.value
|
|
20292
20305
|
}),
|
|
20293
|
-
children:
|
|
20306
|
+
children: chunkSXCO5HHN_js.SHAPE_PRESETS.filter((p) => p.type !== "connector").map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.type, children: t(p.i18nKey) }, p.type))
|
|
20294
20307
|
}
|
|
20295
20308
|
)
|
|
20296
20309
|
] }),
|
|
@@ -20420,7 +20433,7 @@ function TextFormatToggle({
|
|
|
20420
20433
|
{
|
|
20421
20434
|
type: "button",
|
|
20422
20435
|
disabled,
|
|
20423
|
-
className:
|
|
20436
|
+
className: chunkSXCO5HHN_js.cn(
|
|
20424
20437
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
20425
20438
|
italic && "italic",
|
|
20426
20439
|
underline && "underline",
|
|
@@ -20708,8 +20721,9 @@ function SmartArtLayoutSwitcher({
|
|
|
20708
20721
|
"button",
|
|
20709
20722
|
{
|
|
20710
20723
|
type: "button",
|
|
20724
|
+
"data-testid": `smartart-layout-${type}`,
|
|
20711
20725
|
disabled: !canEdit,
|
|
20712
|
-
className:
|
|
20726
|
+
className: chunkSXCO5HHN_js.cn(
|
|
20713
20727
|
"flex flex-col items-center gap-0.5 rounded border p-1.5 transition-colors",
|
|
20714
20728
|
"text-[9px] leading-tight",
|
|
20715
20729
|
isActive ? "border-primary bg-primary/15 text-primary" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
@@ -20781,7 +20795,7 @@ function SmartArtNodeStyleControls({
|
|
|
20781
20795
|
disabled: !canEdit,
|
|
20782
20796
|
"aria-label": `Bold ${label}`,
|
|
20783
20797
|
"aria-pressed": bold,
|
|
20784
|
-
className:
|
|
20798
|
+
className: chunkSXCO5HHN_js.cn(
|
|
20785
20799
|
EMPHASIS_BTN,
|
|
20786
20800
|
"font-bold",
|
|
20787
20801
|
bold ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground"
|
|
@@ -20797,7 +20811,7 @@ function SmartArtNodeStyleControls({
|
|
|
20797
20811
|
disabled: !canEdit,
|
|
20798
20812
|
"aria-label": `Italic ${label}`,
|
|
20799
20813
|
"aria-pressed": italic,
|
|
20800
|
-
className:
|
|
20814
|
+
className: chunkSXCO5HHN_js.cn(
|
|
20801
20815
|
EMPHASIS_BTN,
|
|
20802
20816
|
"italic",
|
|
20803
20817
|
italic ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground"
|
|
@@ -20836,7 +20850,7 @@ function SmartArtNodeRow({
|
|
|
20836
20850
|
"div",
|
|
20837
20851
|
{
|
|
20838
20852
|
role: "listitem",
|
|
20839
|
-
className:
|
|
20853
|
+
className: chunkSXCO5HHN_js.cn(
|
|
20840
20854
|
"rounded border bg-background/60 p-1.5",
|
|
20841
20855
|
isChild ? "border-border/60 ml-4" : "border-border"
|
|
20842
20856
|
),
|
|
@@ -20848,9 +20862,10 @@ function SmartArtNodeRow({
|
|
|
20848
20862
|
{
|
|
20849
20863
|
ref: inputRef,
|
|
20850
20864
|
type: "text",
|
|
20865
|
+
"data-testid": "smartart-node-text",
|
|
20851
20866
|
disabled: !canEdit,
|
|
20852
20867
|
"aria-label": label,
|
|
20853
|
-
className:
|
|
20868
|
+
className: chunkSXCO5HHN_js.cn(INPUT, "flex-1 text-[11px] py-0.5"),
|
|
20854
20869
|
value: text,
|
|
20855
20870
|
onChange: (e) => onChangeText(nodeId, e.target.value),
|
|
20856
20871
|
onKeyDown: (e) => onKeyDown(e, nodeId),
|
|
@@ -20899,7 +20914,7 @@ function SmartArtNodeRow({
|
|
|
20899
20914
|
{
|
|
20900
20915
|
type: "button",
|
|
20901
20916
|
disabled: !canEdit || removeDisabled,
|
|
20902
|
-
className:
|
|
20917
|
+
className: chunkSXCO5HHN_js.cn(MINI_BTN, "hover:text-red-400"),
|
|
20903
20918
|
onClick: () => onRemove(nodeId),
|
|
20904
20919
|
"aria-label": `Remove ${label}`,
|
|
20905
20920
|
title: removeDisabled ? t("pptx.smartArt.layoutMinimum") : t("pptx.smartArt.remove"),
|
|
@@ -20957,7 +20972,7 @@ function SmartArtPropertiesPanel({
|
|
|
20957
20972
|
const reflowed = box ? chunkJWS3RQKN_js.rebuildDrawingShapesIfCleared(
|
|
20958
20973
|
newData,
|
|
20959
20974
|
newData.layout,
|
|
20960
|
-
|
|
20975
|
+
chunkSXCO5HHN_js.resolveSmartArtDataPalette(newData),
|
|
20961
20976
|
newData.style ?? "flat",
|
|
20962
20977
|
"inspector",
|
|
20963
20978
|
box
|
|
@@ -21064,8 +21079,9 @@ function SmartArtPropertiesPanel({
|
|
|
21064
21079
|
"select",
|
|
21065
21080
|
{
|
|
21066
21081
|
disabled: !canEdit,
|
|
21082
|
+
"data-testid": "smartart-color-scheme",
|
|
21067
21083
|
"aria-label": t("pptx.smartart.colorScheme"),
|
|
21068
|
-
className:
|
|
21084
|
+
className: chunkSXCO5HHN_js.cn(INPUT, "w-full"),
|
|
21069
21085
|
value: smartArtData.colorScheme ?? "colorful1",
|
|
21070
21086
|
onChange: (e) => updateSmartArt({ colorScheme: e.target.value }),
|
|
21071
21087
|
children: COLOR_SCHEMES.map((cs) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: cs, children: cs }, cs))
|
|
@@ -21080,7 +21096,7 @@ function SmartArtPropertiesPanel({
|
|
|
21080
21096
|
type: "button",
|
|
21081
21097
|
disabled: !canEdit,
|
|
21082
21098
|
"aria-pressed": (smartArtData.style ?? "flat") === s,
|
|
21083
|
-
className:
|
|
21099
|
+
className: chunkSXCO5HHN_js.cn(
|
|
21084
21100
|
"flex-1 px-2 py-1 text-[10px] rounded border transition-colors",
|
|
21085
21101
|
(smartArtData.style ?? "flat") === s ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground hover:bg-muted"
|
|
21086
21102
|
),
|
|
@@ -21484,7 +21500,7 @@ function TableCellFormattingPanel({
|
|
|
21484
21500
|
{
|
|
21485
21501
|
type: "button",
|
|
21486
21502
|
disabled: !canEdit,
|
|
21487
|
-
className:
|
|
21503
|
+
className: chunkSXCO5HHN_js.cn(
|
|
21488
21504
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
21489
21505
|
cls,
|
|
21490
21506
|
cs[key] ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
@@ -21503,7 +21519,7 @@ function TableCellFormattingPanel({
|
|
|
21503
21519
|
{
|
|
21504
21520
|
type: "button",
|
|
21505
21521
|
disabled: !canEdit,
|
|
21506
|
-
className:
|
|
21522
|
+
className: chunkSXCO5HHN_js.cn(
|
|
21507
21523
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
21508
21524
|
cs.align === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
21509
21525
|
),
|
|
@@ -21521,7 +21537,7 @@ function TableCellFormattingPanel({
|
|
|
21521
21537
|
{
|
|
21522
21538
|
type: "button",
|
|
21523
21539
|
disabled: !canEdit,
|
|
21524
|
-
className:
|
|
21540
|
+
className: chunkSXCO5HHN_js.cn(
|
|
21525
21541
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
21526
21542
|
cs.vAlign === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
21527
21543
|
),
|
|
@@ -21554,7 +21570,7 @@ function TableCellFormattingPanel({
|
|
|
21554
21570
|
{
|
|
21555
21571
|
type: "number",
|
|
21556
21572
|
disabled: !canEdit,
|
|
21557
|
-
className:
|
|
21573
|
+
className: chunkSXCO5HHN_js.cn(INPUT, "w-14"),
|
|
21558
21574
|
min: 0,
|
|
21559
21575
|
max: 10,
|
|
21560
21576
|
value: cs[widthKey] ?? 1,
|
|
@@ -21570,7 +21586,7 @@ function TableCellFormattingPanel({
|
|
|
21570
21586
|
{
|
|
21571
21587
|
type: "button",
|
|
21572
21588
|
disabled: !canEdit,
|
|
21573
|
-
className:
|
|
21589
|
+
className: chunkSXCO5HHN_js.cn(BTN, "text-center"),
|
|
21574
21590
|
onClick: () => {
|
|
21575
21591
|
const newRows = chunkJWS3RQKN_js.computeMergeCellRight(td, rowIndex, columnIndex);
|
|
21576
21592
|
if (newRows) {
|
|
@@ -21585,7 +21601,7 @@ function TableCellFormattingPanel({
|
|
|
21585
21601
|
{
|
|
21586
21602
|
type: "button",
|
|
21587
21603
|
disabled: !canEdit,
|
|
21588
|
-
className:
|
|
21604
|
+
className: chunkSXCO5HHN_js.cn(BTN, "text-center"),
|
|
21589
21605
|
onClick: () => {
|
|
21590
21606
|
const newRows = chunkJWS3RQKN_js.computeMergeCellDown(td, rowIndex, columnIndex);
|
|
21591
21607
|
if (newRows) {
|
|
@@ -21600,7 +21616,7 @@ function TableCellFormattingPanel({
|
|
|
21600
21616
|
{
|
|
21601
21617
|
type: "button",
|
|
21602
21618
|
disabled: !canEdit,
|
|
21603
|
-
className:
|
|
21619
|
+
className: chunkSXCO5HHN_js.cn(BTN, "text-center"),
|
|
21604
21620
|
onClick: () => {
|
|
21605
21621
|
const newRows = chunkJWS3RQKN_js.computeSplitCell(td, rowIndex, columnIndex);
|
|
21606
21622
|
if (newRows) {
|
|
@@ -22008,7 +22024,7 @@ function InspectorCommentRow({
|
|
|
22008
22024
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22009
22025
|
"div",
|
|
22010
22026
|
{
|
|
22011
|
-
className:
|
|
22027
|
+
className: chunkSXCO5HHN_js.cn(
|
|
22012
22028
|
"rounded border border-border bg-card p-2",
|
|
22013
22029
|
depth > 0 && "ml-3 border-l-2 border-l-primary/40"
|
|
22014
22030
|
),
|
|
@@ -22096,7 +22112,7 @@ function InspectorCommentRow({
|
|
|
22096
22112
|
"button",
|
|
22097
22113
|
{
|
|
22098
22114
|
type: "button",
|
|
22099
|
-
className:
|
|
22115
|
+
className: chunkSXCO5HHN_js.cn(
|
|
22100
22116
|
"inline-flex items-center justify-center p-1.5 border-l border-border transition-colors",
|
|
22101
22117
|
comment.resolved ? "bg-green-900/40 text-green-300 hover:bg-green-900/60" : "hover:bg-accent text-foreground hover:text-foreground"
|
|
22102
22118
|
),
|
|
@@ -22290,7 +22306,7 @@ function InspectorCommentsSection({
|
|
|
22290
22306
|
type: "button",
|
|
22291
22307
|
onClick: onAddComment,
|
|
22292
22308
|
disabled: !commentDraft.trim(),
|
|
22293
|
-
className:
|
|
22309
|
+
className: chunkSXCO5HHN_js.cn(
|
|
22294
22310
|
"w-full inline-flex items-center justify-center gap-1 rounded px-2 py-1 text-[11px] font-medium transition-colors",
|
|
22295
22311
|
commentDraft.trim() ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
|
|
22296
22312
|
),
|
|
@@ -22388,7 +22404,7 @@ function CustomPropertiesBlock({
|
|
|
22388
22404
|
"button",
|
|
22389
22405
|
{
|
|
22390
22406
|
type: "button",
|
|
22391
|
-
className:
|
|
22407
|
+
className: chunkSXCO5HHN_js.cn(BTN, "px-1.5 text-red-400 hover:text-red-300"),
|
|
22392
22408
|
onClick: () => onUpdate(customProperties.filter((_, i) => i !== index)),
|
|
22393
22409
|
children: "\xD7"
|
|
22394
22410
|
}
|
|
@@ -22523,7 +22539,7 @@ function PresentationSettingsCard({
|
|
|
22523
22539
|
"select",
|
|
22524
22540
|
{
|
|
22525
22541
|
disabled: !canEdit,
|
|
22526
|
-
className:
|
|
22542
|
+
className: chunkSXCO5HHN_js.cn(INPUT, "w-28"),
|
|
22527
22543
|
value: presentationProperties.showType ?? "presented",
|
|
22528
22544
|
onChange: (e) => onUpdate({
|
|
22529
22545
|
showType: e.target.value
|
|
@@ -22581,7 +22597,7 @@ function PresentationSettingsCard({
|
|
|
22581
22597
|
min: 1,
|
|
22582
22598
|
max: 16,
|
|
22583
22599
|
disabled: !canEdit,
|
|
22584
|
-
className:
|
|
22600
|
+
className: chunkSXCO5HHN_js.cn(INPUT, "w-20"),
|
|
22585
22601
|
value: presentationProperties.printSlidesPerPage ?? 1,
|
|
22586
22602
|
onChange: (e) => onUpdate({ printSlidesPerPage: Number(e.target.value) })
|
|
22587
22603
|
}
|
|
@@ -22863,7 +22879,7 @@ function TagsSection({
|
|
|
22863
22879
|
"button",
|
|
22864
22880
|
{
|
|
22865
22881
|
type: "button",
|
|
22866
|
-
className:
|
|
22882
|
+
className: chunkSXCO5HHN_js.cn(BTN, "px-1.5 text-red-400 hover:text-red-300"),
|
|
22867
22883
|
title: t("pptx.tags.deleteTag"),
|
|
22868
22884
|
onClick: () => deleteTag(tag.colIdx, tag.tagIdx),
|
|
22869
22885
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuTrash2, { className: "w-3 h-3" })
|
|
@@ -22963,7 +22979,7 @@ function PresentationPropertiesPanel({
|
|
|
22963
22979
|
canEdit
|
|
22964
22980
|
}
|
|
22965
22981
|
),
|
|
22966
|
-
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
22982
|
+
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkSXCO5HHN_js.cn(CARD, "space-y-1"), children: [
|
|
22967
22983
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: "Slide" }),
|
|
22968
22984
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[11px] text-muted-foreground", children: [
|
|
22969
22985
|
activeSlide.elements?.length ?? 0,
|
|
@@ -22984,7 +23000,7 @@ function SlideBackgroundPanel({
|
|
|
22984
23000
|
const { t } = reactI18next.useTranslation();
|
|
22985
23001
|
const bgImageInputRef = React5.useRef(null);
|
|
22986
23002
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
22987
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
23003
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkSXCO5HHN_js.cn(CARD, "space-y-2"), children: [
|
|
22988
23004
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: "Background" }),
|
|
22989
23005
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
22990
23006
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-10 shrink-0", children: "Colour" }),
|
|
@@ -23030,7 +23046,7 @@ function SlideBackgroundPanel({
|
|
|
23030
23046
|
"button",
|
|
23031
23047
|
{
|
|
23032
23048
|
type: "button",
|
|
23033
|
-
className:
|
|
23049
|
+
className: chunkSXCO5HHN_js.cn(BTN, "flex-1 text-center"),
|
|
23034
23050
|
disabled: !canEdit,
|
|
23035
23051
|
onClick: () => bgImageInputRef.current?.click(),
|
|
23036
23052
|
children: activeSlide.backgroundImage ? t("pptx.slideBackground.replaceImage") : t("pptx.slideBackground.chooseImage")
|
|
@@ -23063,7 +23079,7 @@ function SlideBackgroundPanel({
|
|
|
23063
23079
|
"button",
|
|
23064
23080
|
{
|
|
23065
23081
|
type: "button",
|
|
23066
|
-
className:
|
|
23082
|
+
className: chunkSXCO5HHN_js.cn(BTN, "w-full text-center text-red-400 hover:text-red-300"),
|
|
23067
23083
|
disabled: !canEdit,
|
|
23068
23084
|
onClick: () => onUpdateSlide({
|
|
23069
23085
|
backgroundColor: void 0,
|
|
@@ -23094,7 +23110,7 @@ function TemplateBackgroundCard({
|
|
|
23094
23110
|
onGetTemplateBackgroundColor
|
|
23095
23111
|
}) {
|
|
23096
23112
|
const { t } = reactI18next.useTranslation();
|
|
23097
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
23113
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkSXCO5HHN_js.cn(CARD, "space-y-2"), children: [
|
|
23098
23114
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: t("pptx.slideBackground.templateBackgroundsHeading") }),
|
|
23099
23115
|
activeSlide.layoutPath && /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
23100
23116
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -23212,7 +23228,7 @@ function InspectorPane(props) {
|
|
|
23212
23228
|
} = props;
|
|
23213
23229
|
const hasSelection = selectedElement !== null;
|
|
23214
23230
|
const { t } = reactI18next.useTranslation();
|
|
23215
|
-
const { dragY, handlers: dragHandlers } =
|
|
23231
|
+
const { dragY, handlers: dragHandlers } = chunkSXCO5HHN_js.useSheetDismissDrag(onClose);
|
|
23216
23232
|
const [selectedThemePath, setSelectedThemePath] = React5.useState("");
|
|
23217
23233
|
const ANIM_MIN = 80;
|
|
23218
23234
|
const ANIM_MAX = 500;
|
|
@@ -23243,7 +23259,7 @@ function InspectorPane(props) {
|
|
|
23243
23259
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
23244
23260
|
"div",
|
|
23245
23261
|
{
|
|
23246
|
-
className:
|
|
23262
|
+
className: chunkSXCO5HHN_js.cn(
|
|
23247
23263
|
// Shared styles
|
|
23248
23264
|
"bg-background flex flex-col text-xs text-foreground shadow-xl",
|
|
23249
23265
|
// Mobile: absolute bottom sheet overlay sized via dvh so it
|
|
@@ -23277,7 +23293,7 @@ function InspectorPane(props) {
|
|
|
23277
23293
|
{
|
|
23278
23294
|
type: "button",
|
|
23279
23295
|
title: label,
|
|
23280
|
-
className:
|
|
23296
|
+
className: chunkSXCO5HHN_js.cn(
|
|
23281
23297
|
"flex items-center gap-1 px-2 py-1 rounded text-[11px] transition-colors",
|
|
23282
23298
|
activeTab === key ? "bg-primary text-white" : "text-muted-foreground hover:text-foreground hover:bg-accent"
|
|
23283
23299
|
),
|
|
@@ -23302,7 +23318,7 @@ function InspectorPane(props) {
|
|
|
23302
23318
|
] }),
|
|
23303
23319
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 overflow-y-auto p-3 space-y-3", children: [
|
|
23304
23320
|
activeTab === "elements" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
23305
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
23321
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkSXCO5HHN_js.cn(HEADING, "mb-2"), children: t("pptx.inspector.layerOrder") }),
|
|
23306
23322
|
activeSlide ? [...activeSlide.elements || []].reverse().map((el, ri) => {
|
|
23307
23323
|
const idx = (activeSlide.elements || []).length - 1 - ri;
|
|
23308
23324
|
const sel = selectedElement?.id === el.id || selectedElementIds.includes(el.id);
|
|
@@ -23311,7 +23327,7 @@ function InspectorPane(props) {
|
|
|
23311
23327
|
"div",
|
|
23312
23328
|
{
|
|
23313
23329
|
title: `${el.type} \u2014 ${el.id}`,
|
|
23314
|
-
className:
|
|
23330
|
+
className: chunkSXCO5HHN_js.cn(
|
|
23315
23331
|
"flex items-center gap-2 px-2 py-1 rounded cursor-pointer transition-colors",
|
|
23316
23332
|
sel ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground"
|
|
23317
23333
|
),
|
|
@@ -23914,7 +23930,7 @@ function PresentationTouchControls({
|
|
|
23914
23930
|
onEndPresentation
|
|
23915
23931
|
}) {
|
|
23916
23932
|
const { t } = reactI18next.useTranslation();
|
|
23917
|
-
const { isTouchDevice } =
|
|
23933
|
+
const { isTouchDevice } = chunkSXCO5HHN_js.useIsMobile();
|
|
23918
23934
|
if (!isTouchDevice) {
|
|
23919
23935
|
return null;
|
|
23920
23936
|
}
|
|
@@ -24084,31 +24100,31 @@ function SlideLayer({ slide, templateElements, canvasSize }) {
|
|
|
24084
24100
|
const elementHeight = Math.max(element.height, 1);
|
|
24085
24101
|
const elShapeStyle = chunkMGLRKGCH_js.hasShapeProperties(element) ? element.shapeStyle : void 0;
|
|
24086
24102
|
const hasFill = elShapeStyle?.fillColor !== void 0 && elShapeStyle?.fillColor !== "transparent" || Boolean(chunkJWS3RQKN_js.buildCssGradientFromShapeStyle(elShapeStyle) || elShapeStyle?.fillGradient) || elShapeStyle?.fillMode === "pattern" && Boolean(elShapeStyle.fillPatternPreset);
|
|
24087
|
-
const fillColor = chunkJWS3RQKN_js.normalizeHexColor(elShapeStyle?.fillColor,
|
|
24103
|
+
const fillColor = chunkJWS3RQKN_js.normalizeHexColor(elShapeStyle?.fillColor, chunkSXCO5HHN_js.DEFAULT_FILL_COLOR);
|
|
24088
24104
|
const strokeWidth = Math.max(0, elShapeStyle?.strokeWidth || 0);
|
|
24089
|
-
const strokeColor = chunkJWS3RQKN_js.normalizeHexColor(elShapeStyle?.strokeColor,
|
|
24090
|
-
const shapeVisualStyle =
|
|
24105
|
+
const strokeColor = chunkJWS3RQKN_js.normalizeHexColor(elShapeStyle?.strokeColor, chunkSXCO5HHN_js.DEFAULT_STROKE_COLOR);
|
|
24106
|
+
const shapeVisualStyle = chunkSXCO5HHN_js.getShapeVisualStyle(
|
|
24091
24107
|
element,
|
|
24092
24108
|
hasFill,
|
|
24093
24109
|
fillColor,
|
|
24094
24110
|
strokeWidth,
|
|
24095
24111
|
strokeColor
|
|
24096
24112
|
);
|
|
24097
|
-
const vectorShape =
|
|
24113
|
+
const vectorShape = chunkSXCO5HHN_js.renderVectorShape(
|
|
24098
24114
|
element,
|
|
24099
24115
|
hasFill,
|
|
24100
24116
|
fillColor,
|
|
24101
24117
|
strokeWidth,
|
|
24102
24118
|
strokeColor
|
|
24103
24119
|
);
|
|
24104
|
-
const fallbackTextColor = element.type === "shape" && hasFill ? "#ffffff" :
|
|
24105
|
-
const textStyle =
|
|
24106
|
-
const imageRenderStyle =
|
|
24120
|
+
const fallbackTextColor = element.type === "shape" && hasFill ? "#ffffff" : chunkSXCO5HHN_js.DEFAULT_TEXT_COLOR;
|
|
24121
|
+
const textStyle = chunkSXCO5HHN_js.getTextStyleForElement(element, fallbackTextColor);
|
|
24122
|
+
const imageRenderStyle = chunkSXCO5HHN_js.getImageRenderStyle(element);
|
|
24107
24123
|
const canRenderText = chunkJWS3RQKN_js.isEditableTextElement(element);
|
|
24108
24124
|
const elText = chunkMGLRKGCH_js.hasTextProperties(element) ? element.text : void 0;
|
|
24109
24125
|
const elTextSegments = chunkMGLRKGCH_js.hasTextProperties(element) ? element.textSegments : void 0;
|
|
24110
24126
|
const hasText = typeof elText === "string" && elText.trim().length > 0 || (elTextSegments?.length ?? 0) > 0;
|
|
24111
|
-
const fallbackLabel =
|
|
24127
|
+
const fallbackLabel = chunkSXCO5HHN_js.shouldRenderFallbackLabel(element, canRenderText) ? chunkJWS3RQKN_js.getElementLabel(element) : "";
|
|
24112
24128
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
24113
24129
|
"div",
|
|
24114
24130
|
{
|
|
@@ -24121,11 +24137,11 @@ function SlideLayer({ slide, templateElements, canvasSize }) {
|
|
|
24121
24137
|
transform: chunkJWS3RQKN_js.getElementTransform(element),
|
|
24122
24138
|
transformOrigin: "center"
|
|
24123
24139
|
},
|
|
24124
|
-
children: (element.type === "picture" || element.type === "image") && (element.svgData || element.imageData) ?
|
|
24140
|
+
children: (element.type === "picture" || element.type === "image") && (element.svgData || element.imageData) ? chunkSXCO5HHN_js.isImageTiled(element) ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
24125
24141
|
"div",
|
|
24126
24142
|
{
|
|
24127
24143
|
className: "pointer-events-none w-full h-full",
|
|
24128
|
-
style:
|
|
24144
|
+
style: chunkSXCO5HHN_js.getImageTilingStyle(element)
|
|
24129
24145
|
}
|
|
24130
24146
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
24131
24147
|
"img",
|
|
@@ -24143,12 +24159,12 @@ function SlideLayer({ slide, templateElements, canvasSize }) {
|
|
|
24143
24159
|
{
|
|
24144
24160
|
className: "w-full h-full whitespace-pre-wrap break-words px-1 py-0.5 leading-[1.3]",
|
|
24145
24161
|
style: {
|
|
24146
|
-
...
|
|
24162
|
+
...chunkSXCO5HHN_js.getTextLayoutStyle(element),
|
|
24147
24163
|
...textStyle,
|
|
24148
24164
|
transform: chunkJWS3RQKN_js.getTextCompensationTransform(element),
|
|
24149
24165
|
transformOrigin: "center"
|
|
24150
24166
|
},
|
|
24151
|
-
children:
|
|
24167
|
+
children: chunkSXCO5HHN_js.renderTextSegments(element, fallbackTextColor)
|
|
24152
24168
|
}
|
|
24153
24169
|
),
|
|
24154
24170
|
!hasText && fallbackLabel.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 flex items-center justify-center text-[10px] text-muted-foreground", children: fallbackLabel })
|
|
@@ -24164,14 +24180,14 @@ function TransitionTable({
|
|
|
24164
24180
|
element,
|
|
24165
24181
|
textStyle
|
|
24166
24182
|
}) {
|
|
24167
|
-
const parsedTable =
|
|
24183
|
+
const parsedTable = chunkSXCO5HHN_js.parseTableElementData(element, textStyle);
|
|
24168
24184
|
if (parsedTable) {
|
|
24169
24185
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full overflow-hidden pointer-events-none", children: /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "w-full h-full border-collapse table-fixed", children: [
|
|
24170
24186
|
parsedTable.columnPercentages.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("colgroup", { children: parsedTable.columnPercentages.map((pct, ci) => /* @__PURE__ */ jsxRuntime.jsx("col", { style: { width: `${pct.toFixed(2)}%` } }, `${element.id}-tc-${ci}`)) }),
|
|
24171
24187
|
/* @__PURE__ */ jsxRuntime.jsx("tbody", { children: parsedTable.rows.map((row, ri) => {
|
|
24172
|
-
const cells =
|
|
24188
|
+
const cells = chunkSXCO5HHN_js.ensureArrayValue(row["a:tc"]);
|
|
24173
24189
|
const rowHeightRaw = Number.parseInt(String(row["@_h"] || ""), 10);
|
|
24174
|
-
const rowHeight = Number.isFinite(rowHeightRaw) && rowHeightRaw > 0 ? Math.max(16, rowHeightRaw /
|
|
24190
|
+
const rowHeight = Number.isFinite(rowHeightRaw) && rowHeightRaw > 0 ? Math.max(16, rowHeightRaw / chunkSXCO5HHN_js.EMU_PER_PX) : void 0;
|
|
24175
24191
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
24176
24192
|
"tr",
|
|
24177
24193
|
{
|
|
@@ -24186,7 +24202,7 @@ function TransitionTable({
|
|
|
24186
24202
|
const colSpan = Number.isFinite(gridSpanRaw) && gridSpanRaw > 1 ? gridSpanRaw : void 0;
|
|
24187
24203
|
const rowSpanRaw = Number.parseInt(String(cell["@_rowSpan"] || ""), 10);
|
|
24188
24204
|
const rSpan = Number.isFinite(rowSpanRaw) && rowSpanRaw > 1 ? rowSpanRaw : void 0;
|
|
24189
|
-
const bandStyle =
|
|
24205
|
+
const bandStyle = chunkSXCO5HHN_js.getTableCellBandStyle(
|
|
24190
24206
|
element,
|
|
24191
24207
|
ri,
|
|
24192
24208
|
ci,
|
|
@@ -24200,10 +24216,10 @@ function TransitionTable({
|
|
|
24200
24216
|
colSpan,
|
|
24201
24217
|
rowSpan: rSpan,
|
|
24202
24218
|
style: {
|
|
24203
|
-
...
|
|
24219
|
+
...chunkSXCO5HHN_js.extractTableCellStyle(cell, textStyle),
|
|
24204
24220
|
...bandStyle
|
|
24205
24221
|
},
|
|
24206
|
-
children:
|
|
24222
|
+
children: chunkSXCO5HHN_js.extractCellText(cell) || "\xA0"
|
|
24207
24223
|
},
|
|
24208
24224
|
`${element.id}-td-${ri}-${ci}`
|
|
24209
24225
|
);
|
|
@@ -24225,7 +24241,7 @@ function TransitionTable({
|
|
|
24225
24241
|
if (cell.hMerge || cell.vMerge) {
|
|
24226
24242
|
return null;
|
|
24227
24243
|
}
|
|
24228
|
-
const bandStyle =
|
|
24244
|
+
const bandStyle = chunkSXCO5HHN_js.getTableCellBandStyle(
|
|
24229
24245
|
element,
|
|
24230
24246
|
ri,
|
|
24231
24247
|
ci,
|
|
@@ -24239,7 +24255,7 @@ function TransitionTable({
|
|
|
24239
24255
|
colSpan: cell.gridSpan && cell.gridSpan > 1 ? cell.gridSpan : void 0,
|
|
24240
24256
|
rowSpan: cell.rowSpan && cell.rowSpan > 1 ? cell.rowSpan : void 0,
|
|
24241
24257
|
style: {
|
|
24242
|
-
...
|
|
24258
|
+
...chunkSXCO5HHN_js.cellStyleToCss(cell.style),
|
|
24243
24259
|
...bandStyle
|
|
24244
24260
|
},
|
|
24245
24261
|
children: cell.text || "\xA0"
|
|
@@ -24258,7 +24274,7 @@ function TransitionSmartArt({ element }) {
|
|
|
24258
24274
|
if (!data || data.nodes.length === 0) {
|
|
24259
24275
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[10px] text-muted-foreground pointer-events-none", children: "SmartArt" });
|
|
24260
24276
|
}
|
|
24261
|
-
const palette =
|
|
24277
|
+
const palette = chunkSXCO5HHN_js.resolvePalette(element);
|
|
24262
24278
|
const shapes = data.drawingShapes;
|
|
24263
24279
|
if (shapes && shapes.length > 0) {
|
|
24264
24280
|
let minX = Infinity;
|
|
@@ -24288,7 +24304,7 @@ function TransitionSmartArt({ element }) {
|
|
|
24288
24304
|
className: "w-full h-full pointer-events-none",
|
|
24289
24305
|
preserveAspectRatio: "xMidYMid meet",
|
|
24290
24306
|
children: shapes.map((shape, i) => {
|
|
24291
|
-
const fill = shape.fillColor ??
|
|
24307
|
+
const fill = shape.fillColor ?? chunkSXCO5HHN_js.colour(i, palette);
|
|
24292
24308
|
const relX = shape.x - minX;
|
|
24293
24309
|
const relY = shape.y - minY;
|
|
24294
24310
|
const isEllipse = shape.shapeType === "ellipse";
|
|
@@ -24334,7 +24350,7 @@ function TransitionSmartArt({ element }) {
|
|
|
24334
24350
|
}
|
|
24335
24351
|
const nodes = data.nodes;
|
|
24336
24352
|
const count = nodes.length;
|
|
24337
|
-
const category = data.layout ?
|
|
24353
|
+
const category = data.layout ? chunkSXCO5HHN_js.layoutToCategory(data.layout) : data.resolvedLayoutType ?? "list";
|
|
24338
24354
|
const useCircles = category === "cycle" || category === "radial" || category === "venn";
|
|
24339
24355
|
const useChevrons = category === "process" || category === "chevron";
|
|
24340
24356
|
const gap = 2;
|
|
@@ -24346,7 +24362,7 @@ function TransitionSmartArt({ element }) {
|
|
|
24346
24362
|
preserveAspectRatio: "xMidYMid meet",
|
|
24347
24363
|
children: nodes.map((node, i) => {
|
|
24348
24364
|
const w = (100 - gap * (count - 1)) / count;
|
|
24349
|
-
const fill =
|
|
24365
|
+
const fill = chunkSXCO5HHN_js.colour(i, palette);
|
|
24350
24366
|
if (useCircles) {
|
|
24351
24367
|
const r = Math.min(w, 40) / 2;
|
|
24352
24368
|
return /* @__PURE__ */ jsxRuntime.jsx("ellipse", { cx: i * (w + gap) + w / 2, cy: 30, rx: r, ry: r, fill }, node.id);
|
|
@@ -24409,6 +24425,7 @@ function PresentationTransitionOverlay({
|
|
|
24409
24425
|
"div",
|
|
24410
24426
|
{
|
|
24411
24427
|
ref: containerRef,
|
|
24428
|
+
"data-pptx-transition-overlay": true,
|
|
24412
24429
|
className: "pptx-react-transition-overlay absolute inset-0 pointer-events-none overflow-hidden",
|
|
24413
24430
|
style: { zIndex: outgoingZIndex },
|
|
24414
24431
|
children: [
|
|
@@ -24416,6 +24433,7 @@ function PresentationTransitionOverlay({
|
|
|
24416
24433
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
24417
24434
|
"div",
|
|
24418
24435
|
{
|
|
24436
|
+
"data-pptx-transition-layer": "outgoing",
|
|
24419
24437
|
className: "pptx-react-transition-layer absolute inset-0 flex items-center justify-center",
|
|
24420
24438
|
style: {
|
|
24421
24439
|
animation: animations.outgoing !== "none" ? animations.outgoing : void 0
|
|
@@ -24957,7 +24975,7 @@ function PrintDialog({
|
|
|
24957
24975
|
defaultFrameSlides
|
|
24958
24976
|
}) {
|
|
24959
24977
|
const { t } = reactI18next.useTranslation();
|
|
24960
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
24978
|
+
const { panelStyle, handlers: dragHandlers } = chunkSXCO5HHN_js.useModalDismissDrag(onClose);
|
|
24961
24979
|
const [printWhat, setPrintWhat] = React5.useState("slides");
|
|
24962
24980
|
const [orientation, setOrientation] = React5.useState("landscape");
|
|
24963
24981
|
const [colorMode, setColorMode] = React5.useState("color");
|
|
@@ -25486,7 +25504,7 @@ function BroadcastDialog({
|
|
|
25486
25504
|
const [serverUrl, setServerUrl] = React5.useState("");
|
|
25487
25505
|
const [copied, setCopied] = React5.useState(false);
|
|
25488
25506
|
const dialogRef = React5.useRef(null);
|
|
25489
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
25507
|
+
const { panelStyle, handlers: dragHandlers } = chunkSXCO5HHN_js.useModalDismissDrag(onClose);
|
|
25490
25508
|
React5.useEffect(() => {
|
|
25491
25509
|
if (open && !isBroadcasting) {
|
|
25492
25510
|
const broadcastRoom = defaultRoomId ? `broadcast-${defaultRoomId}` : chunkJWS3RQKN_js.generateBroadcastRoomId();
|
|
@@ -25835,7 +25853,7 @@ function ShareDialog({
|
|
|
25835
25853
|
const [serverUrl, setServerUrl] = React5.useState(defaultServerUrl ?? "");
|
|
25836
25854
|
const [copied, setCopied] = React5.useState(false);
|
|
25837
25855
|
const dialogRef = React5.useRef(null);
|
|
25838
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
25856
|
+
const { panelStyle, handlers: dragHandlers } = chunkSXCO5HHN_js.useModalDismissDrag(onClose);
|
|
25839
25857
|
React5.useEffect(() => {
|
|
25840
25858
|
if (activeCollaboration) {
|
|
25841
25859
|
setRoomId(activeCollaboration.roomId);
|
|
@@ -26322,12 +26340,12 @@ function HyperlinkEditDialog({
|
|
|
26322
26340
|
onCancel
|
|
26323
26341
|
}) {
|
|
26324
26342
|
const { t } = reactI18next.useTranslation();
|
|
26325
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
26343
|
+
const { panelStyle, handlers: dragHandlers } = chunkSXCO5HHN_js.useModalDismissDrag(onCancel);
|
|
26326
26344
|
const inputRef = React5.useRef(null);
|
|
26327
|
-
const detectedType =
|
|
26328
|
-
const emailParts =
|
|
26329
|
-
const detectedSlide =
|
|
26330
|
-
const detectedVerb = initialAction ?
|
|
26345
|
+
const detectedType = chunkSXCO5HHN_js.detectTargetType(initialUrl, initialAction);
|
|
26346
|
+
const emailParts = chunkSXCO5HHN_js.parseEmailUrl(initialUrl || "");
|
|
26347
|
+
const detectedSlide = chunkSXCO5HHN_js.parseSlideFromUrl(initialUrl, initialAction);
|
|
26348
|
+
const detectedVerb = initialAction ? chunkSXCO5HHN_js.ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
|
|
26331
26349
|
const [targetType, setTargetType] = React5.useState(detectedType);
|
|
26332
26350
|
const [url, setUrl] = React5.useState(
|
|
26333
26351
|
detectedType === "email" || detectedType === "slide" || detectedType === "action" ? "" : initialUrl || ""
|
|
@@ -26358,7 +26376,7 @@ function HyperlinkEditDialog({
|
|
|
26358
26376
|
actionVerb
|
|
26359
26377
|
});
|
|
26360
26378
|
};
|
|
26361
|
-
const tabCls = (active) =>
|
|
26379
|
+
const tabCls = (active) => chunkSXCO5HHN_js.cn(
|
|
26362
26380
|
"px-3 py-1.5 text-xs rounded-t border-b-2 transition-colors",
|
|
26363
26381
|
active ? "border-primary text-primary font-medium" : "border-transparent text-muted-foreground hover:text-foreground hover:border-border"
|
|
26364
26382
|
);
|
|
@@ -26748,7 +26766,7 @@ function DrawingOverlaySvg({
|
|
|
26748
26766
|
}
|
|
26749
26767
|
);
|
|
26750
26768
|
}
|
|
26751
|
-
function GridOverlay({ canvasSize, gridSpacingPx =
|
|
26769
|
+
function GridOverlay({ canvasSize, gridSpacingPx = chunkSXCO5HHN_js.GRID_SIZE, visible }) {
|
|
26752
26770
|
const spacing = Math.max(gridSpacingPx, 2);
|
|
26753
26771
|
const patternId = React5.useMemo(() => `grid-dot-pattern-${Math.random().toString(36).slice(2, 8)}`, []);
|
|
26754
26772
|
if (!visible) {
|
|
@@ -28124,6 +28142,7 @@ function ViewerInspector({
|
|
|
28124
28142
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
28125
28143
|
"div",
|
|
28126
28144
|
{
|
|
28145
|
+
"data-pptx-inspector": true,
|
|
28127
28146
|
role: "complementary",
|
|
28128
28147
|
"aria-label": t("pptx.inspector.properties"),
|
|
28129
28148
|
className: "h-full flex-shrink-0 max-md:absolute max-md:inset-x-0 max-md:bottom-0 max-md:top-auto max-md:z-30",
|
|
@@ -28297,7 +28316,7 @@ function TitleBar(p) {
|
|
|
28297
28316
|
role: "switch",
|
|
28298
28317
|
"aria-checked": p.autosaveEnabled,
|
|
28299
28318
|
onClick: p.onToggleAutosave,
|
|
28300
|
-
className:
|
|
28319
|
+
className: chunkSXCO5HHN_js.cn(
|
|
28301
28320
|
chunkJWS3RQKN_js.TITLE_BAR_CLASSES.toggleTrack,
|
|
28302
28321
|
p.autosaveEnabled ? chunkJWS3RQKN_js.TITLE_BAR_CLASSES.toggleTrackOn : chunkJWS3RQKN_js.TITLE_BAR_CLASSES.toggleTrackOff
|
|
28303
28322
|
),
|
|
@@ -28306,7 +28325,7 @@ function TitleBar(p) {
|
|
|
28306
28325
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
28307
28326
|
"span",
|
|
28308
28327
|
{
|
|
28309
|
-
className:
|
|
28328
|
+
className: chunkSXCO5HHN_js.cn(
|
|
28310
28329
|
chunkJWS3RQKN_js.TITLE_BAR_CLASSES.toggleKnob,
|
|
28311
28330
|
p.autosaveEnabled ? chunkJWS3RQKN_js.TITLE_BAR_CLASSES.toggleKnobOn : chunkJWS3RQKN_js.TITLE_BAR_CLASSES.toggleKnobOff
|
|
28312
28331
|
)
|
|
@@ -28361,7 +28380,7 @@ function TitleBar(p) {
|
|
|
28361
28380
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
28362
28381
|
"span",
|
|
28363
28382
|
{
|
|
28364
|
-
className:
|
|
28383
|
+
className: chunkSXCO5HHN_js.cn(
|
|
28365
28384
|
chunkJWS3RQKN_js.TITLE_BAR_CLASSES.statusText,
|
|
28366
28385
|
p.autosaveStatus?.state === "error" && p.autosaveEnabled && chunkJWS3RQKN_js.TITLE_BAR_CLASSES.statusError,
|
|
28367
28386
|
p.autosaveStatus?.state === "saving" && p.autosaveEnabled && chunkJWS3RQKN_js.TITLE_BAR_CLASSES.statusSaving
|
|
@@ -28375,7 +28394,7 @@ function TitleBar(p) {
|
|
|
28375
28394
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
28376
28395
|
"div",
|
|
28377
28396
|
{
|
|
28378
|
-
className:
|
|
28397
|
+
className: chunkSXCO5HHN_js.cn(
|
|
28379
28398
|
chunkJWS3RQKN_js.TITLE_BAR_CLASSES.searchBox,
|
|
28380
28399
|
(searchFocused || p.findReplaceOpen) && "text-foreground bg-background"
|
|
28381
28400
|
),
|
|
@@ -28966,7 +28985,7 @@ function EquationEditorDialog({
|
|
|
28966
28985
|
existingOmml
|
|
28967
28986
|
}) {
|
|
28968
28987
|
const { t } = reactI18next.useTranslation();
|
|
28969
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
28988
|
+
const { panelStyle, handlers: dragHandlers } = chunkSXCO5HHN_js.useModalDismissDrag(onClose);
|
|
28970
28989
|
const initialLatex = React5.useMemo(() => {
|
|
28971
28990
|
if (!existingOmml) {
|
|
28972
28991
|
return "";
|
|
@@ -29095,7 +29114,7 @@ function EquationEditorDialog({
|
|
|
29095
29114
|
{
|
|
29096
29115
|
type: "button",
|
|
29097
29116
|
onClick: () => handleTemplateClick(tmpl.latex),
|
|
29098
|
-
className:
|
|
29117
|
+
className: chunkSXCO5HHN_js.cn(
|
|
29099
29118
|
"flex flex-col items-center gap-1 p-2 rounded-lg border transition-colors",
|
|
29100
29119
|
latex === tmpl.latex ? "border-primary bg-primary/10" : "border-border bg-muted/40 hover:bg-accent/60 hover:border-border"
|
|
29101
29120
|
),
|
|
@@ -29194,7 +29213,7 @@ function InsertSmartArtDialog({
|
|
|
29194
29213
|
onInsert
|
|
29195
29214
|
}) {
|
|
29196
29215
|
const { t } = reactI18next.useTranslation();
|
|
29197
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
29216
|
+
const { panelStyle, handlers: dragHandlers } = chunkSXCO5HHN_js.useModalDismissDrag(onClose);
|
|
29198
29217
|
const [activeCategory, setActiveCategory] = React5.useState("list");
|
|
29199
29218
|
const [selectedLayout, setSelectedLayout] = React5.useState(null);
|
|
29200
29219
|
const filteredPresets = chunkJWS3RQKN_js.PRESETS.filter((p) => p.category === activeCategory);
|
|
@@ -29258,43 +29277,60 @@ function InsertSmartArtDialog({
|
|
|
29258
29277
|
}
|
|
29259
29278
|
),
|
|
29260
29279
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-1 overflow-hidden", children: [
|
|
29261
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
29262
|
-
"
|
|
29280
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
29281
|
+
"nav",
|
|
29263
29282
|
{
|
|
29264
|
-
|
|
29265
|
-
|
|
29266
|
-
|
|
29267
|
-
|
|
29268
|
-
|
|
29269
|
-
|
|
29270
|
-
|
|
29271
|
-
|
|
29272
|
-
|
|
29273
|
-
|
|
29274
|
-
|
|
29275
|
-
|
|
29276
|
-
|
|
29277
|
-
|
|
29278
|
-
|
|
29283
|
+
className: "w-40 border-r border-border py-2",
|
|
29284
|
+
"aria-label": t("pptx.insertSmartArt.categories"),
|
|
29285
|
+
children: chunkJWS3RQKN_js.CATEGORIES.map((cat) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
29286
|
+
"button",
|
|
29287
|
+
{
|
|
29288
|
+
type: "button",
|
|
29289
|
+
onClick: () => {
|
|
29290
|
+
setActiveCategory(cat.id);
|
|
29291
|
+
setSelectedLayout(null);
|
|
29292
|
+
},
|
|
29293
|
+
className: chunkSXCO5HHN_js.cn(
|
|
29294
|
+
"w-full text-left px-3 py-1.5 text-xs transition-colors",
|
|
29295
|
+
activeCategory === cat.id ? "bg-primary text-white" : "text-foreground hover:bg-muted"
|
|
29296
|
+
),
|
|
29297
|
+
children: t(cat.label)
|
|
29298
|
+
},
|
|
29299
|
+
cat.id
|
|
29300
|
+
))
|
|
29301
|
+
}
|
|
29302
|
+
),
|
|
29303
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 p-3 overflow-y-auto", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
29304
|
+
"div",
|
|
29279
29305
|
{
|
|
29280
|
-
|
|
29281
|
-
|
|
29282
|
-
|
|
29283
|
-
|
|
29284
|
-
|
|
29285
|
-
|
|
29286
|
-
|
|
29287
|
-
|
|
29288
|
-
|
|
29289
|
-
|
|
29290
|
-
|
|
29291
|
-
|
|
29292
|
-
|
|
29293
|
-
|
|
29294
|
-
|
|
29295
|
-
|
|
29296
|
-
|
|
29297
|
-
|
|
29306
|
+
className: "grid grid-cols-3 gap-2",
|
|
29307
|
+
role: "listbox",
|
|
29308
|
+
"aria-label": t("pptx.insertSmartArt.layouts"),
|
|
29309
|
+
children: filteredPresets.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
29310
|
+
"button",
|
|
29311
|
+
{
|
|
29312
|
+
type: "button",
|
|
29313
|
+
role: "option",
|
|
29314
|
+
"aria-selected": selectedLayout === preset.layout,
|
|
29315
|
+
onClick: () => setSelectedLayout(preset.layout),
|
|
29316
|
+
onDoubleClick: () => {
|
|
29317
|
+
setSelectedLayout(preset.layout);
|
|
29318
|
+
onInsert(preset.layout, preset.defaultItems);
|
|
29319
|
+
onClose();
|
|
29320
|
+
},
|
|
29321
|
+
className: chunkSXCO5HHN_js.cn(
|
|
29322
|
+
"flex flex-col items-center gap-1 p-2 rounded border transition-colors",
|
|
29323
|
+
selectedLayout === preset.layout ? "border-primary bg-primary/20" : "border-border hover:border-border hover:bg-muted/50"
|
|
29324
|
+
),
|
|
29325
|
+
children: [
|
|
29326
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-16 h-12 flex items-center justify-center bg-muted rounded", children: getPreviewForLayout(preset.layout) }),
|
|
29327
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-foreground text-center leading-tight", children: t(preset.labelKey) })
|
|
29328
|
+
]
|
|
29329
|
+
},
|
|
29330
|
+
preset.layout
|
|
29331
|
+
))
|
|
29332
|
+
}
|
|
29333
|
+
) })
|
|
29298
29334
|
] }),
|
|
29299
29335
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-2 px-4 py-3 border-t border-border", children: [
|
|
29300
29336
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -29312,7 +29348,7 @@ function InsertSmartArtDialog({
|
|
|
29312
29348
|
type: "button",
|
|
29313
29349
|
onClick: handleInsert,
|
|
29314
29350
|
disabled: !selectedLayout,
|
|
29315
|
-
className:
|
|
29351
|
+
className: chunkSXCO5HHN_js.cn(
|
|
29316
29352
|
"px-3 py-1.5 text-xs rounded transition-colors",
|
|
29317
29353
|
selectedLayout ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
|
|
29318
29354
|
),
|
|
@@ -29678,7 +29714,7 @@ function ViewerCanvasArea(props) {
|
|
|
29678
29714
|
s.setActiveSlideIndex((i) => Math.max(0, i - 1));
|
|
29679
29715
|
}
|
|
29680
29716
|
}, [mode, presentation, s]);
|
|
29681
|
-
const swipe =
|
|
29717
|
+
const swipe = chunkSXCO5HHN_js.useSwipeNavigation({
|
|
29682
29718
|
enabled: swipeEnabled,
|
|
29683
29719
|
onNext: handleSwipeNext,
|
|
29684
29720
|
onPrev: handleSwipePrev
|
|
@@ -30465,7 +30501,7 @@ function MobileDismissSheet({
|
|
|
30465
30501
|
className,
|
|
30466
30502
|
children
|
|
30467
30503
|
}) {
|
|
30468
|
-
const { dragY, handlers } =
|
|
30504
|
+
const { dragY, handlers } = chunkSXCO5HHN_js.useSheetDismissDrag(onClose);
|
|
30469
30505
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
30470
30506
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30471
30507
|
"button",
|
|
@@ -30734,7 +30770,7 @@ function ThemeThumbnail({
|
|
|
30734
30770
|
{
|
|
30735
30771
|
type: "button",
|
|
30736
30772
|
onClick,
|
|
30737
|
-
className:
|
|
30773
|
+
className: chunkSXCO5HHN_js.cn(
|
|
30738
30774
|
"group relative flex flex-col rounded-lg border-2 transition-all overflow-hidden",
|
|
30739
30775
|
selected ? "border-primary shadow-lg scale-[1.02]" : "border-border hover:border-primary/50 hover:shadow-md"
|
|
30740
30776
|
),
|
|
@@ -31227,11 +31263,12 @@ function MobileBottomBar({
|
|
|
31227
31263
|
{
|
|
31228
31264
|
type: "button",
|
|
31229
31265
|
onClick,
|
|
31230
|
-
className:
|
|
31266
|
+
className: chunkSXCO5HHN_js.cn(
|
|
31231
31267
|
"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",
|
|
31232
31268
|
active ? "text-primary" : "text-muted-foreground hover:text-foreground"
|
|
31233
31269
|
),
|
|
31234
31270
|
"aria-pressed": active,
|
|
31271
|
+
"aria-label": key === "notes" ? t("pptx.statusBar.toggleNotes") : void 0,
|
|
31235
31272
|
children: [
|
|
31236
31273
|
/* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "w-5 h-5" }),
|
|
31237
31274
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: t(label) }),
|
|
@@ -31274,7 +31311,7 @@ function MobileChromeOverlay(props) {
|
|
|
31274
31311
|
canEdit,
|
|
31275
31312
|
commentCount
|
|
31276
31313
|
} = props;
|
|
31277
|
-
const { keyboardInset, isKeyboardOpen } =
|
|
31314
|
+
const { keyboardInset, isKeyboardOpen } = chunkSXCO5HHN_js.useKeyboardInsets();
|
|
31278
31315
|
const activeSheet = s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null;
|
|
31279
31316
|
const closeAllSheets = () => {
|
|
31280
31317
|
s.setIsSlidesPaneOpen(false);
|
|
@@ -31369,7 +31406,7 @@ function ToggleSwitch({
|
|
|
31369
31406
|
{
|
|
31370
31407
|
type: "button",
|
|
31371
31408
|
onClick: onToggle,
|
|
31372
|
-
className:
|
|
31409
|
+
className: chunkSXCO5HHN_js.cn(
|
|
31373
31410
|
"relative inline-flex h-5 w-9 items-center rounded-full transition-colors",
|
|
31374
31411
|
enabled ? "bg-primary" : "bg-muted-foreground/30"
|
|
31375
31412
|
),
|
|
@@ -31379,7 +31416,7 @@ function ToggleSwitch({
|
|
|
31379
31416
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
31380
31417
|
"span",
|
|
31381
31418
|
{
|
|
31382
|
-
className:
|
|
31419
|
+
className: chunkSXCO5HHN_js.cn(
|
|
31383
31420
|
"inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform",
|
|
31384
31421
|
enabled ? "translate-x-[18px]" : "translate-x-[3px]"
|
|
31385
31422
|
)
|
|
@@ -31406,7 +31443,7 @@ function SettingsDialog({
|
|
|
31406
31443
|
const [activeTab, setActiveTab] = React5.useState("general");
|
|
31407
31444
|
const [autoSave, setAutoSave] = React5.useState(true);
|
|
31408
31445
|
const { t } = reactI18next.useTranslation();
|
|
31409
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
31446
|
+
const { panelStyle, handlers: dragHandlers } = chunkSXCO5HHN_js.useModalDismissDrag(onClose);
|
|
31410
31447
|
const handleKeyDown = React5.useCallback(
|
|
31411
31448
|
(e) => {
|
|
31412
31449
|
if (e.key === "Escape") {
|
|
@@ -31478,7 +31515,7 @@ function SettingsDialog({
|
|
|
31478
31515
|
{
|
|
31479
31516
|
type: "button",
|
|
31480
31517
|
onClick: () => setActiveTab(tab.id),
|
|
31481
|
-
className:
|
|
31518
|
+
className: chunkSXCO5HHN_js.cn(
|
|
31482
31519
|
"px-3 py-2 text-xs font-medium transition-colors relative",
|
|
31483
31520
|
activeTab === tab.id ? "text-primary" : "text-muted-foreground hover:text-foreground"
|
|
31484
31521
|
),
|
|
@@ -31540,10 +31577,10 @@ function SettingsDialog({
|
|
|
31540
31577
|
}
|
|
31541
31578
|
)
|
|
31542
31579
|
] }),
|
|
31543
|
-
activeTab === "shortcuts" && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children:
|
|
31580
|
+
activeTab === "shortcuts" && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: chunkSXCO5HHN_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut, i) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
31544
31581
|
"div",
|
|
31545
31582
|
{
|
|
31546
|
-
className:
|
|
31583
|
+
className: chunkSXCO5HHN_js.cn(
|
|
31547
31584
|
"flex items-center justify-between gap-3 rounded px-3 py-2",
|
|
31548
31585
|
i % 2 === 0 ? "bg-muted/60" : ""
|
|
31549
31586
|
),
|
|
@@ -31618,8 +31655,8 @@ var PowerPointViewer = React5.forwardRef(
|
|
|
31618
31655
|
const [isSettingsOpen, setIsSettingsOpen] = React5.useState(false);
|
|
31619
31656
|
const [autosaveEnabled, setAutosaveEnabled] = React5.useState(true);
|
|
31620
31657
|
const [isShareDialogOpen, setIsShareDialogOpen] = React5.useState(false);
|
|
31621
|
-
const { reducedMotion, toggleReducedMotion } =
|
|
31622
|
-
const state =
|
|
31658
|
+
const { reducedMotion, toggleReducedMotion } = chunkSXCO5HHN_js.useReducedMotion();
|
|
31659
|
+
const state = chunkSXCO5HHN_js.useViewerState({ content, canEdit });
|
|
31623
31660
|
const {
|
|
31624
31661
|
containerRef,
|
|
31625
31662
|
mode,
|
|
@@ -31634,10 +31671,10 @@ var PowerPointViewer = React5.forwardRef(
|
|
|
31634
31671
|
activeSlide,
|
|
31635
31672
|
selectedElement
|
|
31636
31673
|
} = state;
|
|
31637
|
-
const mobile =
|
|
31674
|
+
const mobile = chunkSXCO5HHN_js.useIsMobile({ containerRef });
|
|
31638
31675
|
const { isMobile, isTouchDevice, isVirtualKeyboardOpen } = mobile;
|
|
31639
|
-
const resizablePanels =
|
|
31640
|
-
const { gridSpacingPx, visibleSlideIndexes, slideSectionGroups, masterPseudoSlide } =
|
|
31676
|
+
const resizablePanels = chunkSXCO5HHN_js.useResizablePanels();
|
|
31677
|
+
const { gridSpacingPx, visibleSlideIndexes, slideSectionGroups, masterPseudoSlide } = chunkSXCO5HHN_js.useDerivedSlideState({
|
|
31641
31678
|
slides,
|
|
31642
31679
|
sections: state.sections,
|
|
31643
31680
|
customShows: state.customShows,
|
|
@@ -31659,11 +31696,11 @@ var PowerPointViewer = React5.forwardRef(
|
|
|
31659
31696
|
state.isDrawingRef
|
|
31660
31697
|
]
|
|
31661
31698
|
);
|
|
31662
|
-
const zoom =
|
|
31699
|
+
const zoom = chunkSXCO5HHN_js.useZoomViewport({
|
|
31663
31700
|
canvasSize,
|
|
31664
31701
|
selectedElements: state.selectedElements
|
|
31665
31702
|
});
|
|
31666
|
-
const history =
|
|
31703
|
+
const history = chunkSXCO5HHN_js.useEditorHistory({
|
|
31667
31704
|
slides,
|
|
31668
31705
|
canvasSize,
|
|
31669
31706
|
activeSlideIndex,
|
|
@@ -31685,7 +31722,7 @@ var PowerPointViewer = React5.forwardRef(
|
|
|
31685
31722
|
setEditTemplateMode: state.setEditTemplateMode,
|
|
31686
31723
|
setHeaderFooter: state.setHeaderFooter
|
|
31687
31724
|
});
|
|
31688
|
-
const { presentation, annotations, actionSoundHandlerRef } =
|
|
31725
|
+
const { presentation, annotations, actionSoundHandlerRef } = chunkSXCO5HHN_js.usePresentationSetup({
|
|
31689
31726
|
mode,
|
|
31690
31727
|
slides,
|
|
31691
31728
|
visibleSlideIndexes,
|
|
@@ -31699,7 +31736,7 @@ var PowerPointViewer = React5.forwardRef(
|
|
|
31699
31736
|
setSlides: state.setSlides,
|
|
31700
31737
|
history
|
|
31701
31738
|
});
|
|
31702
|
-
|
|
31739
|
+
chunkSXCO5HHN_js.useTouchGestures({
|
|
31703
31740
|
targetRef: zoom.canvasViewportRef,
|
|
31704
31741
|
currentScale: zoom.scale,
|
|
31705
31742
|
callbacks: {
|
|
@@ -31721,7 +31758,7 @@ var PowerPointViewer = React5.forwardRef(
|
|
|
31721
31758
|
},
|
|
31722
31759
|
enabled: isTouchDevice
|
|
31723
31760
|
});
|
|
31724
|
-
const dialogs =
|
|
31761
|
+
const dialogs = chunkSXCO5HHN_js.useViewerDialogs({
|
|
31725
31762
|
mode,
|
|
31726
31763
|
slides,
|
|
31727
31764
|
activeSlide,
|
|
@@ -31762,7 +31799,7 @@ var PowerPointViewer = React5.forwardRef(
|
|
|
31762
31799
|
zoom.handleZoomToFit();
|
|
31763
31800
|
zoom.canvasViewportRef.current?.scrollTo({ left: 0, top: 0 });
|
|
31764
31801
|
}, [mode]);
|
|
31765
|
-
const editorOps =
|
|
31802
|
+
const editorOps = chunkSXCO5HHN_js.useEditorOperations({
|
|
31766
31803
|
state,
|
|
31767
31804
|
history,
|
|
31768
31805
|
zoom,
|
|
@@ -31794,7 +31831,7 @@ var PowerPointViewer = React5.forwardRef(
|
|
|
31794
31831
|
autosaveStatus,
|
|
31795
31832
|
isEncryptedDialogOpen,
|
|
31796
31833
|
setIsEncryptedDialogOpen
|
|
31797
|
-
} =
|
|
31834
|
+
} = chunkSXCO5HHN_js.useViewerIntegration({
|
|
31798
31835
|
state,
|
|
31799
31836
|
zoom,
|
|
31800
31837
|
history,
|
|
@@ -32127,7 +32164,7 @@ function CollaborationDocumentSync({
|
|
|
32127
32164
|
}
|
|
32128
32165
|
return bytes instanceof Uint8Array ? bytes : new Uint8Array(bytes);
|
|
32129
32166
|
}, []);
|
|
32130
|
-
|
|
32167
|
+
chunkSXCO5HHN_js.useYjsDocumentSync({
|
|
32131
32168
|
doc: collab?.doc ?? null,
|
|
32132
32169
|
slides,
|
|
32133
32170
|
templateElementsBySlideId,
|
|
@@ -32145,13 +32182,13 @@ function CollaborationFollowLayer({
|
|
|
32145
32182
|
slideCount
|
|
32146
32183
|
}) {
|
|
32147
32184
|
const collab = useCollaboration();
|
|
32148
|
-
const { followedClientId, followUser } =
|
|
32185
|
+
const { followedClientId, followUser } = chunkSXCO5HHN_js.useFollowMode({
|
|
32149
32186
|
collab,
|
|
32150
32187
|
activeSlideIndex,
|
|
32151
32188
|
setActiveSlideIndex,
|
|
32152
32189
|
slideCount
|
|
32153
32190
|
});
|
|
32154
|
-
|
|
32191
|
+
chunkSXCO5HHN_js.useBroadcastFollower({
|
|
32155
32192
|
collab,
|
|
32156
32193
|
activeSlideIndex,
|
|
32157
32194
|
setActiveSlideIndex,
|