pptx-react-viewer 1.19.0 → 1.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/dist/{Model3DScene-CQP7JLKK.js → Model3DScene-BLUWY36S.js} +2 -2
- package/dist/Model3DScene-BLUWY36S.js.br +0 -0
- package/dist/Model3DScene-BLUWY36S.js.gz +0 -0
- package/dist/{Model3DScene-J2KBVMEZ.mjs → Model3DScene-RYHVTFOT.mjs} +1 -1
- package/dist/Model3DScene-RYHVTFOT.mjs.br +0 -0
- package/dist/Model3DScene-RYHVTFOT.mjs.gz +0 -0
- package/dist/{SurfaceChart3DScene-U6LVKSKR.js → SurfaceChart3DScene-BW2YTOPQ.js} +2 -2
- package/dist/{SurfaceChart3DScene-U6LVKSKR.js.br → SurfaceChart3DScene-BW2YTOPQ.js.br} +0 -0
- package/dist/SurfaceChart3DScene-BW2YTOPQ.js.gz +0 -0
- package/dist/{SurfaceChart3DScene-52VUVZSC.mjs → SurfaceChart3DScene-U6QOMUJF.mjs} +1 -1
- package/dist/SurfaceChart3DScene-U6QOMUJF.mjs.br +0 -0
- package/dist/SurfaceChart3DScene-U6QOMUJF.mjs.gz +0 -0
- package/dist/{chunk-RIRK64DM.mjs → chunk-4LPWBQTH.mjs} +24 -0
- package/dist/chunk-4LPWBQTH.mjs.br +0 -0
- package/dist/chunk-4LPWBQTH.mjs.gz +0 -0
- package/dist/{chunk-AALZCSY4.js → chunk-4SRCC7NB.js} +24 -0
- package/dist/chunk-4SRCC7NB.js.br +0 -0
- package/dist/chunk-4SRCC7NB.js.gz +0 -0
- package/dist/{chunk-P3T4E6JQ.js → chunk-BXACB3BG.js} +9 -7
- package/dist/chunk-BXACB3BG.js.br +0 -0
- package/dist/chunk-BXACB3BG.js.gz +0 -0
- package/dist/{chunk-R7FTNSSP.mjs → chunk-GG2KBJSN.mjs} +9 -7
- package/dist/chunk-GG2KBJSN.mjs.br +0 -0
- package/dist/chunk-GG2KBJSN.mjs.gz +0 -0
- package/dist/{chunk-DBZLZMED.js → chunk-KRK367H5.js} +687 -705
- package/dist/chunk-KRK367H5.js.br +0 -0
- package/dist/chunk-KRK367H5.js.gz +0 -0
- package/dist/{chunk-YF6JD4DO.js → chunk-LXUMBK2O.js} +398 -398
- package/dist/chunk-LXUMBK2O.js.br +0 -0
- package/dist/chunk-LXUMBK2O.js.gz +0 -0
- package/dist/{chunk-SLJXGFZS.mjs → chunk-TUVSZMLW.mjs} +5 -22
- package/dist/chunk-TUVSZMLW.mjs.br +0 -0
- package/dist/chunk-TUVSZMLW.mjs.gz +0 -0
- package/dist/{chunk-XGTMHQR7.mjs → chunk-UDJHJM5B.mjs} +3 -3
- package/dist/chunk-UDJHJM5B.mjs.br +0 -0
- package/dist/chunk-UDJHJM5B.mjs.gz +0 -0
- package/dist/hooks-unstable.js +74 -74
- package/dist/hooks-unstable.js.br +0 -0
- package/dist/hooks-unstable.js.gz +0 -0
- package/dist/hooks-unstable.mjs +3 -3
- 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 +0 -0
- 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 +18 -18
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +4 -4
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/pptx-viewer.css +2 -2
- package/dist/pptx-viewer.css.br +0 -0
- package/dist/pptx-viewer.css.gz +0 -0
- package/dist/viewer/index.js +20 -20
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/viewer/index.mjs +4 -4
- package/dist/viewer/index.mjs.br +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +12 -12
- package/dist/Model3DScene-CQP7JLKK.js.br +0 -0
- package/dist/Model3DScene-CQP7JLKK.js.gz +0 -0
- package/dist/Model3DScene-J2KBVMEZ.mjs.br +0 -0
- package/dist/Model3DScene-J2KBVMEZ.mjs.gz +0 -0
- package/dist/SurfaceChart3DScene-52VUVZSC.mjs.br +0 -0
- package/dist/SurfaceChart3DScene-52VUVZSC.mjs.gz +0 -0
- package/dist/SurfaceChart3DScene-U6LVKSKR.js.gz +0 -0
- package/dist/chunk-AALZCSY4.js.br +0 -0
- package/dist/chunk-AALZCSY4.js.gz +0 -0
- package/dist/chunk-DBZLZMED.js.br +0 -0
- package/dist/chunk-DBZLZMED.js.gz +0 -0
- package/dist/chunk-P3T4E6JQ.js.br +0 -0
- package/dist/chunk-P3T4E6JQ.js.gz +0 -0
- package/dist/chunk-R7FTNSSP.mjs.br +0 -0
- package/dist/chunk-R7FTNSSP.mjs.gz +0 -0
- package/dist/chunk-RIRK64DM.mjs.br +0 -0
- package/dist/chunk-RIRK64DM.mjs.gz +0 -0
- package/dist/chunk-SLJXGFZS.mjs.br +0 -0
- package/dist/chunk-SLJXGFZS.mjs.gz +0 -0
- package/dist/chunk-XGTMHQR7.mjs.br +0 -0
- package/dist/chunk-XGTMHQR7.mjs.gz +0 -0
- package/dist/chunk-YF6JD4DO.js.br +0 -0
- package/dist/chunk-YF6JD4DO.js.gz +0 -0
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
3
|
+
var chunkLXUMBK2O_js = require('./chunk-LXUMBK2O.js');
|
|
4
|
+
var chunkBXACB3BG_js = require('./chunk-BXACB3BG.js');
|
|
5
|
+
var chunk4SRCC7NB_js = require('./chunk-4SRCC7NB.js');
|
|
6
6
|
var chunkAD3EAEY6_js = require('./chunk-AD3EAEY6.js');
|
|
7
7
|
var React14 = require('react');
|
|
8
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
9
9
|
var reactI18next = require('react-i18next');
|
|
10
10
|
var lu = require('react-icons/lu');
|
|
11
|
-
var DOMPurify = require('dompurify');
|
|
12
11
|
|
|
13
12
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
13
|
|
|
15
14
|
var React14__default = /*#__PURE__*/_interopDefault(React14);
|
|
16
|
-
var DOMPurify__default = /*#__PURE__*/_interopDefault(DOMPurify);
|
|
17
15
|
|
|
18
16
|
var ViewerThemeContext = React14.createContext(void 0);
|
|
19
17
|
function ViewerThemeProvider({ theme, children }) {
|
|
@@ -27,7 +25,7 @@ function useThemeStyle(theme) {
|
|
|
27
25
|
if (!theme) {
|
|
28
26
|
return void 0;
|
|
29
27
|
}
|
|
30
|
-
const vars =
|
|
28
|
+
const vars = chunkBXACB3BG_js.themeToCssVars(theme);
|
|
31
29
|
if (Object.keys(vars).length === 0) {
|
|
32
30
|
return void 0;
|
|
33
31
|
}
|
|
@@ -44,7 +42,7 @@ function CollaborationProvider({
|
|
|
44
42
|
canvasHeight,
|
|
45
43
|
children
|
|
46
44
|
}) {
|
|
47
|
-
const value =
|
|
45
|
+
const value = chunkLXUMBK2O_js.useCollaborativeState({
|
|
48
46
|
config,
|
|
49
47
|
canvasWidth,
|
|
50
48
|
canvasHeight
|
|
@@ -476,7 +474,7 @@ function LoadingState({ className }) {
|
|
|
476
474
|
role: "status",
|
|
477
475
|
"aria-live": "polite",
|
|
478
476
|
"aria-atomic": "true",
|
|
479
|
-
className:
|
|
477
|
+
className: chunkLXUMBK2O_js.cn(
|
|
480
478
|
"h-full w-full flex items-center justify-center text-muted-foreground",
|
|
481
479
|
className
|
|
482
480
|
),
|
|
@@ -499,7 +497,7 @@ function ErrorState({ className, error }) {
|
|
|
499
497
|
{
|
|
500
498
|
role: "alert",
|
|
501
499
|
"aria-live": "assertive",
|
|
502
|
-
className:
|
|
500
|
+
className: chunkLXUMBK2O_js.cn(
|
|
503
501
|
"h-full w-full flex items-center justify-center p-6 text-center text-red-400",
|
|
504
502
|
className
|
|
505
503
|
),
|
|
@@ -530,7 +528,7 @@ function ShortcutPanel({ isOpen, onClose }) {
|
|
|
530
528
|
}
|
|
531
529
|
)
|
|
532
530
|
] }),
|
|
533
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children:
|
|
531
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children: chunkLXUMBK2O_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
534
532
|
"div",
|
|
535
533
|
{
|
|
536
534
|
className: "flex items-center justify-between gap-3 rounded bg-muted/80 px-2 py-1.5",
|
|
@@ -590,14 +588,14 @@ function AccessibilityPanel({
|
|
|
590
588
|
"aria-label": t("pptx.accessibility.reduceMotion"),
|
|
591
589
|
"aria-checked": reducedMotion ?? false,
|
|
592
590
|
onClick: onToggleReducedMotion,
|
|
593
|
-
className:
|
|
591
|
+
className: chunkLXUMBK2O_js.cn(
|
|
594
592
|
"relative inline-flex h-5 w-9 items-center rounded-full transition-colors",
|
|
595
593
|
reducedMotion ? "bg-primary" : "bg-muted-foreground/30"
|
|
596
594
|
),
|
|
597
595
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
598
596
|
"span",
|
|
599
597
|
{
|
|
600
|
-
className:
|
|
598
|
+
className: chunkLXUMBK2O_js.cn(
|
|
601
599
|
"inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform",
|
|
602
600
|
reducedMotion ? "translate-x-4" : "translate-x-0.5"
|
|
603
601
|
)
|
|
@@ -616,7 +614,7 @@ function AccessibilityPanel({
|
|
|
616
614
|
"div",
|
|
617
615
|
{
|
|
618
616
|
role: "listitem",
|
|
619
|
-
className:
|
|
617
|
+
className: chunkLXUMBK2O_js.cn(
|
|
620
618
|
"flex items-start gap-2 rounded px-2 py-1.5 text-xs",
|
|
621
619
|
/* Severity-based background and text colouring */
|
|
622
620
|
issue.severity === "error" ? "bg-red-900/30 text-red-300" : issue.severity === "warning" ? "bg-amber-900/30 text-amber-300" : "bg-muted/50 text-muted-foreground"
|
|
@@ -648,7 +646,7 @@ function ExportProgressModal({
|
|
|
648
646
|
if (!isOpen) {
|
|
649
647
|
return null;
|
|
650
648
|
}
|
|
651
|
-
const clampedProgress =
|
|
649
|
+
const clampedProgress = chunkBXACB3BG_js.clampPercent(progress);
|
|
652
650
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
653
651
|
"div",
|
|
654
652
|
{
|
|
@@ -737,7 +735,7 @@ function StatusBar({
|
|
|
737
735
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
738
736
|
"span",
|
|
739
737
|
{
|
|
740
|
-
className:
|
|
738
|
+
className: chunkLXUMBK2O_js.cn(
|
|
741
739
|
"shrink-0 max-md:hidden",
|
|
742
740
|
autosaveStatus?.state === "error" ? "text-red-400" : autosaveStatus?.state === "saving" ? "text-yellow-400" : ""
|
|
743
741
|
),
|
|
@@ -750,7 +748,7 @@ function StatusBar({
|
|
|
750
748
|
{
|
|
751
749
|
type: "button",
|
|
752
750
|
onClick: onToggleNotes,
|
|
753
|
-
className:
|
|
751
|
+
className: chunkLXUMBK2O_js.cn(
|
|
754
752
|
vb,
|
|
755
753
|
"flex items-center gap-1 text-[10px]",
|
|
756
754
|
isNotesExpanded && "text-primary"
|
|
@@ -770,7 +768,7 @@ function StatusBar({
|
|
|
770
768
|
{
|
|
771
769
|
type: "button",
|
|
772
770
|
onClick: () => onSetMode("edit"),
|
|
773
|
-
className:
|
|
771
|
+
className: chunkLXUMBK2O_js.cn(vb, mode === "edit" && "text-primary"),
|
|
774
772
|
title: t("pptx.statusBar.normalView"),
|
|
775
773
|
"aria-label": t("pptx.statusBar.normalView"),
|
|
776
774
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuMonitor, { className: "w-3.5 h-3.5" })
|
|
@@ -792,7 +790,7 @@ function StatusBar({
|
|
|
792
790
|
{
|
|
793
791
|
type: "button",
|
|
794
792
|
onClick: () => onSetMode("present"),
|
|
795
|
-
className:
|
|
793
|
+
className: chunkLXUMBK2O_js.cn(vb, mode === "present" && "text-primary"),
|
|
796
794
|
title: t("pptx.statusBar.slideShow"),
|
|
797
795
|
"aria-label": t("pptx.statusBar.slideShow"),
|
|
798
796
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPresentation, { className: "w-3.5 h-3.5" })
|
|
@@ -882,7 +880,7 @@ function ResizeHandle({
|
|
|
882
880
|
{
|
|
883
881
|
role: "separator",
|
|
884
882
|
"aria-orientation": direction,
|
|
885
|
-
className:
|
|
883
|
+
className: chunkLXUMBK2O_js.cn(
|
|
886
884
|
// Outer container: generous hit area for easy clicking.
|
|
887
885
|
// The visible indicator is rendered via the inner pseudo-element (::after).
|
|
888
886
|
"relative flex-shrink-0 z-20 group",
|
|
@@ -893,7 +891,7 @@ function ResizeHandle({
|
|
|
893
891
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
894
892
|
"div",
|
|
895
893
|
{
|
|
896
|
-
className:
|
|
894
|
+
className: chunkLXUMBK2O_js.cn(
|
|
897
895
|
"absolute transition-colors",
|
|
898
896
|
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"
|
|
899
897
|
)
|
|
@@ -905,7 +903,7 @@ function ResizeHandle({
|
|
|
905
903
|
|
|
906
904
|
// src/viewer/utils/slide-background-style.ts
|
|
907
905
|
function getReactSlideBackgroundStyle(slide) {
|
|
908
|
-
const style =
|
|
906
|
+
const style = chunkBXACB3BG_js.getSlideBackgroundStyle(slide);
|
|
909
907
|
return {
|
|
910
908
|
backgroundColor: style["background-color"],
|
|
911
909
|
backgroundImage: style["background-image"],
|
|
@@ -960,7 +958,7 @@ function ChartElementView({
|
|
|
960
958
|
const selectedPart = selection?.elementId === element.id ? selection.part : null;
|
|
961
959
|
const canEdit = editable && Boolean(onUpdateElement);
|
|
962
960
|
const viewModel = React14.useMemo(
|
|
963
|
-
() => canEdit ?
|
|
961
|
+
() => canEdit ? chunkLXUMBK2O_js.buildReactChartViewModel(element) : null,
|
|
964
962
|
[canEdit, element]
|
|
965
963
|
);
|
|
966
964
|
React14.useEffect(ensureInteractionStyles, []);
|
|
@@ -1011,7 +1009,7 @@ function ChartElementView({
|
|
|
1011
1009
|
if (!canEdit) {
|
|
1012
1010
|
return;
|
|
1013
1011
|
}
|
|
1014
|
-
const part =
|
|
1012
|
+
const part = chunkBXACB3BG_js.findChartPartTarget(e.target);
|
|
1015
1013
|
if (!part) {
|
|
1016
1014
|
return;
|
|
1017
1015
|
}
|
|
@@ -1029,7 +1027,7 @@ function ChartElementView({
|
|
|
1029
1027
|
drag: viewModel.valueDrag,
|
|
1030
1028
|
svgHeight: viewModel.svgHeight,
|
|
1031
1029
|
startClientY: e.clientY,
|
|
1032
|
-
anchorViewY:
|
|
1030
|
+
anchorViewY: chunkBXACB3BG_js.dragAnchorViewY(startValue, viewModel.valueDrag, part.seriesIndex),
|
|
1033
1031
|
baseChartData: element.chartData,
|
|
1034
1032
|
moved: false,
|
|
1035
1033
|
lastData: null
|
|
@@ -1055,8 +1053,8 @@ function ChartElementView({
|
|
|
1055
1053
|
active.moved = true;
|
|
1056
1054
|
const deltaViewY = (e.clientY - active.startClientY) / rect.height * active.svgHeight;
|
|
1057
1055
|
const viewY = active.anchorViewY + deltaViewY;
|
|
1058
|
-
const value =
|
|
1059
|
-
active.lastData =
|
|
1056
|
+
const value = chunkBXACB3BG_js.dragValueForPart(viewY, active.drag, active.part.seriesIndex);
|
|
1057
|
+
active.lastData = chunkBXACB3BG_js.withChartPointValue(
|
|
1060
1058
|
active.baseChartData,
|
|
1061
1059
|
active.part.seriesIndex,
|
|
1062
1060
|
active.part.pointIndex,
|
|
@@ -1083,14 +1081,14 @@ function ChartElementView({
|
|
|
1083
1081
|
setTitleDraft(element.chartData?.title ?? "");
|
|
1084
1082
|
return;
|
|
1085
1083
|
}
|
|
1086
|
-
if (
|
|
1084
|
+
if (chunkBXACB3BG_js.findChartPartTarget(e.target)) {
|
|
1087
1085
|
e.stopPropagation();
|
|
1088
1086
|
}
|
|
1089
1087
|
};
|
|
1090
1088
|
const commitTitle = () => {
|
|
1091
1089
|
if (titleDraft !== null && element.chartData && onUpdateElement) {
|
|
1092
1090
|
onUpdateElement({
|
|
1093
|
-
chartData:
|
|
1091
|
+
chartData: chunkBXACB3BG_js.withChartTitle(element.chartData, titleDraft)
|
|
1094
1092
|
});
|
|
1095
1093
|
}
|
|
1096
1094
|
setTitleDraft(null);
|
|
@@ -1106,8 +1104,8 @@ function ChartElementView({
|
|
|
1106
1104
|
onPointerUp: handlePointerUp,
|
|
1107
1105
|
onDoubleClick: handleDoubleClick,
|
|
1108
1106
|
children: [
|
|
1109
|
-
|
|
1110
|
-
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:
|
|
1107
|
+
chunkLXUMBK2O_js.renderChartElement(renderedElement),
|
|
1108
|
+
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: chunkBXACB3BG_js.formatAxisValue(dragValue) }),
|
|
1111
1109
|
titleDraft !== null && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1112
1110
|
"input",
|
|
1113
1111
|
{
|
|
@@ -1141,23 +1139,23 @@ function ColorChangedImage({
|
|
|
1141
1139
|
className,
|
|
1142
1140
|
alt
|
|
1143
1141
|
}) {
|
|
1144
|
-
const tolerance = tolerancePct ??
|
|
1145
|
-
const cacheKey =
|
|
1142
|
+
const tolerance = tolerancePct ?? chunkBXACB3BG_js.DEFAULT_COLOR_CHANGE_TOLERANCE;
|
|
1143
|
+
const cacheKey = chunkBXACB3BG_js.buildCacheKey(
|
|
1146
1144
|
src,
|
|
1147
1145
|
clrChange.clrFrom,
|
|
1148
1146
|
clrChange.clrTo,
|
|
1149
1147
|
tolerance,
|
|
1150
1148
|
Boolean(clrChange.clrToTransparent)
|
|
1151
1149
|
);
|
|
1152
|
-
const cached =
|
|
1150
|
+
const cached = chunkBXACB3BG_js.getCachedResult(cacheKey);
|
|
1153
1151
|
const [processedSrc, setProcessedSrc] = React14.useState(cached ?? null);
|
|
1154
1152
|
React14.useEffect(() => {
|
|
1155
|
-
if (
|
|
1156
|
-
setProcessedSrc(
|
|
1153
|
+
if (chunkBXACB3BG_js.getCachedResult(cacheKey)) {
|
|
1154
|
+
setProcessedSrc(chunkBXACB3BG_js.getCachedResult(cacheKey) ?? null);
|
|
1157
1155
|
return;
|
|
1158
1156
|
}
|
|
1159
1157
|
let cancelled = false;
|
|
1160
|
-
|
|
1158
|
+
chunkBXACB3BG_js.applyColorChange(
|
|
1161
1159
|
src,
|
|
1162
1160
|
clrChange.clrFrom,
|
|
1163
1161
|
clrChange.clrTo,
|
|
@@ -1165,7 +1163,7 @@ function ColorChangedImage({
|
|
|
1165
1163
|
Boolean(clrChange.clrToTransparent)
|
|
1166
1164
|
).then((result) => {
|
|
1167
1165
|
if (!cancelled) {
|
|
1168
|
-
|
|
1166
|
+
chunkBXACB3BG_js.setCachedResult(cacheKey, result.dataUrl);
|
|
1169
1167
|
setProcessedSrc(result.dataUrl);
|
|
1170
1168
|
}
|
|
1171
1169
|
return void 0;
|
|
@@ -1196,19 +1194,19 @@ function DuotoneImage({
|
|
|
1196
1194
|
className,
|
|
1197
1195
|
alt
|
|
1198
1196
|
}) {
|
|
1199
|
-
const cacheKey =
|
|
1200
|
-
const cached =
|
|
1197
|
+
const cacheKey = chunkBXACB3BG_js.buildDuotoneCacheKey(src, duotone.color1, duotone.color2);
|
|
1198
|
+
const cached = chunkBXACB3BG_js.getDuotoneCachedResult(cacheKey);
|
|
1201
1199
|
const [processedSrc, setProcessedSrc] = React14.useState(cached ?? null);
|
|
1202
1200
|
React14.useEffect(() => {
|
|
1203
|
-
const cachedResult =
|
|
1201
|
+
const cachedResult = chunkBXACB3BG_js.getDuotoneCachedResult(cacheKey);
|
|
1204
1202
|
if (cachedResult) {
|
|
1205
1203
|
setProcessedSrc(cachedResult);
|
|
1206
1204
|
return;
|
|
1207
1205
|
}
|
|
1208
1206
|
let cancelled = false;
|
|
1209
|
-
|
|
1207
|
+
chunkBXACB3BG_js.applyDuotone(src, duotone.color1, duotone.color2).then((result) => {
|
|
1210
1208
|
if (!cancelled) {
|
|
1211
|
-
|
|
1209
|
+
chunkBXACB3BG_js.setDuotoneCachedResult(cacheKey, result.dataUrl);
|
|
1212
1210
|
setProcessedSrc(result.dataUrl);
|
|
1213
1211
|
}
|
|
1214
1212
|
return void 0;
|
|
@@ -1233,7 +1231,7 @@ function DuotoneImage({
|
|
|
1233
1231
|
);
|
|
1234
1232
|
}
|
|
1235
1233
|
function renderImageEffectDefinitions(element, excludeDuotone = false) {
|
|
1236
|
-
return
|
|
1234
|
+
return chunkBXACB3BG_js.getImageSvgFilters(element).filter((definition) => !excludeDuotone || definition.id !== `duotone-${element.id}`).map((definition) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1237
1235
|
"svg",
|
|
1238
1236
|
{
|
|
1239
1237
|
width: 0,
|
|
@@ -1293,13 +1291,13 @@ function renderImg(el, style, filter, alt, opacity) {
|
|
|
1293
1291
|
] });
|
|
1294
1292
|
}
|
|
1295
1293
|
}
|
|
1296
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-gray-500 bg-gray-100", children:
|
|
1294
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-gray-500 bg-gray-100", children: chunk4SRCC7NB_js.translationsEn["pptx.elementType.image"] });
|
|
1297
1295
|
}
|
|
1298
1296
|
const effectStyles = {
|
|
1299
1297
|
...filter ? { filter } : {},
|
|
1300
1298
|
...opacity !== void 0 ? { opacity } : {}
|
|
1301
1299
|
};
|
|
1302
|
-
if (
|
|
1300
|
+
if (chunkLXUMBK2O_js.isImageTiled(el)) {
|
|
1303
1301
|
const tileSrc = imgSrc(el);
|
|
1304
1302
|
if (!tileSrc) {
|
|
1305
1303
|
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" });
|
|
@@ -1310,18 +1308,18 @@ function renderImg(el, style, filter, alt, opacity) {
|
|
|
1310
1308
|
"div",
|
|
1311
1309
|
{
|
|
1312
1310
|
className: "pointer-events-none select-none w-full h-full",
|
|
1313
|
-
style: { ...
|
|
1311
|
+
style: { ...chunkLXUMBK2O_js.getImageTilingStyle(el), ...effectStyles }
|
|
1314
1312
|
}
|
|
1315
1313
|
)
|
|
1316
1314
|
] });
|
|
1317
1315
|
}
|
|
1318
|
-
const colorWash =
|
|
1316
|
+
const colorWash = chunkBXACB3BG_js.getImageColorWashStyle(
|
|
1319
1317
|
chunkAD3EAEY6_js.isImageLikeElement(el) ? el.imageEffects?.colorWash : void 0
|
|
1320
1318
|
);
|
|
1321
1319
|
const clrChange = "imageEffects" in el ? el.imageEffects?.clrChange : void 0;
|
|
1322
|
-
const duotoneColors =
|
|
1320
|
+
const duotoneColors = chunkLXUMBK2O_js.getDuotoneColors(el);
|
|
1323
1321
|
const useDuotoneCanvas = Boolean(duotoneColors && !clrChange);
|
|
1324
|
-
const filterForImg = useDuotoneCanvas ?
|
|
1322
|
+
const filterForImg = useDuotoneCanvas ? chunkBXACB3BG_js.getImageEffectsFilter(el, { excludeDuotone: true }) : filter;
|
|
1325
1323
|
const canvasEffectStyles = {
|
|
1326
1324
|
...filterForImg ? { filter: filterForImg } : {},
|
|
1327
1325
|
...opacity !== void 0 ? { opacity } : {}
|
|
@@ -1532,7 +1530,7 @@ function ResizeHandles({
|
|
|
1532
1530
|
"button",
|
|
1533
1531
|
{
|
|
1534
1532
|
type: "button",
|
|
1535
|
-
className:
|
|
1533
|
+
className: chunkLXUMBK2O_js.cn("absolute z-10 group", posClass, cursor),
|
|
1536
1534
|
style: peStyle,
|
|
1537
1535
|
onPointerDown: (e) => handleResizePointer(e, handle),
|
|
1538
1536
|
onMouseDown: (e) => {
|
|
@@ -1550,7 +1548,7 @@ function ResizeHandles({
|
|
|
1550
1548
|
"button",
|
|
1551
1549
|
{
|
|
1552
1550
|
type: "button",
|
|
1553
|
-
className:
|
|
1551
|
+
className: chunkLXUMBK2O_js.cn("absolute z-10", posClass, cursor),
|
|
1554
1552
|
style: peStyle,
|
|
1555
1553
|
onPointerDown: (e) => handleResizePointer(e, handle),
|
|
1556
1554
|
onMouseDown: (e) => {
|
|
@@ -1558,7 +1556,7 @@ function ResizeHandles({
|
|
|
1558
1556
|
onResizePointerDown(elementId, e, handle);
|
|
1559
1557
|
},
|
|
1560
1558
|
children: [
|
|
1561
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
1559
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkLXUMBK2O_js.cn(sizeClass, "border border-white bg-primary shadow") }),
|
|
1562
1560
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute -inset-2 max-md:-inset-1" })
|
|
1563
1561
|
]
|
|
1564
1562
|
},
|
|
@@ -1637,10 +1635,10 @@ var ConnectorElementRenderer = React14__default.default.memo(
|
|
|
1637
1635
|
const viewHeight = Math.max(el.height, 1);
|
|
1638
1636
|
const ss = shapeEl?.shapeStyle;
|
|
1639
1637
|
const strokeWidth = Math.max(0, ss?.strokeWidth ?? 2);
|
|
1640
|
-
const strokeColor =
|
|
1641
|
-
const strokePaint =
|
|
1642
|
-
const dashType =
|
|
1643
|
-
const dashArray =
|
|
1638
|
+
const strokeColor = chunkBXACB3BG_js.normalizeHexColor(ss?.strokeColor, chunkLXUMBK2O_js.DEFAULT_STROKE_COLOR);
|
|
1639
|
+
const strokePaint = chunkBXACB3BG_js.colorWithOpacity(strokeColor, ss?.strokeOpacity);
|
|
1640
|
+
const dashType = chunkBXACB3BG_js.normalizeStrokeDashType(ss?.strokeDash);
|
|
1641
|
+
const dashArray = chunkBXACB3BG_js.getSvgStrokeDasharray(
|
|
1644
1642
|
dashType,
|
|
1645
1643
|
Math.max(strokeWidth, 1),
|
|
1646
1644
|
ss?.customDashSegments
|
|
@@ -1651,14 +1649,14 @@ var ConnectorElementRenderer = React14__default.default.memo(
|
|
|
1651
1649
|
const markerSeed = el.id.replace(/[^a-zA-Z0-9_-]/gu, "_");
|
|
1652
1650
|
const startMarkerId = `${markerSeed}-sel-start`;
|
|
1653
1651
|
const endMarkerId = `${markerSeed}-sel-end`;
|
|
1654
|
-
const compoundOffsets =
|
|
1655
|
-
const compoundWidths =
|
|
1656
|
-
const strokeCap =
|
|
1652
|
+
const compoundOffsets = chunkBXACB3BG_js.getCompoundLineOffsets(compoundLine, strokeWidth);
|
|
1653
|
+
const compoundWidths = chunkBXACB3BG_js.getCompoundLineWidths(compoundLine, strokeWidth);
|
|
1654
|
+
const strokeCap = chunkBXACB3BG_js.svgLineCap(ss?.lineCap);
|
|
1657
1655
|
const textEl = chunkAD3EAEY6_js.hasTextProperties(el) ? el : void 0;
|
|
1658
1656
|
const connectorText = textEl?.text?.trim() ?? "";
|
|
1659
1657
|
const connectorTextSegments = textEl?.textSegments;
|
|
1660
1658
|
const connectorTextStyle = textEl?.textStyle;
|
|
1661
|
-
const pathGeometry = shapeEl ?
|
|
1659
|
+
const pathGeometry = shapeEl ? chunkLXUMBK2O_js.getConnectorPathGeometry(shapeEl) : {
|
|
1662
1660
|
pathData: `M 0 0 L ${viewWidth} ${viewHeight}`,
|
|
1663
1661
|
startX: 0,
|
|
1664
1662
|
startY: 0,
|
|
@@ -1667,8 +1665,8 @@ var ConnectorElementRenderer = React14__default.default.memo(
|
|
|
1667
1665
|
};
|
|
1668
1666
|
const hitTargetWidth = Math.max(strokeWidth * 3, 14);
|
|
1669
1667
|
const selColor = selClr === "blue-400" ? "#60a5fa" : "#3b82f6";
|
|
1670
|
-
const lineShadow =
|
|
1671
|
-
const lineGlow =
|
|
1668
|
+
const lineShadow = chunkLXUMBK2O_js.buildLineShadowCss(el);
|
|
1669
|
+
const lineGlow = chunkLXUMBK2O_js.buildLineGlowFilter(el);
|
|
1672
1670
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1673
1671
|
"div",
|
|
1674
1672
|
{
|
|
@@ -1678,9 +1676,9 @@ var ConnectorElementRenderer = React14__default.default.memo(
|
|
|
1678
1676
|
style: {
|
|
1679
1677
|
left: el.x,
|
|
1680
1678
|
top: el.y,
|
|
1681
|
-
width: Math.max(el.width,
|
|
1682
|
-
height: Math.max(el.height,
|
|
1683
|
-
transform:
|
|
1679
|
+
width: Math.max(el.width, chunkLXUMBK2O_js.MIN_ELEMENT_SIZE),
|
|
1680
|
+
height: Math.max(el.height, chunkLXUMBK2O_js.MIN_ELEMENT_SIZE),
|
|
1681
|
+
transform: chunkBXACB3BG_js.getElementTransform(el),
|
|
1684
1682
|
transformOrigin: "center",
|
|
1685
1683
|
background: "transparent",
|
|
1686
1684
|
border: "none",
|
|
@@ -1701,14 +1699,14 @@ var ConnectorElementRenderer = React14__default.default.memo(
|
|
|
1701
1699
|
style: { overflow: "visible", pointerEvents: "none" },
|
|
1702
1700
|
children: [
|
|
1703
1701
|
/* @__PURE__ */ jsxRuntime.jsxs("defs", { children: [
|
|
1704
|
-
|
|
1702
|
+
chunkLXUMBK2O_js.renderConnectorMarker(
|
|
1705
1703
|
startMarkerId,
|
|
1706
1704
|
startArrow,
|
|
1707
1705
|
strokePaint,
|
|
1708
1706
|
ss?.connectorStartArrowWidth,
|
|
1709
1707
|
ss?.connectorStartArrowLength
|
|
1710
1708
|
),
|
|
1711
|
-
|
|
1709
|
+
chunkLXUMBK2O_js.renderConnectorMarker(
|
|
1712
1710
|
endMarkerId,
|
|
1713
1711
|
endArrow,
|
|
1714
1712
|
strokePaint,
|
|
@@ -1920,14 +1918,14 @@ function elementHasTextHyperlink(el) {
|
|
|
1920
1918
|
return Boolean(el.textSegments?.some((segment) => Boolean(segment.style?.hyperlink)));
|
|
1921
1919
|
}
|
|
1922
1920
|
function renderDagDuotoneFilterForElement(el) {
|
|
1923
|
-
if (!
|
|
1921
|
+
if (!chunkLXUMBK2O_js.hasDagDuotoneEffect(el)) {
|
|
1924
1922
|
return null;
|
|
1925
1923
|
}
|
|
1926
1924
|
const duotone = el.shapeStyle?.dagDuotone;
|
|
1927
1925
|
if (!duotone) {
|
|
1928
1926
|
return null;
|
|
1929
1927
|
}
|
|
1930
|
-
return
|
|
1928
|
+
return chunkLXUMBK2O_js.renderDagDuotoneSvgFilter(el.id, duotone.color1, duotone.color2);
|
|
1931
1929
|
}
|
|
1932
1930
|
function getContainerStyle({
|
|
1933
1931
|
el,
|
|
@@ -1944,12 +1942,12 @@ function getContainerStyle({
|
|
|
1944
1942
|
return {
|
|
1945
1943
|
left: isFullscreenMedia ? 0 : el.x,
|
|
1946
1944
|
top: isFullscreenMedia ? 0 : el.y,
|
|
1947
|
-
width: isFullscreenMedia ? "100%" : Math.max(el.width,
|
|
1948
|
-
height: isFullscreenMedia ? "100%" : Math.max(el.height,
|
|
1949
|
-
transform: isFullscreenMedia ? "none" :
|
|
1945
|
+
width: isFullscreenMedia ? "100%" : Math.max(el.width, chunkLXUMBK2O_js.MIN_ELEMENT_SIZE),
|
|
1946
|
+
height: isFullscreenMedia ? "100%" : Math.max(el.height, chunkLXUMBK2O_js.MIN_ELEMENT_SIZE),
|
|
1947
|
+
transform: isFullscreenMedia ? "none" : chunkBXACB3BG_js.getElementTransform(el),
|
|
1950
1948
|
transformOrigin: "center",
|
|
1951
1949
|
overflow: overflowValue,
|
|
1952
|
-
clipPath: isImg && !has3DExtrusion ?
|
|
1950
|
+
clipPath: isImg && !has3DExtrusion ? chunkLXUMBK2O_js.getCropShapeClipPath(el) : void 0,
|
|
1953
1951
|
zIndex: isFullscreenMedia ? 20 : zIndex,
|
|
1954
1952
|
opacity,
|
|
1955
1953
|
visibility: animationState?.visible === false ? "hidden" : "visible",
|
|
@@ -1983,9 +1981,9 @@ function ActionIndicator({
|
|
|
1983
1981
|
function shapeParams(element) {
|
|
1984
1982
|
const style = chunkAD3EAEY6_js.hasShapeProperties(element) ? element.shapeStyle : void 0;
|
|
1985
1983
|
const strokeWidth = Math.max(0, style?.strokeWidth || 0);
|
|
1986
|
-
const strokeColor =
|
|
1987
|
-
const fillColor =
|
|
1988
|
-
const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(
|
|
1984
|
+
const strokeColor = chunkBXACB3BG_js.normalizeHexColor(style?.strokeColor, chunkLXUMBK2O_js.DEFAULT_STROKE_COLOR);
|
|
1985
|
+
const fillColor = chunkBXACB3BG_js.normalizeHexColor(style?.fillColor, chunkLXUMBK2O_js.DEFAULT_FILL_COLOR);
|
|
1986
|
+
const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(chunkBXACB3BG_js.buildCssGradientFromShapeStyle(style) || style?.fillGradient) || style?.fillMode === "pattern" && Boolean(style.fillPatternPreset);
|
|
1989
1987
|
return { hf: hasFill, fc: fillColor, sw: strokeWidth, sc: strokeColor };
|
|
1990
1988
|
}
|
|
1991
1989
|
var Extrusion3DOverlay = React14__default.default.memo(({ data }) => {
|
|
@@ -2104,17 +2102,17 @@ var ElementRenderer = React14__default.default.memo(
|
|
|
2104
2102
|
const chartUpdateHandler = smartArtUpdateHandler;
|
|
2105
2103
|
const { hf, fc, sw, sc } = shapeParams(el);
|
|
2106
2104
|
const elementLocks = el.locks;
|
|
2107
|
-
const isTxt =
|
|
2105
|
+
const isTxt = chunkBXACB3BG_js.isEditableTextElement(el) && !elementLocks?.noTextEdit;
|
|
2108
2106
|
const txtSE = chunkAD3EAEY6_js.hasTextProperties(el) ? el.textStyle : void 0;
|
|
2109
|
-
const ss =
|
|
2110
|
-
const ts =
|
|
2111
|
-
const vs =
|
|
2107
|
+
const ss = chunkLXUMBK2O_js.getShapeVisualStyle(el, hf, fc, sw, sc);
|
|
2108
|
+
const ts = chunkLXUMBK2O_js.getTextStyleForElement(el, chunkLXUMBK2O_js.DEFAULT_TEXT_COLOR);
|
|
2109
|
+
const vs = chunkLXUMBK2O_js.renderVectorShape(el, hf, fc, sw, sc);
|
|
2112
2110
|
const isImg = el.type === "picture" || el.type === "image";
|
|
2113
2111
|
const isModel3D = el.type === "model3d";
|
|
2114
|
-
const isConn =
|
|
2112
|
+
const isConn = chunkLXUMBK2O_js.isConnectorOrLineElement(el);
|
|
2115
2113
|
const shapeStyle3d = chunkAD3EAEY6_js.hasShapeProperties(el) ? el.shapeStyle : void 0;
|
|
2116
2114
|
const extrusionData = React14.useMemo(
|
|
2117
|
-
() =>
|
|
2115
|
+
() => chunkLXUMBK2O_js.build3DExtrusionData(shapeStyle3d?.shape3d, shapeStyle3d?.scene3d, fc, el.width, el.height),
|
|
2118
2116
|
[shapeStyle3d?.shape3d, shapeStyle3d?.scene3d, fc, el.width, el.height]
|
|
2119
2117
|
);
|
|
2120
2118
|
const [isMediaPlaying, setIsMediaPlaying] = React14.useState(false);
|
|
@@ -2154,9 +2152,9 @@ var ElementRenderer = React14__default.default.memo(
|
|
|
2154
2152
|
const cur = effectiveIsInlineEditing ? "cursor-text" : effectiveCanInteract ? elementLocks?.noMove ? "cursor-default" : "cursor-move" : hasAction || isZoom ? "cursor-pointer" : "";
|
|
2155
2153
|
const isPresentationPassive = !effectiveCanInteract;
|
|
2156
2154
|
const isFullscreenMedia = el.type === "media" && Boolean(el.fullScreen) && isPresentationPassive && isMediaPlaying;
|
|
2157
|
-
const ariaRole = isActionable ? "button" :
|
|
2158
|
-
const ariaLabel =
|
|
2159
|
-
const ariaRoleDescription =
|
|
2155
|
+
const ariaRole = isActionable ? "button" : chunkBXACB3BG_js.getAriaRole(el);
|
|
2156
|
+
const ariaLabel = chunkBXACB3BG_js.getAriaLabel(el);
|
|
2157
|
+
const ariaRoleDescription = chunkBXACB3BG_js.getAriaRoleDescription(el);
|
|
2160
2158
|
const isFocusable = effectiveCanInteract || isActionable;
|
|
2161
2159
|
const interactionProps = getElementInteractionProps({
|
|
2162
2160
|
element: el,
|
|
@@ -2178,7 +2176,7 @@ var ElementRenderer = React14__default.default.memo(
|
|
|
2178
2176
|
"aria-roledescription": ariaRoleDescription,
|
|
2179
2177
|
"aria-selected": isSelected ? true : void 0,
|
|
2180
2178
|
tabIndex: isFocusable ? 0 : -1,
|
|
2181
|
-
className:
|
|
2179
|
+
className: chunkLXUMBK2O_js.cn(
|
|
2182
2180
|
"absolute border",
|
|
2183
2181
|
"focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-500",
|
|
2184
2182
|
cur,
|
|
@@ -2211,9 +2209,9 @@ var ElementRenderer = React14__default.default.memo(
|
|
|
2211
2209
|
txtSE,
|
|
2212
2210
|
txtS: ts,
|
|
2213
2211
|
vecShape: vs,
|
|
2214
|
-
imgStyle:
|
|
2215
|
-
imgFilter:
|
|
2216
|
-
imgOpacity:
|
|
2212
|
+
imgStyle: chunkLXUMBK2O_js.getImageRenderStyle(el),
|
|
2213
|
+
imgFilter: chunkBXACB3BG_js.getImageEffectsFilter(el),
|
|
2214
|
+
imgOpacity: chunkBXACB3BG_js.getImageEffectsOpacity(el),
|
|
2217
2215
|
imgAlt: imageAltText,
|
|
2218
2216
|
isTxtEl: isTxt,
|
|
2219
2217
|
media: mediaDataUrls,
|
|
@@ -2279,7 +2277,7 @@ var ElementRenderer = React14__default.default.memo(
|
|
|
2279
2277
|
onResizePointerDown,
|
|
2280
2278
|
onAdjustmentPointerDown,
|
|
2281
2279
|
rotation: el.rotation,
|
|
2282
|
-
nonRotationTransform:
|
|
2280
|
+
nonRotationTransform: chunkBXACB3BG_js.getElementTransformWithoutRotation(el),
|
|
2283
2281
|
onRotate: elementLocks?.noRotation ? void 0 : onRotate
|
|
2284
2282
|
}
|
|
2285
2283
|
)
|
|
@@ -2289,8 +2287,8 @@ var ElementRenderer = React14__default.default.memo(
|
|
|
2289
2287
|
}
|
|
2290
2288
|
);
|
|
2291
2289
|
function renderPressureStroke(pathD, widths, baseWidth, color, opacity, keyPrefix) {
|
|
2292
|
-
const points =
|
|
2293
|
-
const circles =
|
|
2290
|
+
const points = chunkBXACB3BG_js.extractPathPoints(pathD);
|
|
2291
|
+
const circles = chunkBXACB3BG_js.generatePressureCircles(points, widths, {
|
|
2294
2292
|
baseWidth,
|
|
2295
2293
|
minRadius: 0.5,
|
|
2296
2294
|
maxRadius: baseWidth * 1.5
|
|
@@ -2300,8 +2298,8 @@ function renderPressureStroke(pathD, widths, baseWidth, color, opacity, keyPrefi
|
|
|
2300
2298
|
function renderInk(el, options) {
|
|
2301
2299
|
const replay = options?.replay ?? false;
|
|
2302
2300
|
Boolean(el.inkPointPressures) && el.inkPointPressures.length > 0;
|
|
2303
|
-
Boolean(el.inkWidths) && el.inkWidths.length > 1 &&
|
|
2304
|
-
const replayStyles = replay ?
|
|
2301
|
+
Boolean(el.inkWidths) && el.inkWidths.length > 1 && chunkBXACB3BG_js.hasPressureVariation(el.inkWidths);
|
|
2302
|
+
const replayStyles = replay ? chunkBXACB3BG_js.getInkReplayStyles(el, options?.replayConfig) : null;
|
|
2305
2303
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2306
2304
|
"svg",
|
|
2307
2305
|
{
|
|
@@ -2309,18 +2307,18 @@ function renderInk(el, options) {
|
|
|
2309
2307
|
viewBox: `0 0 ${Math.max(el.width, 1)} ${Math.max(el.height, 1)}`,
|
|
2310
2308
|
preserveAspectRatio: "none",
|
|
2311
2309
|
children: [
|
|
2312
|
-
replay && /* @__PURE__ */ jsxRuntime.jsx("style", { children:
|
|
2310
|
+
replay && /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkBXACB3BG_js.INK_REPLAY_KEYFRAMES }),
|
|
2313
2311
|
el.inkPaths.map((d, i) => {
|
|
2314
|
-
const color =
|
|
2315
|
-
const width =
|
|
2316
|
-
const opacity =
|
|
2312
|
+
const color = chunkBXACB3BG_js.resolveInkColor(el.inkColors, i);
|
|
2313
|
+
const width = chunkBXACB3BG_js.resolveInkWidth(el.inkWidths, i);
|
|
2314
|
+
const opacity = chunkBXACB3BG_js.resolveInkOpacity(el.inkOpacities, i);
|
|
2317
2315
|
{
|
|
2318
2316
|
const pointPressures = el.inkPointPressures?.[i];
|
|
2319
|
-
if (pointPressures && pointPressures.length > 1 &&
|
|
2320
|
-
const pointWidths =
|
|
2317
|
+
if (pointPressures && pointPressures.length > 1 && chunkBXACB3BG_js.hasPressureVariation(pointPressures)) {
|
|
2318
|
+
const pointWidths = chunkBXACB3BG_js.pressuresToWidths(pointPressures, width);
|
|
2321
2319
|
return /* @__PURE__ */ jsxRuntime.jsx("g", { children: renderPressureStroke(d, pointWidths, width, color, opacity, `${el.id}-ink-${i}`) }, `${el.id}-ink-${i}`);
|
|
2322
2320
|
}
|
|
2323
|
-
if (el.inkWidths && el.inkWidths.length > 1 &&
|
|
2321
|
+
if (el.inkWidths && el.inkWidths.length > 1 && chunkBXACB3BG_js.hasPressureVariation(el.inkWidths)) {
|
|
2324
2322
|
return /* @__PURE__ */ jsxRuntime.jsx("g", { children: renderPressureStroke(d, el.inkWidths, width, color, opacity, `${el.id}-ink-${i}`) }, `${el.id}-ink-${i}`);
|
|
2325
2323
|
}
|
|
2326
2324
|
}
|
|
@@ -2355,10 +2353,10 @@ function renderInk(el, options) {
|
|
|
2355
2353
|
function renderGroup(children) {
|
|
2356
2354
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative w-full h-full pointer-events-none", children: children.map((c, childIndex) => {
|
|
2357
2355
|
const { hf, fc, sw, sc } = shapeParams(c);
|
|
2358
|
-
const ss =
|
|
2359
|
-
const vs =
|
|
2360
|
-
const ts =
|
|
2361
|
-
const isTxt =
|
|
2356
|
+
const ss = chunkLXUMBK2O_js.getShapeVisualStyle(c, hf, fc, sw, sc);
|
|
2357
|
+
const vs = chunkLXUMBK2O_js.renderVectorShape(c, hf, fc, sw, sc);
|
|
2358
|
+
const ts = chunkLXUMBK2O_js.getTextStyleForElement(c, chunkLXUMBK2O_js.DEFAULT_TEXT_COLOR);
|
|
2359
|
+
const isTxt = chunkBXACB3BG_js.isEditableTextElement(c);
|
|
2362
2360
|
const isI = c.type === "picture" || c.type === "image";
|
|
2363
2361
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2364
2362
|
"div",
|
|
@@ -2367,12 +2365,12 @@ function renderGroup(children) {
|
|
|
2367
2365
|
style: {
|
|
2368
2366
|
left: c.x,
|
|
2369
2367
|
top: c.y,
|
|
2370
|
-
width: Math.max(c.width,
|
|
2371
|
-
height: Math.max(c.height,
|
|
2372
|
-
transform:
|
|
2368
|
+
width: Math.max(c.width, chunkLXUMBK2O_js.MIN_ELEMENT_SIZE),
|
|
2369
|
+
height: Math.max(c.height, chunkLXUMBK2O_js.MIN_ELEMENT_SIZE),
|
|
2370
|
+
transform: chunkBXACB3BG_js.getElementTransform(c),
|
|
2373
2371
|
transformOrigin: "center",
|
|
2374
2372
|
overflow: isI ? "hidden" : void 0,
|
|
2375
|
-
clipPath: isI ?
|
|
2373
|
+
clipPath: isI ? chunkLXUMBK2O_js.getCropShapeClipPath(c) : void 0,
|
|
2376
2374
|
...ss,
|
|
2377
2375
|
// Explicit z-index preserves document order stacking within the
|
|
2378
2376
|
// group: later children in the array (= later in p:grpSp XML)
|
|
@@ -2380,19 +2378,19 @@ function renderGroup(children) {
|
|
|
2380
2378
|
// Placed after ...ss to ensure it is never overwritten.
|
|
2381
2379
|
zIndex: childIndex
|
|
2382
2380
|
},
|
|
2383
|
-
children: isI && ("svgData" in c && c.svgData || "imageData" in c && c.imageData) ?
|
|
2381
|
+
children: isI && ("svgData" in c && c.svgData || "imageData" in c && c.imageData) ? chunkLXUMBK2O_js.isImageTiled(c) ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2384
2382
|
"div",
|
|
2385
2383
|
{
|
|
2386
2384
|
className: "pointer-events-none select-none w-full h-full",
|
|
2387
|
-
style:
|
|
2385
|
+
style: chunkLXUMBK2O_js.getImageTilingStyle(c)
|
|
2388
2386
|
}
|
|
2389
2387
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
2390
2388
|
"img",
|
|
2391
2389
|
{
|
|
2392
2390
|
src: "svgData" in c && c.svgData ? c.svgData : c.imageData,
|
|
2393
|
-
alt:
|
|
2391
|
+
alt: chunk4SRCC7NB_js.translationsEn["pptx.ink.groupChildAlt"],
|
|
2394
2392
|
className: "pointer-events-none select-none",
|
|
2395
|
-
style:
|
|
2393
|
+
style: chunkLXUMBK2O_js.getImageRenderStyle(c),
|
|
2396
2394
|
draggable: false
|
|
2397
2395
|
}
|
|
2398
2396
|
) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
@@ -2402,7 +2400,7 @@ function renderGroup(children) {
|
|
|
2402
2400
|
{
|
|
2403
2401
|
className: "relative z-10 w-full h-full pointer-events-none whitespace-pre-wrap break-words leading-[1.3]",
|
|
2404
2402
|
style: ts,
|
|
2405
|
-
children:
|
|
2403
|
+
children: chunkLXUMBK2O_js.renderTextSegments(c, chunkLXUMBK2O_js.DEFAULT_TEXT_COLOR)
|
|
2406
2404
|
}
|
|
2407
2405
|
) : null
|
|
2408
2406
|
] })
|
|
@@ -2415,7 +2413,7 @@ function renderContentPart(el, options) {
|
|
|
2415
2413
|
if (el.inkStrokes && el.inkStrokes.length > 0) {
|
|
2416
2414
|
const replay = options?.replay ?? false;
|
|
2417
2415
|
const pressureSensitive = options?.pressureSensitive ?? true;
|
|
2418
|
-
const replayStyles = replay ?
|
|
2416
|
+
const replayStyles = replay ? chunkBXACB3BG_js.getContentPartReplayStyles(el.inkStrokes, options?.replayConfig) : null;
|
|
2419
2417
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2420
2418
|
"svg",
|
|
2421
2419
|
{
|
|
@@ -2423,10 +2421,10 @@ function renderContentPart(el, options) {
|
|
|
2423
2421
|
viewBox: `0 0 ${Math.max(el.width, 1)} ${Math.max(el.height, 1)}`,
|
|
2424
2422
|
preserveAspectRatio: "none",
|
|
2425
2423
|
children: [
|
|
2426
|
-
replay && /* @__PURE__ */ jsxRuntime.jsx("style", { children:
|
|
2424
|
+
replay && /* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkBXACB3BG_js.INK_REPLAY_KEYFRAMES }),
|
|
2427
2425
|
el.inkStrokes.map((stroke, i) => {
|
|
2428
|
-
if (pressureSensitive && stroke.pressures && stroke.pressures.length > 1 &&
|
|
2429
|
-
const pointWidths =
|
|
2426
|
+
if (pressureSensitive && stroke.pressures && stroke.pressures.length > 1 && chunkBXACB3BG_js.hasPressureVariation(stroke.pressures)) {
|
|
2427
|
+
const pointWidths = chunkBXACB3BG_js.pressuresToWidths(stroke.pressures, stroke.width);
|
|
2430
2428
|
return /* @__PURE__ */ jsxRuntime.jsx("g", { children: renderPressureStroke(
|
|
2431
2429
|
stroke.path,
|
|
2432
2430
|
pointWidths,
|
|
@@ -2464,7 +2462,7 @@ function renderContentPart(el, options) {
|
|
|
2464
2462
|
}
|
|
2465
2463
|
);
|
|
2466
2464
|
}
|
|
2467
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children:
|
|
2465
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunk4SRCC7NB_js.translationsEn["pptx.ink.contentPartFallback"] });
|
|
2468
2466
|
}
|
|
2469
2467
|
function ExcelIcon(color, size = 32) {
|
|
2470
2468
|
return /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", children: [
|
|
@@ -2522,7 +2520,7 @@ function PdfIcon(color, size = 32) {
|
|
|
2522
2520
|
fill: "none"
|
|
2523
2521
|
}
|
|
2524
2522
|
),
|
|
2525
|
-
/* @__PURE__ */ jsxRuntime.jsx("text", { x: "12", y: "14", textAnchor: "middle", fill: color, fontSize: "7", fontWeight: "bold", children:
|
|
2523
|
+
/* @__PURE__ */ jsxRuntime.jsx("text", { x: "12", y: "14", textAnchor: "middle", fill: color, fontSize: "7", fontWeight: "bold", children: chunk4SRCC7NB_js.translationsEn["pptx.file.pdf"] })
|
|
2526
2524
|
] });
|
|
2527
2525
|
}
|
|
2528
2526
|
function VisioIcon(color, size = 32) {
|
|
@@ -2638,16 +2636,16 @@ function getOleIcon(type, color, size = 32) {
|
|
|
2638
2636
|
}
|
|
2639
2637
|
}
|
|
2640
2638
|
function getOleAriaLabel(el) {
|
|
2641
|
-
const oleType =
|
|
2642
|
-
const typeLabel =
|
|
2639
|
+
const oleType = chunkBXACB3BG_js.resolveOleType(el);
|
|
2640
|
+
const typeLabel = chunkBXACB3BG_js.getOleTypeLabel(oleType);
|
|
2643
2641
|
if (el.fileName) {
|
|
2644
2642
|
return `${typeLabel}: ${el.fileName}`;
|
|
2645
2643
|
}
|
|
2646
2644
|
return typeLabel;
|
|
2647
2645
|
}
|
|
2648
2646
|
function renderOleBadge(oleType) {
|
|
2649
|
-
const color =
|
|
2650
|
-
const shortLabel =
|
|
2647
|
+
const color = chunkBXACB3BG_js.getOleTypeColor(oleType);
|
|
2648
|
+
const shortLabel = chunkBXACB3BG_js.getOleBadgeLabel(oleType);
|
|
2651
2649
|
return /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "24", height: "24", viewBox: "0 0 24 24", className: "absolute bottom-1 right-1 z-10", children: [
|
|
2652
2650
|
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "2", y: "2", width: "20", height: "20", rx: "3", fill: color }),
|
|
2653
2651
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -2739,11 +2737,11 @@ function InlineTextEditor({
|
|
|
2739
2737
|
mountedRef.current = true;
|
|
2740
2738
|
return;
|
|
2741
2739
|
}
|
|
2742
|
-
const pending =
|
|
2740
|
+
const pending = chunkBXACB3BG_js.getPendingSelectionRestore();
|
|
2743
2741
|
if (!pending || !editorRef.current) {
|
|
2744
2742
|
return;
|
|
2745
2743
|
}
|
|
2746
|
-
|
|
2744
|
+
chunkBXACB3BG_js.restoreSegmentSelection(
|
|
2747
2745
|
editorRef.current,
|
|
2748
2746
|
pending.startSegIdx,
|
|
2749
2747
|
pending.startOffset,
|
|
@@ -2751,8 +2749,8 @@ function InlineTextEditor({
|
|
|
2751
2749
|
pending.endOffset
|
|
2752
2750
|
);
|
|
2753
2751
|
});
|
|
2754
|
-
const warpStyle =
|
|
2755
|
-
const compensationTransform =
|
|
2752
|
+
const warpStyle = chunkLXUMBK2O_js.getTextWarpStyle(textStyleRaw);
|
|
2753
|
+
const compensationTransform = chunkBXACB3BG_js.getTextCompensationTransform(element);
|
|
2756
2754
|
const warpTransform = warpStyle?.transform;
|
|
2757
2755
|
const mergedTransform = [compensationTransform, warpTransform].filter(Boolean).join(" ") || void 0;
|
|
2758
2756
|
const wrapperStyle = {
|
|
@@ -2827,7 +2825,7 @@ function InlineTextEditor({
|
|
|
2827
2825
|
const text = e.clipboardData.getData("text/plain");
|
|
2828
2826
|
document.execCommand("insertText", false, text);
|
|
2829
2827
|
},
|
|
2830
|
-
children: seed.hasRichSegments ?
|
|
2828
|
+
children: seed.hasRichSegments ? chunkLXUMBK2O_js.renderTextSegments(element, chunkLXUMBK2O_js.DEFAULT_TEXT_COLOR) : seed.initialText
|
|
2831
2829
|
}
|
|
2832
2830
|
);
|
|
2833
2831
|
}
|
|
@@ -2837,7 +2835,7 @@ function FailedToLoad() {
|
|
|
2837
2835
|
var LazyModel3DScene = React14__default.default.lazy(
|
|
2838
2836
|
async () => {
|
|
2839
2837
|
try {
|
|
2840
|
-
return await import('./Model3DScene-
|
|
2838
|
+
return await import('./Model3DScene-BLUWY36S.js');
|
|
2841
2839
|
} catch {
|
|
2842
2840
|
return { default: FailedToLoad };
|
|
2843
2841
|
}
|
|
@@ -2982,11 +2980,11 @@ function buildEmbedInfo(el) {
|
|
|
2982
2980
|
const canDownload = Boolean(el.oleEmbeddedData);
|
|
2983
2981
|
return {
|
|
2984
2982
|
fileName: el.oleEmbeddedFileName ?? el.fileName,
|
|
2985
|
-
readableSize:
|
|
2983
|
+
readableSize: chunkBXACB3BG_js.formatBytes(el.oleEmbeddedByteSize),
|
|
2986
2984
|
progId: el.oleProgId,
|
|
2987
|
-
typeLabel:
|
|
2985
|
+
typeLabel: chunkBXACB3BG_js.getOleTypeLabel(chunkBXACB3BG_js.resolveOleType(el)),
|
|
2988
2986
|
canDownload,
|
|
2989
|
-
canOpenInBrowser: canDownload &&
|
|
2987
|
+
canOpenInBrowser: canDownload && chunkBXACB3BG_js.isBrowserOpenableMime(el.oleEmbeddedMimeType)
|
|
2990
2988
|
};
|
|
2991
2989
|
}
|
|
2992
2990
|
function buildTooltip(info) {
|
|
@@ -3036,7 +3034,7 @@ function OleActionFooter({ el, info }) {
|
|
|
3036
3034
|
"button",
|
|
3037
3035
|
{
|
|
3038
3036
|
type: "button",
|
|
3039
|
-
onClick: () =>
|
|
3037
|
+
onClick: () => chunkBXACB3BG_js.openUrlInNewTab(el.oleEmbeddedData),
|
|
3040
3038
|
className: "rounded px-1.5 py-0.5 bg-white/15 hover:bg-white/25 focus-visible:outline focus-visible:outline-1 focus-visible:outline-white",
|
|
3041
3039
|
title: `Open ${downloadName} in a new tab`,
|
|
3042
3040
|
children: t("pptx.ole.open")
|
|
@@ -3048,7 +3046,7 @@ function OleActionFooter({ el, info }) {
|
|
|
3048
3046
|
);
|
|
3049
3047
|
}
|
|
3050
3048
|
function OleRenderer({ element: el }) {
|
|
3051
|
-
const oleType =
|
|
3049
|
+
const oleType = chunkBXACB3BG_js.resolveOleType(el);
|
|
3052
3050
|
const ariaLabel = getOleAriaLabel(el);
|
|
3053
3051
|
const info = buildEmbedInfo(el);
|
|
3054
3052
|
const tooltip = buildTooltip(info);
|
|
@@ -3076,8 +3074,8 @@ function OleRenderer({ element: el }) {
|
|
|
3076
3074
|
}
|
|
3077
3075
|
);
|
|
3078
3076
|
}
|
|
3079
|
-
const color =
|
|
3080
|
-
const label =
|
|
3077
|
+
const color = chunkBXACB3BG_js.getOleTypeColor(oleType);
|
|
3078
|
+
const label = chunkBXACB3BG_js.getOleTypeLabel(oleType);
|
|
3081
3079
|
const displayName = info.fileName ?? label;
|
|
3082
3080
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3083
3081
|
"div",
|
|
@@ -3222,7 +3220,7 @@ function useSmartArtHoverState(containerRef) {
|
|
|
3222
3220
|
cancelPendingHide();
|
|
3223
3221
|
setHoveredNodeId(nodeEl.getAttribute(NODE_ID_ATTR));
|
|
3224
3222
|
setHoveredNodeRect(
|
|
3225
|
-
|
|
3223
|
+
chunkBXACB3BG_js.computeInlineEditorRect(
|
|
3226
3224
|
nodeEl.getBoundingClientRect(),
|
|
3227
3225
|
container.getBoundingClientRect()
|
|
3228
3226
|
)
|
|
@@ -3281,7 +3279,7 @@ function SmartArtEditableLayer({
|
|
|
3281
3279
|
const textRect = textEl?.getBoundingClientRect();
|
|
3282
3280
|
const hasTextRect = textRect !== void 0 && textRect.width > 0 && textRect.height > 0;
|
|
3283
3281
|
const sourceRect = hasTextRect ? textRect : nodeEl.getBoundingClientRect();
|
|
3284
|
-
const rect =
|
|
3282
|
+
const rect = chunkBXACB3BG_js.computeInlineEditorRect(sourceRect, container.getBoundingClientRect());
|
|
3285
3283
|
const paddedRect = {
|
|
3286
3284
|
left: rect.left - EDITOR_PADDING,
|
|
3287
3285
|
top: rect.top - EDITOR_PADDING,
|
|
@@ -3298,7 +3296,7 @@ function SmartArtEditableLayer({
|
|
|
3298
3296
|
if (!canEdit) {
|
|
3299
3297
|
return children;
|
|
3300
3298
|
}
|
|
3301
|
-
const initialText = edit ?
|
|
3299
|
+
const initialText = edit ? chunkBXACB3BG_js.findSmartArtNodeText(smartArtData, edit.nodeId) ?? "" : "";
|
|
3302
3300
|
const showStyleBar = !edit && hoveredNodeId !== null && hoveredNodeRect !== null && palette !== void 0 && onChangeNodeStyle !== void 0;
|
|
3303
3301
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3304
3302
|
"div",
|
|
@@ -3397,8 +3395,8 @@ function DrawingShapeRenderer({
|
|
|
3397
3395
|
}
|
|
3398
3396
|
const drawingW = maxX - minX || 1;
|
|
3399
3397
|
const drawingH = maxY - minY || 1;
|
|
3400
|
-
const shadow =
|
|
3401
|
-
const sw =
|
|
3398
|
+
const shadow = chunkLXUMBK2O_js.styleShadow(style);
|
|
3399
|
+
const sw = chunkLXUMBK2O_js.styleStroke(style);
|
|
3402
3400
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3403
3401
|
"svg",
|
|
3404
3402
|
{
|
|
@@ -3407,7 +3405,7 @@ function DrawingShapeRenderer({
|
|
|
3407
3405
|
preserveAspectRatio: "xMidYMid meet",
|
|
3408
3406
|
"data-testid": "smartart-drawing-shapes",
|
|
3409
3407
|
children: shapes.map((shape, i) => {
|
|
3410
|
-
const fill = shape.fillColor ??
|
|
3408
|
+
const fill = shape.fillColor ?? chunkLXUMBK2O_js.colour(i, palette);
|
|
3411
3409
|
const relX = shape.x - minX;
|
|
3412
3410
|
const relY = shape.y - minY;
|
|
3413
3411
|
const rx = shape.shapeType === "roundRect" ? Math.min(shape.width, shape.height) * 0.1 : 0;
|
|
@@ -3416,10 +3414,10 @@ function DrawingShapeRenderer({
|
|
|
3416
3414
|
const rotation = shape.rotation ? `rotate(${shape.rotation} ${relX + shape.width / 2} ${relY + shape.height / 2})` : void 0;
|
|
3417
3415
|
const strokeCol = shape.strokeColor ?? (sw > 0 ? "rgba(255,255,255,0.3)" : "none");
|
|
3418
3416
|
const strokeW = shape.strokeWidth ?? sw;
|
|
3419
|
-
const fontSize = shape.fontSize ??
|
|
3420
|
-
const nodeId = nodes ?
|
|
3417
|
+
const fontSize = shape.fontSize ?? chunkLXUMBK2O_js.fitFontSize(shape.text ?? "", shape.width * 0.85, shape.height, 14);
|
|
3418
|
+
const nodeId = nodes ? chunkBXACB3BG_js.resolveDrawingShapeNodeId(shape, i, shapes, nodes) : void 0;
|
|
3421
3419
|
const nodeLabel = nodeId ? nodeLabels?.get(nodeId) : void 0;
|
|
3422
|
-
const groupProps = nodeId ?
|
|
3420
|
+
const groupProps = nodeId ? chunkLXUMBK2O_js.smartArtNodeGroupProps(nodeId, shadow, nodeLabel) : { style: { filter: shadow } };
|
|
3423
3421
|
return /* @__PURE__ */ jsxRuntime.jsxs("g", { ...groupProps, children: [
|
|
3424
3422
|
nodeLabel ? /* @__PURE__ */ jsxRuntime.jsx("title", { children: nodeLabel }) : null,
|
|
3425
3423
|
isEllipse ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3437,7 +3435,7 @@ function DrawingShapeRenderer({
|
|
|
3437
3435
|
) : isChevron ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
3438
3436
|
"polygon",
|
|
3439
3437
|
{
|
|
3440
|
-
points:
|
|
3438
|
+
points: chunkLXUMBK2O_js.chevronPoints(relX, relY, shape.width, shape.height),
|
|
3441
3439
|
fill,
|
|
3442
3440
|
stroke: strokeCol,
|
|
3443
3441
|
strokeWidth: strokeW,
|
|
@@ -3458,11 +3456,11 @@ function DrawingShapeRenderer({
|
|
|
3458
3456
|
}
|
|
3459
3457
|
),
|
|
3460
3458
|
shape.text ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
3461
|
-
|
|
3459
|
+
chunkLXUMBK2O_js.SmartArtNodeText,
|
|
3462
3460
|
{
|
|
3463
3461
|
x: relX + shape.width / 2,
|
|
3464
3462
|
y: relY + shape.height / 2,
|
|
3465
|
-
text:
|
|
3463
|
+
text: chunkLXUMBK2O_js.truncate(shape.text, 40),
|
|
3466
3464
|
fill: shape.fontColor ?? "white",
|
|
3467
3465
|
fontSize,
|
|
3468
3466
|
className: "pointer-events-none"
|
|
@@ -3478,7 +3476,7 @@ function DrawingShapeRenderer({
|
|
|
3478
3476
|
function resolveNodeStyle(node, index, palette) {
|
|
3479
3477
|
const style = node.style;
|
|
3480
3478
|
return {
|
|
3481
|
-
fill: style?.fillColor ??
|
|
3479
|
+
fill: style?.fillColor ?? chunkLXUMBK2O_js.colour(index, palette),
|
|
3482
3480
|
fontColor: style?.fontColor ?? "white",
|
|
3483
3481
|
fontWeight: style?.bold ? 700 : void 0,
|
|
3484
3482
|
fontStyle: style?.italic ? "italic" : void 0,
|
|
@@ -3500,8 +3498,8 @@ function ListRenderer({
|
|
|
3500
3498
|
const itemH = (usableH - gap * (nodes.length - 1)) / nodes.length;
|
|
3501
3499
|
const itemW = w - pad * 2;
|
|
3502
3500
|
const rx = Math.min(6, itemH * 0.15);
|
|
3503
|
-
const shadow =
|
|
3504
|
-
const sw =
|
|
3501
|
+
const shadow = chunkLXUMBK2O_js.styleShadow(style);
|
|
3502
|
+
const sw = chunkLXUMBK2O_js.styleStroke(style);
|
|
3505
3503
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3506
3504
|
"svg",
|
|
3507
3505
|
{
|
|
@@ -3511,13 +3509,13 @@ function ListRenderer({
|
|
|
3511
3509
|
"data-testid": "smartart-list",
|
|
3512
3510
|
children: nodes.map((node, i) => {
|
|
3513
3511
|
const y = pad + i * (itemH + gap);
|
|
3514
|
-
const fontSize =
|
|
3512
|
+
const fontSize = chunkLXUMBK2O_js.fitFontSize(node.text, itemW * 0.9, itemH, 12);
|
|
3515
3513
|
const ns = resolveNodeStyle(node, i, palette);
|
|
3516
3514
|
const label = nodeLabels?.get(node.id);
|
|
3517
3515
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3518
3516
|
"g",
|
|
3519
3517
|
{
|
|
3520
|
-
...
|
|
3518
|
+
...chunkLXUMBK2O_js.smartArtNodeGroupProps(node.id, shadow, label),
|
|
3521
3519
|
children: [
|
|
3522
3520
|
label ? /* @__PURE__ */ jsxRuntime.jsx("title", { children: label }) : null,
|
|
3523
3521
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3529,17 +3527,17 @@ function ListRenderer({
|
|
|
3529
3527
|
height: itemH,
|
|
3530
3528
|
rx,
|
|
3531
3529
|
fill: ns.fill,
|
|
3532
|
-
opacity:
|
|
3530
|
+
opacity: chunkLXUMBK2O_js.nodeOpacity(i, nodes.length, style),
|
|
3533
3531
|
stroke: ns.strokeColor ?? (sw > 0 ? "rgba(255,255,255,0.3)" : "none"),
|
|
3534
3532
|
strokeWidth: sw
|
|
3535
3533
|
}
|
|
3536
3534
|
),
|
|
3537
3535
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3538
|
-
|
|
3536
|
+
chunkLXUMBK2O_js.SmartArtNodeText,
|
|
3539
3537
|
{
|
|
3540
3538
|
x: pad + itemW / 2,
|
|
3541
3539
|
y: y + itemH / 2,
|
|
3542
|
-
text:
|
|
3540
|
+
text: chunkLXUMBK2O_js.truncate(node.text, 40),
|
|
3543
3541
|
fill: ns.fontColor,
|
|
3544
3542
|
fontWeight: ns.fontWeight,
|
|
3545
3543
|
fontStyle: ns.fontStyle,
|
|
@@ -3571,8 +3569,8 @@ function ProcessRenderer({
|
|
|
3571
3569
|
const itemW = (usableW - gap * (nodes.length - 1)) / nodes.length;
|
|
3572
3570
|
const itemH = Math.min(h - pad * 2, h * 0.6);
|
|
3573
3571
|
const yMid = h / 2;
|
|
3574
|
-
const shadow =
|
|
3575
|
-
const sw =
|
|
3572
|
+
const shadow = chunkLXUMBK2O_js.styleShadow(style);
|
|
3573
|
+
const sw = chunkLXUMBK2O_js.styleStroke(style);
|
|
3576
3574
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3577
3575
|
"svg",
|
|
3578
3576
|
{
|
|
@@ -3586,13 +3584,13 @@ function ProcessRenderer({
|
|
|
3586
3584
|
const isFirst = i === 0;
|
|
3587
3585
|
const isLast = i === nodes.length - 1;
|
|
3588
3586
|
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}`;
|
|
3589
|
-
const fontSize =
|
|
3587
|
+
const fontSize = chunkLXUMBK2O_js.fitFontSize(node.text, itemW * 0.7, itemH, 12);
|
|
3590
3588
|
const ns = resolveNodeStyle(node, i, palette);
|
|
3591
3589
|
const label = nodeLabels?.get(node.id);
|
|
3592
3590
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3593
3591
|
"g",
|
|
3594
3592
|
{
|
|
3595
|
-
...
|
|
3593
|
+
...chunkLXUMBK2O_js.smartArtNodeGroupProps(node.id, shadow, label),
|
|
3596
3594
|
children: [
|
|
3597
3595
|
label ? /* @__PURE__ */ jsxRuntime.jsx("title", { children: label }) : null,
|
|
3598
3596
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3600,17 +3598,17 @@ function ProcessRenderer({
|
|
|
3600
3598
|
{
|
|
3601
3599
|
points,
|
|
3602
3600
|
fill: ns.fill,
|
|
3603
|
-
opacity:
|
|
3601
|
+
opacity: chunkLXUMBK2O_js.nodeOpacity(i, nodes.length, style),
|
|
3604
3602
|
stroke: ns.strokeColor ?? (sw > 0 ? "rgba(255,255,255,0.3)" : "none"),
|
|
3605
3603
|
strokeWidth: sw
|
|
3606
3604
|
}
|
|
3607
3605
|
),
|
|
3608
3606
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3609
|
-
|
|
3607
|
+
chunkLXUMBK2O_js.SmartArtNodeText,
|
|
3610
3608
|
{
|
|
3611
3609
|
x: x + itemW / 2,
|
|
3612
3610
|
y: yMid,
|
|
3613
|
-
text:
|
|
3611
|
+
text: chunkLXUMBK2O_js.truncate(node.text, 25),
|
|
3614
3612
|
fill: ns.fontColor,
|
|
3615
3613
|
fontWeight: ns.fontWeight,
|
|
3616
3614
|
fontStyle: ns.fontStyle,
|
|
@@ -3640,8 +3638,8 @@ function CycleRenderer({
|
|
|
3640
3638
|
const cy = h / 2;
|
|
3641
3639
|
const radius = size * 0.35;
|
|
3642
3640
|
const nodeR = Math.max(size * 0.06, Math.min(size * 0.12, 200 / nodes.length));
|
|
3643
|
-
const shadow =
|
|
3644
|
-
const sw =
|
|
3641
|
+
const shadow = chunkLXUMBK2O_js.styleShadow(style);
|
|
3642
|
+
const sw = chunkLXUMBK2O_js.styleStroke(style);
|
|
3645
3643
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3646
3644
|
"svg",
|
|
3647
3645
|
{
|
|
@@ -3680,13 +3678,13 @@ function CycleRenderer({
|
|
|
3680
3678
|
const angle = i / nodes.length * Math.PI * 2 - Math.PI / 2;
|
|
3681
3679
|
const nx = cx + radius * Math.cos(angle);
|
|
3682
3680
|
const ny = cy + radius * Math.sin(angle);
|
|
3683
|
-
const fontSize =
|
|
3681
|
+
const fontSize = chunkLXUMBK2O_js.fitFontSize(node.text, nodeR * 1.4, nodeR * 2, 11);
|
|
3684
3682
|
const ns = resolveNodeStyle(node, i, palette);
|
|
3685
3683
|
const label = nodeLabels?.get(node.id);
|
|
3686
3684
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3687
3685
|
"g",
|
|
3688
3686
|
{
|
|
3689
|
-
...
|
|
3687
|
+
...chunkLXUMBK2O_js.smartArtNodeGroupProps(node.id, shadow, label),
|
|
3690
3688
|
children: [
|
|
3691
3689
|
label ? /* @__PURE__ */ jsxRuntime.jsx("title", { children: label }) : null,
|
|
3692
3690
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3696,17 +3694,17 @@ function CycleRenderer({
|
|
|
3696
3694
|
cy: ny,
|
|
3697
3695
|
r: nodeR,
|
|
3698
3696
|
fill: ns.fill,
|
|
3699
|
-
opacity:
|
|
3697
|
+
opacity: chunkLXUMBK2O_js.nodeOpacity(i, nodes.length, style),
|
|
3700
3698
|
stroke: ns.strokeColor ?? (sw > 0 ? "rgba(255,255,255,0.3)" : "none"),
|
|
3701
3699
|
strokeWidth: sw
|
|
3702
3700
|
}
|
|
3703
3701
|
),
|
|
3704
3702
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3705
|
-
|
|
3703
|
+
chunkLXUMBK2O_js.SmartArtNodeText,
|
|
3706
3704
|
{
|
|
3707
3705
|
x: nx,
|
|
3708
3706
|
y: ny,
|
|
3709
|
-
text:
|
|
3707
|
+
text: chunkLXUMBK2O_js.truncate(node.text, 20),
|
|
3710
3708
|
fill: ns.fontColor,
|
|
3711
3709
|
fontWeight: ns.fontWeight,
|
|
3712
3710
|
fontStyle: ns.fontStyle,
|
|
@@ -3741,8 +3739,8 @@ function MatrixRenderer({
|
|
|
3741
3739
|
const cellW = (usableW - gap * (cols - 1)) / cols;
|
|
3742
3740
|
const cellH = (usableH - gap * (rows - 1)) / rows;
|
|
3743
3741
|
const rx = Math.min(6, Math.min(cellW, cellH) * 0.1);
|
|
3744
|
-
const shadow =
|
|
3745
|
-
const sw =
|
|
3742
|
+
const shadow = chunkLXUMBK2O_js.styleShadow(style);
|
|
3743
|
+
const sw = chunkLXUMBK2O_js.styleStroke(style);
|
|
3746
3744
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3747
3745
|
"svg",
|
|
3748
3746
|
{
|
|
@@ -3755,13 +3753,13 @@ function MatrixRenderer({
|
|
|
3755
3753
|
const row = Math.floor(i / cols);
|
|
3756
3754
|
const x = pad + col * (cellW + gap);
|
|
3757
3755
|
const y = pad + row * (cellH + gap);
|
|
3758
|
-
const fontSize =
|
|
3756
|
+
const fontSize = chunkLXUMBK2O_js.fitFontSize(node.text, cellW * 0.85, cellH, 12);
|
|
3759
3757
|
const ns = resolveNodeStyle(node, i, palette);
|
|
3760
3758
|
const label = nodeLabels?.get(node.id);
|
|
3761
3759
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3762
3760
|
"g",
|
|
3763
3761
|
{
|
|
3764
|
-
...
|
|
3762
|
+
...chunkLXUMBK2O_js.smartArtNodeGroupProps(node.id, shadow, label),
|
|
3765
3763
|
children: [
|
|
3766
3764
|
label ? /* @__PURE__ */ jsxRuntime.jsx("title", { children: label }) : null,
|
|
3767
3765
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3773,17 +3771,17 @@ function MatrixRenderer({
|
|
|
3773
3771
|
height: cellH,
|
|
3774
3772
|
rx,
|
|
3775
3773
|
fill: ns.fill,
|
|
3776
|
-
opacity:
|
|
3774
|
+
opacity: chunkLXUMBK2O_js.nodeOpacity(i, nodes.length, style),
|
|
3777
3775
|
stroke: ns.strokeColor ?? (sw > 0 ? "rgba(255,255,255,0.3)" : "none"),
|
|
3778
3776
|
strokeWidth: sw
|
|
3779
3777
|
}
|
|
3780
3778
|
),
|
|
3781
3779
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3782
|
-
|
|
3780
|
+
chunkLXUMBK2O_js.SmartArtNodeText,
|
|
3783
3781
|
{
|
|
3784
3782
|
x: x + cellW / 2,
|
|
3785
3783
|
y: y + cellH / 2,
|
|
3786
|
-
text:
|
|
3784
|
+
text: chunkLXUMBK2O_js.truncate(node.text, 30),
|
|
3787
3785
|
fill: ns.fontColor,
|
|
3788
3786
|
fontWeight: ns.fontWeight ?? 500,
|
|
3789
3787
|
fontStyle: ns.fontStyle,
|
|
@@ -3812,8 +3810,8 @@ function PyramidRenderer({
|
|
|
3812
3810
|
const usableH = h - pad * 2;
|
|
3813
3811
|
const bandH = (usableH - gap * (nodes.length - 1)) / nodes.length;
|
|
3814
3812
|
const maxW = w - pad * 2;
|
|
3815
|
-
const shadow =
|
|
3816
|
-
const sw =
|
|
3813
|
+
const shadow = chunkLXUMBK2O_js.styleShadow(style);
|
|
3814
|
+
const sw = chunkLXUMBK2O_js.styleStroke(style);
|
|
3817
3815
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3818
3816
|
"svg",
|
|
3819
3817
|
{
|
|
@@ -3837,28 +3835,28 @@ function PyramidRenderer({
|
|
|
3837
3835
|
`${bottomRight},${y + bandH}`,
|
|
3838
3836
|
`${bottomLeft},${y + bandH}`
|
|
3839
3837
|
].join(" ");
|
|
3840
|
-
const fontSize =
|
|
3838
|
+
const fontSize = chunkLXUMBK2O_js.fitFontSize(node.text, topW * 0.85, bandH, 12);
|
|
3841
3839
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3842
3840
|
"g",
|
|
3843
3841
|
{
|
|
3844
|
-
...
|
|
3842
|
+
...chunkLXUMBK2O_js.smartArtNodeGroupProps(node.id, shadow),
|
|
3845
3843
|
children: [
|
|
3846
3844
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3847
3845
|
"polygon",
|
|
3848
3846
|
{
|
|
3849
3847
|
points,
|
|
3850
|
-
fill:
|
|
3851
|
-
opacity:
|
|
3848
|
+
fill: chunkLXUMBK2O_js.colour(i, palette),
|
|
3849
|
+
opacity: chunkLXUMBK2O_js.nodeOpacity(i, nodes.length, style),
|
|
3852
3850
|
stroke: sw > 0 ? "rgba(255,255,255,0.3)" : "none",
|
|
3853
3851
|
strokeWidth: sw
|
|
3854
3852
|
}
|
|
3855
3853
|
),
|
|
3856
3854
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3857
|
-
|
|
3855
|
+
chunkLXUMBK2O_js.SmartArtNodeText,
|
|
3858
3856
|
{
|
|
3859
3857
|
x: w / 2,
|
|
3860
3858
|
y: y + bandH / 2,
|
|
3861
|
-
text:
|
|
3859
|
+
text: chunkLXUMBK2O_js.truncate(node.text, 30),
|
|
3862
3860
|
fill: "white",
|
|
3863
3861
|
fontSize,
|
|
3864
3862
|
className: "pointer-events-none"
|
|
@@ -3880,7 +3878,7 @@ function VennRenderer({
|
|
|
3880
3878
|
}) {
|
|
3881
3879
|
const w = element.width;
|
|
3882
3880
|
const h = element.height;
|
|
3883
|
-
const shadow =
|
|
3881
|
+
const shadow = chunkLXUMBK2O_js.styleShadow(style);
|
|
3884
3882
|
if (nodes.length <= 4) {
|
|
3885
3883
|
const cx = w / 2;
|
|
3886
3884
|
const cy2 = h / 2;
|
|
@@ -3897,19 +3895,19 @@ function VennRenderer({
|
|
|
3897
3895
|
const angle = i / nodes.length * Math.PI * 2 - Math.PI / 2;
|
|
3898
3896
|
const nx = cx + spread * Math.cos(angle);
|
|
3899
3897
|
const ny = cy2 + spread * Math.sin(angle);
|
|
3900
|
-
const fontSize =
|
|
3898
|
+
const fontSize = chunkLXUMBK2O_js.fitFontSize(node.text, r2 * 1.2, r2 * 2, 11);
|
|
3901
3899
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3902
3900
|
"g",
|
|
3903
3901
|
{
|
|
3904
|
-
...
|
|
3902
|
+
...chunkLXUMBK2O_js.smartArtNodeGroupProps(node.id, shadow),
|
|
3905
3903
|
children: [
|
|
3906
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: nx, cy: ny, r: r2, fill:
|
|
3904
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: nx, cy: ny, r: r2, fill: chunkLXUMBK2O_js.colour(i, palette), opacity: 0.35 }),
|
|
3907
3905
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3908
|
-
|
|
3906
|
+
chunkLXUMBK2O_js.SmartArtNodeText,
|
|
3909
3907
|
{
|
|
3910
3908
|
x: nx,
|
|
3911
3909
|
y: ny,
|
|
3912
|
-
text:
|
|
3910
|
+
text: chunkLXUMBK2O_js.truncate(node.text, 20),
|
|
3913
3911
|
fill: "white",
|
|
3914
3912
|
fontSize,
|
|
3915
3913
|
fontWeight: "bold",
|
|
@@ -3938,19 +3936,19 @@ function VennRenderer({
|
|
|
3938
3936
|
"data-testid": "smartart-venn",
|
|
3939
3937
|
children: nodes.map((node, i) => {
|
|
3940
3938
|
const nx = offsetX + i * (r * 2 - overlap);
|
|
3941
|
-
const fontSize =
|
|
3939
|
+
const fontSize = chunkLXUMBK2O_js.fitFontSize(node.text, r * 1.2, r * 2, 10);
|
|
3942
3940
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3943
3941
|
"g",
|
|
3944
3942
|
{
|
|
3945
|
-
...
|
|
3943
|
+
...chunkLXUMBK2O_js.smartArtNodeGroupProps(node.id, shadow),
|
|
3946
3944
|
children: [
|
|
3947
|
-
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: nx, cy, r, fill:
|
|
3945
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: nx, cy, r, fill: chunkLXUMBK2O_js.colour(i, palette), opacity: 0.35 }),
|
|
3948
3946
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3949
|
-
|
|
3947
|
+
chunkLXUMBK2O_js.SmartArtNodeText,
|
|
3950
3948
|
{
|
|
3951
3949
|
x: nx,
|
|
3952
3950
|
y: cy,
|
|
3953
|
-
text:
|
|
3951
|
+
text: chunkLXUMBK2O_js.truncate(node.text, 20),
|
|
3954
3952
|
fill: "white",
|
|
3955
3953
|
fontSize,
|
|
3956
3954
|
fontWeight: "bold",
|
|
@@ -3976,7 +3974,7 @@ function FunnelRenderer({
|
|
|
3976
3974
|
const pad = 8;
|
|
3977
3975
|
const usableW = w - pad * 2;
|
|
3978
3976
|
const stageH = (h - pad * 2) / nodes.length;
|
|
3979
|
-
const shadow =
|
|
3977
|
+
const shadow = chunkLXUMBK2O_js.styleShadow(style);
|
|
3980
3978
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3981
3979
|
"svg",
|
|
3982
3980
|
{
|
|
@@ -3998,26 +3996,26 @@ function FunnelRenderer({
|
|
|
3998
3996
|
`${bottomRight},${y + stageH}`,
|
|
3999
3997
|
`${bottomLeft},${y + stageH}`
|
|
4000
3998
|
].join(" ");
|
|
4001
|
-
const fontSize =
|
|
3999
|
+
const fontSize = chunkLXUMBK2O_js.fitFontSize(node.text, topWidth * 0.85, stageH, 11);
|
|
4002
4000
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4003
4001
|
"g",
|
|
4004
4002
|
{
|
|
4005
|
-
...
|
|
4003
|
+
...chunkLXUMBK2O_js.smartArtNodeGroupProps(node.id, shadow),
|
|
4006
4004
|
children: [
|
|
4007
4005
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4008
4006
|
"polygon",
|
|
4009
4007
|
{
|
|
4010
4008
|
points,
|
|
4011
|
-
fill:
|
|
4012
|
-
opacity:
|
|
4009
|
+
fill: chunkLXUMBK2O_js.colour(i, palette),
|
|
4010
|
+
opacity: chunkLXUMBK2O_js.nodeOpacity(i, nodes.length, style)
|
|
4013
4011
|
}
|
|
4014
4012
|
),
|
|
4015
4013
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4016
|
-
|
|
4014
|
+
chunkLXUMBK2O_js.SmartArtNodeText,
|
|
4017
4015
|
{
|
|
4018
4016
|
x: w / 2,
|
|
4019
4017
|
y: y + stageH / 2,
|
|
4020
|
-
text:
|
|
4018
|
+
text: chunkLXUMBK2O_js.truncate(node.text, 30),
|
|
4021
4019
|
fill: "white",
|
|
4022
4020
|
fontSize,
|
|
4023
4021
|
className: "pointer-events-none"
|
|
@@ -4044,7 +4042,7 @@ function TargetRenderer({
|
|
|
4044
4042
|
const maxR = Math.min(cx - 8, cy - 8);
|
|
4045
4043
|
const fontSize = Math.max(7, Math.min(10, maxR / (nodes.length + 1)));
|
|
4046
4044
|
const labelX = cx + maxR + 8;
|
|
4047
|
-
const shadow =
|
|
4045
|
+
const shadow = chunkLXUMBK2O_js.styleShadow(style);
|
|
4048
4046
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4049
4047
|
"svg",
|
|
4050
4048
|
{
|
|
@@ -4057,7 +4055,7 @@ function TargetRenderer({
|
|
|
4057
4055
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4058
4056
|
"g",
|
|
4059
4057
|
{
|
|
4060
|
-
...
|
|
4058
|
+
...chunkLXUMBK2O_js.smartArtNodeGroupProps(node.id, shadow),
|
|
4061
4059
|
children: [
|
|
4062
4060
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4063
4061
|
"circle",
|
|
@@ -4065,8 +4063,8 @@ function TargetRenderer({
|
|
|
4065
4063
|
cx,
|
|
4066
4064
|
cy,
|
|
4067
4065
|
r: Math.max(r, 4),
|
|
4068
|
-
fill:
|
|
4069
|
-
opacity:
|
|
4066
|
+
fill: chunkLXUMBK2O_js.colour(i, palette),
|
|
4067
|
+
opacity: chunkLXUMBK2O_js.nodeOpacity(i, nodes.length, style)
|
|
4070
4068
|
}
|
|
4071
4069
|
),
|
|
4072
4070
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -4076,7 +4074,7 @@ function TargetRenderer({
|
|
|
4076
4074
|
y1: cy,
|
|
4077
4075
|
x2: labelX - 2,
|
|
4078
4076
|
y2: 8 + i * (fontSize + 6),
|
|
4079
|
-
stroke:
|
|
4077
|
+
stroke: chunkLXUMBK2O_js.colour(i, palette),
|
|
4080
4078
|
strokeWidth: 1,
|
|
4081
4079
|
opacity: 0.6
|
|
4082
4080
|
}
|
|
@@ -4088,10 +4086,10 @@ function TargetRenderer({
|
|
|
4088
4086
|
y: 8 + i * (fontSize + 6) + fontSize / 2,
|
|
4089
4087
|
textAnchor: "start",
|
|
4090
4088
|
dominantBaseline: "central",
|
|
4091
|
-
fill:
|
|
4089
|
+
fill: chunkLXUMBK2O_js.colour(i, palette),
|
|
4092
4090
|
fontSize,
|
|
4093
4091
|
className: "pointer-events-none",
|
|
4094
|
-
children:
|
|
4092
|
+
children: chunkLXUMBK2O_js.truncate(node.text, 30)
|
|
4095
4093
|
}
|
|
4096
4094
|
)
|
|
4097
4095
|
]
|
|
@@ -4108,12 +4106,12 @@ function HierarchyRenderer({
|
|
|
4108
4106
|
palette,
|
|
4109
4107
|
style
|
|
4110
4108
|
}) {
|
|
4111
|
-
const roots =
|
|
4109
|
+
const roots = chunkLXUMBK2O_js.buildTree(nodes);
|
|
4112
4110
|
if (roots.length === 0) {
|
|
4113
4111
|
return /* @__PURE__ */ jsxRuntime.jsx(ListRenderer, { element, nodes, palette, style });
|
|
4114
4112
|
}
|
|
4115
|
-
const totalLeaves = roots.reduce((s, r) => s +
|
|
4116
|
-
const depth = Math.max(...roots.map(
|
|
4113
|
+
const totalLeaves = roots.reduce((s, r) => s + chunkLXUMBK2O_js.treeWidth(r), 0);
|
|
4114
|
+
const depth = Math.max(...roots.map(chunkLXUMBK2O_js.treeDepth));
|
|
4117
4115
|
const svgW = element.width;
|
|
4118
4116
|
const svgH = element.height;
|
|
4119
4117
|
const cellW = svgW / totalLeaves;
|
|
@@ -4121,24 +4119,24 @@ function HierarchyRenderer({
|
|
|
4121
4119
|
const boxW = Math.min(cellW * 0.8, 140);
|
|
4122
4120
|
const boxH = Math.min(cellH * 0.4, 36);
|
|
4123
4121
|
const rx = Math.min(6, boxH * 0.15);
|
|
4124
|
-
const shadow =
|
|
4125
|
-
const sw =
|
|
4122
|
+
const shadow = chunkLXUMBK2O_js.styleShadow(style);
|
|
4123
|
+
const sw = chunkLXUMBK2O_js.styleStroke(style);
|
|
4126
4124
|
const elements = [];
|
|
4127
4125
|
let colourIdx = 0;
|
|
4128
4126
|
function renderTreeNode(t, xOffset, level) {
|
|
4129
|
-
const w =
|
|
4127
|
+
const w = chunkLXUMBK2O_js.treeWidth(t);
|
|
4130
4128
|
const nodeCx = (xOffset + w / 2) * cellW;
|
|
4131
4129
|
const nodeCy = level * cellH + cellH / 2;
|
|
4132
4130
|
const ci = colourIdx++;
|
|
4133
|
-
const fontSize =
|
|
4131
|
+
const fontSize = chunkLXUMBK2O_js.fitFontSize(t.node.text, boxW * 0.9, boxH, 11);
|
|
4134
4132
|
for (const child of t.children) {
|
|
4135
|
-
const childW =
|
|
4133
|
+
const childW = chunkLXUMBK2O_js.treeWidth(child);
|
|
4136
4134
|
let childOffset2 = xOffset;
|
|
4137
4135
|
for (const c of t.children) {
|
|
4138
4136
|
if (c === child) {
|
|
4139
4137
|
break;
|
|
4140
4138
|
}
|
|
4141
|
-
childOffset2 +=
|
|
4139
|
+
childOffset2 += chunkLXUMBK2O_js.treeWidth(c);
|
|
4142
4140
|
}
|
|
4143
4141
|
const childCx = (childOffset2 + childW / 2) * cellW;
|
|
4144
4142
|
const childCy = (level + 1) * cellH + cellH / 2;
|
|
@@ -4161,7 +4159,7 @@ function HierarchyRenderer({
|
|
|
4161
4159
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4162
4160
|
"g",
|
|
4163
4161
|
{
|
|
4164
|
-
...
|
|
4162
|
+
...chunkLXUMBK2O_js.smartArtNodeGroupProps(t.node.id, shadow),
|
|
4165
4163
|
children: [
|
|
4166
4164
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4167
4165
|
"rect",
|
|
@@ -4171,18 +4169,18 @@ function HierarchyRenderer({
|
|
|
4171
4169
|
width: boxW,
|
|
4172
4170
|
height: boxH,
|
|
4173
4171
|
rx,
|
|
4174
|
-
fill:
|
|
4175
|
-
opacity:
|
|
4172
|
+
fill: chunkLXUMBK2O_js.colour(ci, palette),
|
|
4173
|
+
opacity: chunkLXUMBK2O_js.nodeOpacity(ci, nodes.length, style),
|
|
4176
4174
|
stroke: sw > 0 ? "rgba(255,255,255,0.3)" : "none",
|
|
4177
4175
|
strokeWidth: sw
|
|
4178
4176
|
}
|
|
4179
4177
|
),
|
|
4180
4178
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4181
|
-
|
|
4179
|
+
chunkLXUMBK2O_js.SmartArtNodeText,
|
|
4182
4180
|
{
|
|
4183
4181
|
x: nodeCx,
|
|
4184
4182
|
y: nodeCy,
|
|
4185
|
-
text:
|
|
4183
|
+
text: chunkLXUMBK2O_js.truncate(t.node.text, 40),
|
|
4186
4184
|
fill: "white",
|
|
4187
4185
|
fontSize,
|
|
4188
4186
|
className: "pointer-events-none"
|
|
@@ -4196,7 +4194,7 @@ function HierarchyRenderer({
|
|
|
4196
4194
|
let childOffset = xOffset;
|
|
4197
4195
|
for (const child of t.children) {
|
|
4198
4196
|
renderTreeNode(child, childOffset, level + 1);
|
|
4199
|
-
childOffset +=
|
|
4197
|
+
childOffset += chunkLXUMBK2O_js.treeWidth(child);
|
|
4200
4198
|
}
|
|
4201
4199
|
return w;
|
|
4202
4200
|
}
|
|
@@ -4231,7 +4229,7 @@ function GearRenderer({
|
|
|
4231
4229
|
const gearR = Math.min(spacing * 0.4, h * 0.35);
|
|
4232
4230
|
const innerR = gearR * 0.7;
|
|
4233
4231
|
const teethCount = 8;
|
|
4234
|
-
const shadow =
|
|
4232
|
+
const shadow = chunkLXUMBK2O_js.styleShadow(style);
|
|
4235
4233
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4236
4234
|
"svg",
|
|
4237
4235
|
{
|
|
@@ -4243,27 +4241,27 @@ function GearRenderer({
|
|
|
4243
4241
|
gearNodes.map((node, i) => {
|
|
4244
4242
|
const gx = spacing * (i + 1);
|
|
4245
4243
|
const gy = h / 2 + (i % 2 === 0 ? 0 : gearR * 0.35);
|
|
4246
|
-
const fontSize =
|
|
4244
|
+
const fontSize = chunkLXUMBK2O_js.fitFontSize(node.text, innerR * 1.2, innerR * 2, 11);
|
|
4247
4245
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4248
4246
|
"g",
|
|
4249
4247
|
{
|
|
4250
|
-
...
|
|
4248
|
+
...chunkLXUMBK2O_js.smartArtNodeGroupProps(node.id, shadow),
|
|
4251
4249
|
children: [
|
|
4252
4250
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4253
4251
|
"path",
|
|
4254
4252
|
{
|
|
4255
|
-
d:
|
|
4256
|
-
fill:
|
|
4257
|
-
opacity:
|
|
4253
|
+
d: chunkLXUMBK2O_js.gearPath(gx, gy, gearR, innerR, teethCount),
|
|
4254
|
+
fill: chunkLXUMBK2O_js.colour(i, palette),
|
|
4255
|
+
opacity: chunkLXUMBK2O_js.nodeOpacity(i, nodes.length, style)
|
|
4258
4256
|
}
|
|
4259
4257
|
),
|
|
4260
4258
|
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: gx, cy: gy, r: innerR * 0.5, fill: "white", opacity: 0.25 }),
|
|
4261
4259
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4262
|
-
|
|
4260
|
+
chunkLXUMBK2O_js.SmartArtNodeText,
|
|
4263
4261
|
{
|
|
4264
4262
|
x: gx,
|
|
4265
4263
|
y: gy,
|
|
4266
|
-
text:
|
|
4264
|
+
text: chunkLXUMBK2O_js.truncate(node.text, 20),
|
|
4267
4265
|
fill: "white",
|
|
4268
4266
|
fontSize,
|
|
4269
4267
|
fontWeight: "bold",
|
|
@@ -4285,8 +4283,8 @@ function GearRenderer({
|
|
|
4285
4283
|
cx: lx,
|
|
4286
4284
|
cy: ly,
|
|
4287
4285
|
r: 3,
|
|
4288
|
-
fill:
|
|
4289
|
-
opacity:
|
|
4286
|
+
fill: chunkLXUMBK2O_js.colour(gearCount + i, palette),
|
|
4287
|
+
opacity: chunkLXUMBK2O_js.nodeOpacity(gearCount + i, nodes.length, style)
|
|
4290
4288
|
}
|
|
4291
4289
|
),
|
|
4292
4290
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -4296,10 +4294,10 @@ function GearRenderer({
|
|
|
4296
4294
|
y: ly,
|
|
4297
4295
|
textAnchor: "start",
|
|
4298
4296
|
dominantBaseline: "central",
|
|
4299
|
-
fill:
|
|
4297
|
+
fill: chunkLXUMBK2O_js.colour(gearCount + i, palette),
|
|
4300
4298
|
fontSize: 10,
|
|
4301
4299
|
className: "pointer-events-none",
|
|
4302
|
-
children:
|
|
4300
|
+
children: chunkLXUMBK2O_js.truncate(node.text, 30)
|
|
4303
4301
|
}
|
|
4304
4302
|
)
|
|
4305
4303
|
] }, `${element.id}-gear-extra-${node.id}-${i}`);
|
|
@@ -4323,7 +4321,7 @@ function TimelineRenderer({
|
|
|
4323
4321
|
const lineLen = lineEndX - lineStartX;
|
|
4324
4322
|
const dotR = Math.max(4, Math.min(8, lineLen / (nodes.length * 4)));
|
|
4325
4323
|
const labelOffset = Math.min(h * 0.28, 40);
|
|
4326
|
-
const shadow =
|
|
4324
|
+
const shadow = chunkLXUMBK2O_js.styleShadow(style);
|
|
4327
4325
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4328
4326
|
"svg",
|
|
4329
4327
|
{
|
|
@@ -4345,11 +4343,11 @@ function TimelineRenderer({
|
|
|
4345
4343
|
const above = i % 2 === 0;
|
|
4346
4344
|
const textY = above ? lineY - labelOffset : lineY + labelOffset;
|
|
4347
4345
|
const stemEndY = above ? lineY - dotR - 2 : lineY + dotR + 2;
|
|
4348
|
-
const fontSize =
|
|
4346
|
+
const fontSize = chunkLXUMBK2O_js.fitFontSize(node.text, lineLen / nodes.length * 0.9, labelOffset, 10);
|
|
4349
4347
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4350
4348
|
"g",
|
|
4351
4349
|
{
|
|
4352
|
-
...
|
|
4350
|
+
...chunkLXUMBK2O_js.smartArtNodeGroupProps(node.id, shadow),
|
|
4353
4351
|
children: [
|
|
4354
4352
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4355
4353
|
"line",
|
|
@@ -4358,7 +4356,7 @@ function TimelineRenderer({
|
|
|
4358
4356
|
y1: stemEndY,
|
|
4359
4357
|
x2: x,
|
|
4360
4358
|
y2: textY + (above ? fontSize : -fontSize),
|
|
4361
|
-
stroke:
|
|
4359
|
+
stroke: chunkLXUMBK2O_js.colour(i, palette),
|
|
4362
4360
|
strokeWidth: 1,
|
|
4363
4361
|
opacity: 0.5
|
|
4364
4362
|
}
|
|
@@ -4369,17 +4367,17 @@ function TimelineRenderer({
|
|
|
4369
4367
|
cx: x,
|
|
4370
4368
|
cy: lineY,
|
|
4371
4369
|
r: dotR,
|
|
4372
|
-
fill:
|
|
4373
|
-
opacity:
|
|
4370
|
+
fill: chunkLXUMBK2O_js.colour(i, palette),
|
|
4371
|
+
opacity: chunkLXUMBK2O_js.nodeOpacity(i, nodes.length, style)
|
|
4374
4372
|
}
|
|
4375
4373
|
),
|
|
4376
4374
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4377
|
-
|
|
4375
|
+
chunkLXUMBK2O_js.SmartArtNodeText,
|
|
4378
4376
|
{
|
|
4379
|
-
text:
|
|
4377
|
+
text: chunkLXUMBK2O_js.truncate(node.text, 20) ?? "",
|
|
4380
4378
|
x,
|
|
4381
4379
|
y: textY,
|
|
4382
|
-
fill:
|
|
4380
|
+
fill: chunkLXUMBK2O_js.colour(i, palette),
|
|
4383
4381
|
fontSize,
|
|
4384
4382
|
anchor: above ? "bottom" : "top",
|
|
4385
4383
|
className: "pointer-events-none"
|
|
@@ -4412,8 +4410,8 @@ function BendingProcessRenderer({
|
|
|
4412
4410
|
const boxH = Math.min(cellH * 0.6, 32);
|
|
4413
4411
|
const rx = Math.min(5, boxH * 0.15);
|
|
4414
4412
|
const arrowSize = 6;
|
|
4415
|
-
const shadow =
|
|
4416
|
-
const sw =
|
|
4413
|
+
const shadow = chunkLXUMBK2O_js.styleShadow(style);
|
|
4414
|
+
const sw = chunkLXUMBK2O_js.styleStroke(style);
|
|
4417
4415
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4418
4416
|
"svg",
|
|
4419
4417
|
{
|
|
@@ -4427,7 +4425,7 @@ function BendingProcessRenderer({
|
|
|
4427
4425
|
const col = row % 2 === 0 ? colInRow : COLS - 1 - colInRow;
|
|
4428
4426
|
const nodeCx = padX + col * cellW + cellW / 2;
|
|
4429
4427
|
const nodeCy = padY + row * cellH + cellH / 2;
|
|
4430
|
-
const fontSize =
|
|
4428
|
+
const fontSize = chunkLXUMBK2O_js.fitFontSize(node.text, boxW * 0.85, boxH, 10);
|
|
4431
4429
|
let arrow = null;
|
|
4432
4430
|
if (i < nodes.length - 1) {
|
|
4433
4431
|
const nextRow = Math.floor((i + 1) / COLS);
|
|
@@ -4487,7 +4485,7 @@ function BendingProcessRenderer({
|
|
|
4487
4485
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4488
4486
|
"g",
|
|
4489
4487
|
{
|
|
4490
|
-
...
|
|
4488
|
+
...chunkLXUMBK2O_js.smartArtNodeGroupProps(node.id, shadow),
|
|
4491
4489
|
children: [
|
|
4492
4490
|
arrow,
|
|
4493
4491
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -4498,18 +4496,18 @@ function BendingProcessRenderer({
|
|
|
4498
4496
|
width: boxW,
|
|
4499
4497
|
height: boxH,
|
|
4500
4498
|
rx,
|
|
4501
|
-
fill:
|
|
4502
|
-
opacity:
|
|
4499
|
+
fill: chunkLXUMBK2O_js.colour(i, palette),
|
|
4500
|
+
opacity: chunkLXUMBK2O_js.nodeOpacity(i, nodes.length, style),
|
|
4503
4501
|
stroke: sw > 0 ? "rgba(255,255,255,0.3)" : "none",
|
|
4504
4502
|
strokeWidth: sw
|
|
4505
4503
|
}
|
|
4506
4504
|
),
|
|
4507
4505
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4508
|
-
|
|
4506
|
+
chunkLXUMBK2O_js.SmartArtNodeText,
|
|
4509
4507
|
{
|
|
4510
4508
|
x: nodeCx,
|
|
4511
4509
|
y: nodeCy,
|
|
4512
|
-
text:
|
|
4510
|
+
text: chunkLXUMBK2O_js.truncate(node.text, 20),
|
|
4513
4511
|
fill: "white",
|
|
4514
4512
|
fontSize,
|
|
4515
4513
|
className: "pointer-events-none"
|
|
@@ -4550,21 +4548,21 @@ function SmartArtRendererImpl({
|
|
|
4550
4548
|
}
|
|
4551
4549
|
);
|
|
4552
4550
|
}
|
|
4553
|
-
const palette =
|
|
4554
|
-
const style =
|
|
4555
|
-
const a11y =
|
|
4551
|
+
const palette = chunkLXUMBK2O_js.resolvePalette(element);
|
|
4552
|
+
const style = chunkLXUMBK2O_js.resolveStyle(element);
|
|
4553
|
+
const a11y = chunkBXACB3BG_js.buildSmartArtA11y(smartArtData);
|
|
4556
4554
|
const nodeLabels = new Map(a11y.nodes.map((n) => [n.id, n.label]));
|
|
4557
4555
|
const editable = canEdit && Boolean(onUpdateElement);
|
|
4558
4556
|
const handleCommitNodeText = (nodeId, text) => {
|
|
4559
|
-
if (!onUpdateElement || !
|
|
4557
|
+
if (!onUpdateElement || !chunkBXACB3BG_js.shouldCommitSmartArtNodeText(smartArtData, nodeId, text)) {
|
|
4560
4558
|
return;
|
|
4561
4559
|
}
|
|
4562
4560
|
const updated = chunkAD3EAEY6_js.updateSmartArtNodeText(smartArtData, nodeId, text);
|
|
4563
4561
|
const box = { width: element.width, height: element.height };
|
|
4564
|
-
const reflowed =
|
|
4562
|
+
const reflowed = chunkBXACB3BG_js.rebuildDrawingShapesIfCleared(
|
|
4565
4563
|
updated,
|
|
4566
4564
|
smartArtData.layout,
|
|
4567
|
-
|
|
4565
|
+
chunkLXUMBK2O_js.resolveSmartArtDataPalette(updated),
|
|
4568
4566
|
style,
|
|
4569
4567
|
element.id,
|
|
4570
4568
|
box
|
|
@@ -4578,10 +4576,10 @@ function SmartArtRendererImpl({
|
|
|
4578
4576
|
const next = chunkAD3EAEY6_js.setSmartArtNodeStyle(smartArtData, nodeId, { fillColor: fill });
|
|
4579
4577
|
if (next !== smartArtData) {
|
|
4580
4578
|
const box = { width: element.width, height: element.height };
|
|
4581
|
-
const reflowed =
|
|
4579
|
+
const reflowed = chunkBXACB3BG_js.rebuildDrawingShapesIfCleared(
|
|
4582
4580
|
next,
|
|
4583
4581
|
smartArtData.layout,
|
|
4584
|
-
|
|
4582
|
+
chunkLXUMBK2O_js.resolveSmartArtDataPalette(next),
|
|
4585
4583
|
style,
|
|
4586
4584
|
element.id,
|
|
4587
4585
|
box
|
|
@@ -4604,7 +4602,7 @@ function SmartArtRendererImpl({
|
|
|
4604
4602
|
);
|
|
4605
4603
|
} else {
|
|
4606
4604
|
const namedLayout = smartArtData.layout;
|
|
4607
|
-
const layoutType = namedLayout ?
|
|
4605
|
+
const layoutType = namedLayout ? chunkLXUMBK2O_js.layoutToCategory(namedLayout) : (smartArtData.resolvedLayoutType ?? smartArtData.layoutType ?? "list").toLowerCase();
|
|
4608
4606
|
content = renderLayout(layoutType, element, nodes, palette, style, nodeLabels);
|
|
4609
4607
|
}
|
|
4610
4608
|
const body = editable ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -4618,7 +4616,7 @@ function SmartArtRendererImpl({
|
|
|
4618
4616
|
children: content
|
|
4619
4617
|
}
|
|
4620
4618
|
) : content;
|
|
4621
|
-
return
|
|
4619
|
+
return chunkLXUMBK2O_js.wrapChrome(chrome, body, className, { role: a11y.role, label: a11y.label });
|
|
4622
4620
|
}
|
|
4623
4621
|
function renderLayout(layoutType, element, nodes, palette, style, nodeLabels) {
|
|
4624
4622
|
if (layoutType.includes("hierarchy") || layoutType.includes("org")) {
|
|
@@ -4682,34 +4680,34 @@ function renderLayout(layoutType, element, nodes, palette, style, nodeLabels) {
|
|
|
4682
4680
|
return /* @__PURE__ */ jsxRuntime.jsx(BendingProcessRenderer, { element, nodes, palette, style });
|
|
4683
4681
|
}
|
|
4684
4682
|
if (layoutType.includes("stepdown")) {
|
|
4685
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
4683
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkLXUMBK2O_js.renderStepDownProcess(element, nodes, palette, style) });
|
|
4686
4684
|
}
|
|
4687
4685
|
if (layoutType.includes("alternatingflow") || layoutType.includes("alternating")) {
|
|
4688
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
4686
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkLXUMBK2O_js.renderAlternatingFlow(element, nodes, palette, style) });
|
|
4689
4687
|
}
|
|
4690
4688
|
if (layoutType.includes("descending")) {
|
|
4691
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
4689
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkLXUMBK2O_js.renderDescendingProcess(element, nodes, palette, style) });
|
|
4692
4690
|
}
|
|
4693
4691
|
if (layoutType.includes("pictureaccent")) {
|
|
4694
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
4692
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkLXUMBK2O_js.renderPictureAccentList(element, nodes, palette, style) });
|
|
4695
4693
|
}
|
|
4696
4694
|
if (layoutType.includes("verticalblock")) {
|
|
4697
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
4695
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkLXUMBK2O_js.renderVerticalBlockList(element, nodes, palette, style) });
|
|
4698
4696
|
}
|
|
4699
4697
|
if (layoutType.includes("grouped")) {
|
|
4700
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
4698
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkLXUMBK2O_js.renderGroupedList(element, nodes, palette, style) });
|
|
4701
4699
|
}
|
|
4702
4700
|
if (layoutType.includes("pyramidlist")) {
|
|
4703
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
4701
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkLXUMBK2O_js.renderPyramidList(element, nodes, palette, style) });
|
|
4704
4702
|
}
|
|
4705
4703
|
if (layoutType.includes("horizontalpicture")) {
|
|
4706
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
4704
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkLXUMBK2O_js.renderHorizontalPictureList(element, nodes, palette, style) });
|
|
4707
4705
|
}
|
|
4708
4706
|
if (layoutType.includes("accentprocess")) {
|
|
4709
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
4707
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkLXUMBK2O_js.renderAccentProcess(element, nodes, palette, style) });
|
|
4710
4708
|
}
|
|
4711
4709
|
if (layoutType.includes("verticalchevron")) {
|
|
4712
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children:
|
|
4710
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: chunkLXUMBK2O_js.renderVerticalChevronList(element, nodes, palette, style) });
|
|
4713
4711
|
}
|
|
4714
4712
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4715
4713
|
ListRenderer,
|
|
@@ -4808,9 +4806,9 @@ function SmartArt3DRenderer({
|
|
|
4808
4806
|
if (nodes.length === 0) {
|
|
4809
4807
|
return null;
|
|
4810
4808
|
}
|
|
4811
|
-
const palette =
|
|
4812
|
-
const style =
|
|
4813
|
-
const layoutResult =
|
|
4809
|
+
const palette = chunkLXUMBK2O_js.resolvePalette(element);
|
|
4810
|
+
const style = chunkLXUMBK2O_js.resolveStyle(element);
|
|
4811
|
+
const layoutResult = chunkBXACB3BG_js.computeSmartArtLayout(
|
|
4814
4812
|
nodes,
|
|
4815
4813
|
{ width: element.width, height: element.height },
|
|
4816
4814
|
palette,
|
|
@@ -4819,7 +4817,7 @@ function SmartArt3DRenderer({
|
|
|
4819
4817
|
resolvedLayoutType,
|
|
4820
4818
|
layout
|
|
4821
4819
|
);
|
|
4822
|
-
return
|
|
4820
|
+
return chunkBXACB3BG_js.buildSmartArt3DModel(layoutResult, {
|
|
4823
4821
|
background: chrome?.backgroundColor,
|
|
4824
4822
|
spatial: true
|
|
4825
4823
|
});
|
|
@@ -4846,7 +4844,7 @@ function SmartArt3DRenderer({
|
|
|
4846
4844
|
return sceneNode;
|
|
4847
4845
|
}
|
|
4848
4846
|
const handleCommitNodeText = (nodeId, text) => {
|
|
4849
|
-
if (!
|
|
4847
|
+
if (!chunkBXACB3BG_js.shouldCommitSmartArtNodeText(smartArtData, nodeId, text)) {
|
|
4850
4848
|
return;
|
|
4851
4849
|
}
|
|
4852
4850
|
onUpdateElement({
|
|
@@ -4895,11 +4893,11 @@ function SmartArtElement({
|
|
|
4895
4893
|
);
|
|
4896
4894
|
}
|
|
4897
4895
|
function groupIntoParagraphs2(element, fieldContext) {
|
|
4898
|
-
return
|
|
4896
|
+
return chunkBXACB3BG_js.groupIntoParagraphs(
|
|
4899
4897
|
element,
|
|
4900
4898
|
fieldContext ? (seg) => {
|
|
4901
4899
|
if (seg.fieldType) {
|
|
4902
|
-
const substituted =
|
|
4900
|
+
const substituted = chunkBXACB3BG_js.substituteFieldText(seg.text, seg.fieldType, fieldContext);
|
|
4903
4901
|
if (substituted !== seg.text) {
|
|
4904
4902
|
return { ...seg, text: substituted };
|
|
4905
4903
|
}
|
|
@@ -4929,13 +4927,13 @@ function getSegmentTspanProps(segment, element, fallbackColor) {
|
|
|
4929
4927
|
if (s.strikethrough) {
|
|
4930
4928
|
decos.push("line-through");
|
|
4931
4929
|
}
|
|
4932
|
-
const fill = s.hyperlink ?
|
|
4930
|
+
const fill = s.hyperlink ? chunkBXACB3BG_js.normalizeHexColor(s.color || element.textStyle?.color, chunkLXUMBK2O_js.HYPERLINK_COLOR) : chunkBXACB3BG_js.normalizeHexColor(s.color || element.textStyle?.color, fallbackColor);
|
|
4933
4931
|
return {
|
|
4934
4932
|
fill,
|
|
4935
|
-
fontSize: s.fontSize ?? element.textStyle?.fontSize ??
|
|
4933
|
+
fontSize: s.fontSize ?? element.textStyle?.fontSize ?? chunkLXUMBK2O_js.DEFAULT_TEXT_FONT_SIZE,
|
|
4936
4934
|
fontWeight: s.bold ? 700 : 400,
|
|
4937
4935
|
fontStyle: s.italic ? "italic" : void 0,
|
|
4938
|
-
fontFamily: s.fontFamily || element.textStyle?.fontFamily ? chunkAD3EAEY6_js.getSubstituteFontFamily(s.fontFamily || element.textStyle?.fontFamily || "") :
|
|
4936
|
+
fontFamily: s.fontFamily || element.textStyle?.fontFamily ? chunkAD3EAEY6_js.getSubstituteFontFamily(s.fontFamily || element.textStyle?.fontFamily || "") : chunkLXUMBK2O_js.DEFAULT_FONT_FAMILY,
|
|
4939
4937
|
textDecoration: decos.length > 0 ? decos.join(" ") : void 0
|
|
4940
4938
|
};
|
|
4941
4939
|
}
|
|
@@ -4951,7 +4949,7 @@ function WarpedText({
|
|
|
4951
4949
|
}
|
|
4952
4950
|
const textEl = element;
|
|
4953
4951
|
const preset = textEl.textStyle?.textWarpPreset;
|
|
4954
|
-
if (!preset || !
|
|
4952
|
+
if (!preset || !chunkBXACB3BG_js.shouldUseSvgWarp(preset)) {
|
|
4955
4953
|
return null;
|
|
4956
4954
|
}
|
|
4957
4955
|
const paragraphs = groupIntoParagraphs2(textEl, fieldContext);
|
|
@@ -4964,9 +4962,9 @@ function WarpedText({
|
|
|
4964
4962
|
const warpAdj2 = textEl.textStyle?.textWarpAdj2;
|
|
4965
4963
|
const align = textEl.textStyle?.align ?? "center";
|
|
4966
4964
|
const { startOffset, textAnchor } = getAlignmentProps(align);
|
|
4967
|
-
const baseFontSize = textEl.textStyle?.fontSize ??
|
|
4968
|
-
const baseFontFamily = textEl.textStyle?.fontFamily ? chunkAD3EAEY6_js.getSubstituteFontFamily(textEl.textStyle.fontFamily) :
|
|
4969
|
-
const baseFill =
|
|
4965
|
+
const baseFontSize = textEl.textStyle?.fontSize ?? chunkLXUMBK2O_js.DEFAULT_TEXT_FONT_SIZE;
|
|
4966
|
+
const baseFontFamily = textEl.textStyle?.fontFamily ? chunkAD3EAEY6_js.getSubstituteFontFamily(textEl.textStyle.fontFamily) : chunkLXUMBK2O_js.DEFAULT_FONT_FAMILY;
|
|
4967
|
+
const baseFill = chunkBXACB3BG_js.normalizeHexColor(textEl.textStyle?.color, fallbackColor);
|
|
4970
4968
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4971
4969
|
"svg",
|
|
4972
4970
|
{
|
|
@@ -4986,7 +4984,7 @@ function WarpedText({
|
|
|
4986
4984
|
"path",
|
|
4987
4985
|
{
|
|
4988
4986
|
id: `${pathIdPrefix}-${i}`,
|
|
4989
|
-
d:
|
|
4987
|
+
d: chunkBXACB3BG_js.getWarpPath(preset, width, height, i, lineCount, warpAdj, warpAdj2),
|
|
4990
4988
|
fill: "none"
|
|
4991
4989
|
},
|
|
4992
4990
|
`${pathIdPrefix}-def-${i}`
|
|
@@ -5023,7 +5021,7 @@ function WarpedText({
|
|
|
5023
5021
|
);
|
|
5024
5022
|
}
|
|
5025
5023
|
var GLYPH_BY_SHAPE = Object.fromEntries(
|
|
5026
|
-
|
|
5024
|
+
chunkBXACB3BG_js.ACTION_BUTTON_PRESETS.map((p) => [p.shapeType, p.iconPath])
|
|
5027
5025
|
);
|
|
5028
5026
|
GLYPH_BY_SHAPE["actionButtonForwardOrNext"] = GLYPH_BY_SHAPE["actionButtonForwardNext"];
|
|
5029
5027
|
GLYPH_BY_SHAPE["actionButtonBackOrPrevious"] = GLYPH_BY_SHAPE["actionButtonBackPrevious"];
|
|
@@ -5091,11 +5089,11 @@ function renderTextElementBody(options) {
|
|
|
5091
5089
|
} = options;
|
|
5092
5090
|
const isLinkedTextBox = chunkAD3EAEY6_js.hasTextProperties(el) && el.linkedTxbxId !== void 0;
|
|
5093
5091
|
const linkedSegments = isLinkedTextBox && slideElements ? chunkAD3EAEY6_js.getLinkedTextBoxSegments(el, slideElements) : void 0;
|
|
5094
|
-
const useSvgWarp =
|
|
5092
|
+
const useSvgWarp = chunkBXACB3BG_js.shouldUseSvgWarp(
|
|
5095
5093
|
chunkAD3EAEY6_js.hasTextProperties(el) ? el.textStyle?.textWarpPreset : void 0
|
|
5096
5094
|
);
|
|
5097
|
-
const scene3dStyle = chunkAD3EAEY6_js.hasTextProperties(el) ?
|
|
5098
|
-
const composedTransform = [
|
|
5095
|
+
const scene3dStyle = chunkAD3EAEY6_js.hasTextProperties(el) ? chunkLXUMBK2O_js.buildTextBody3DSceneStyle(el.textStyle) : void 0;
|
|
5096
|
+
const composedTransform = [chunkBXACB3BG_js.getTextCompensationTransform(el), scene3dStyle?.transform].filter(Boolean).join(" ") || void 0;
|
|
5099
5097
|
const transformStyle = {
|
|
5100
5098
|
transform: composedTransform,
|
|
5101
5099
|
transformOrigin: "center",
|
|
@@ -5111,18 +5109,18 @@ function renderTextElementBody(options) {
|
|
|
5111
5109
|
shouldRenderText && (useSvgWarp ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
5112
5110
|
"div",
|
|
5113
5111
|
{
|
|
5114
|
-
className:
|
|
5112
|
+
className: chunkLXUMBK2O_js.cn(
|
|
5115
5113
|
"relative z-10 w-full h-full",
|
|
5116
5114
|
onHyperlinkClick ? "" : "pointer-events-none"
|
|
5117
5115
|
),
|
|
5118
|
-
style: { ...
|
|
5116
|
+
style: { ...chunkLXUMBK2O_js.getTextLayoutStyle(el), ...transformStyle },
|
|
5119
5117
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5120
5118
|
WarpedText,
|
|
5121
5119
|
{
|
|
5122
5120
|
element: el,
|
|
5123
5121
|
width: el.width,
|
|
5124
5122
|
height: el.height,
|
|
5125
|
-
fallbackColor:
|
|
5123
|
+
fallbackColor: chunkLXUMBK2O_js.DEFAULT_TEXT_COLOR,
|
|
5126
5124
|
findHighlights: findHl,
|
|
5127
5125
|
fieldContext
|
|
5128
5126
|
}
|
|
@@ -5131,19 +5129,19 @@ function renderTextElementBody(options) {
|
|
|
5131
5129
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
5132
5130
|
"div",
|
|
5133
5131
|
{
|
|
5134
|
-
className:
|
|
5132
|
+
className: chunkLXUMBK2O_js.cn(
|
|
5135
5133
|
"relative z-10 w-full h-full whitespace-pre-wrap break-words leading-[1.3]",
|
|
5136
5134
|
onHyperlinkClick ? "" : "pointer-events-none"
|
|
5137
5135
|
),
|
|
5138
5136
|
style: {
|
|
5139
|
-
...
|
|
5137
|
+
...chunkLXUMBK2O_js.getTextLayoutStyle(el),
|
|
5140
5138
|
...txtS,
|
|
5141
|
-
...
|
|
5139
|
+
...chunkLXUMBK2O_js.getTextWarpStyle(txtSE),
|
|
5142
5140
|
...transformStyle
|
|
5143
5141
|
},
|
|
5144
|
-
children:
|
|
5142
|
+
children: chunkLXUMBK2O_js.renderTextSegments(
|
|
5145
5143
|
el,
|
|
5146
|
-
|
|
5144
|
+
chunkLXUMBK2O_js.DEFAULT_TEXT_COLOR,
|
|
5147
5145
|
void 0,
|
|
5148
5146
|
findHl,
|
|
5149
5147
|
onHyperlinkClick,
|
|
@@ -5164,7 +5162,7 @@ function ZoomElementRenderer({
|
|
|
5164
5162
|
sourceSlideIndex
|
|
5165
5163
|
}) {
|
|
5166
5164
|
const { t } = reactI18next.useTranslation();
|
|
5167
|
-
const summaryView =
|
|
5165
|
+
const summaryView = chunkBXACB3BG_js.buildSummaryZoomView(element, (index) => {
|
|
5168
5166
|
const slide = slides?.[index];
|
|
5169
5167
|
return slide ? {
|
|
5170
5168
|
slideNumber: slide.slideNumber,
|
|
@@ -5443,7 +5441,7 @@ function renderBody(options) {
|
|
|
5443
5441
|
textDirection: txtSE?.textDirection,
|
|
5444
5442
|
textStyle: txtS,
|
|
5445
5443
|
textStyleRaw: txtSE,
|
|
5446
|
-
layoutStyle:
|
|
5444
|
+
layoutStyle: chunkLXUMBK2O_js.getTextLayoutStyle(el),
|
|
5447
5445
|
element: el,
|
|
5448
5446
|
onCommit,
|
|
5449
5447
|
onCancel,
|
|
@@ -5454,7 +5452,7 @@ function renderBody(options) {
|
|
|
5454
5452
|
] });
|
|
5455
5453
|
}
|
|
5456
5454
|
if (el.type === "table") {
|
|
5457
|
-
return
|
|
5455
|
+
return chunkLXUMBK2O_js.renderTableElement(el, txtS, {
|
|
5458
5456
|
editable: isSel,
|
|
5459
5457
|
selectedCell: isSel ? tableSt : null,
|
|
5460
5458
|
onSelectCell: onCellSel,
|
|
@@ -5485,7 +5483,7 @@ function renderBody(options) {
|
|
|
5485
5483
|
);
|
|
5486
5484
|
}
|
|
5487
5485
|
if (el.type === "media") {
|
|
5488
|
-
return
|
|
5486
|
+
return chunkLXUMBK2O_js.renderMediaElement(el, media, {
|
|
5489
5487
|
autoPlay: isPresentationPassive,
|
|
5490
5488
|
fullScreen: isPresentationPassive && Boolean(el.fullScreen),
|
|
5491
5489
|
isPresentationMode: isPresentationPassive,
|
|
@@ -5510,8 +5508,8 @@ function renderBody(options) {
|
|
|
5510
5508
|
}
|
|
5511
5509
|
return renderGroup(el.children);
|
|
5512
5510
|
}
|
|
5513
|
-
if (
|
|
5514
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children:
|
|
5511
|
+
if (chunkLXUMBK2O_js.shouldRenderFallbackLabel(el, isTxtEl)) {
|
|
5512
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full flex items-center justify-center text-[11px] text-white/80 pointer-events-none", children: chunkBXACB3BG_js.getElementLabel(el) });
|
|
5515
5513
|
}
|
|
5516
5514
|
return renderTextElementBody(options);
|
|
5517
5515
|
}
|
|
@@ -5528,14 +5526,14 @@ function StaticElementRenderer({
|
|
|
5528
5526
|
positioned = true
|
|
5529
5527
|
}) {
|
|
5530
5528
|
const style = chunkAD3EAEY6_js.hasShapeProperties(element) ? element.shapeStyle : void 0;
|
|
5531
|
-
const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(
|
|
5532
|
-
const fill =
|
|
5529
|
+
const hasFill = style?.fillColor !== void 0 && style.fillColor !== "transparent" || Boolean(chunkBXACB3BG_js.buildCssGradientFromShapeStyle(style) || style?.fillGradient) || style?.fillMode === "pattern" && Boolean(style.fillPatternPreset);
|
|
5530
|
+
const fill = chunkBXACB3BG_js.normalizeHexColor(style?.fillColor, chunkLXUMBK2O_js.DEFAULT_FILL_COLOR);
|
|
5533
5531
|
const strokeWidth = Math.max(0, style?.strokeWidth || 0);
|
|
5534
|
-
const stroke =
|
|
5535
|
-
const visualStyle =
|
|
5536
|
-
const textStyle =
|
|
5532
|
+
const stroke = chunkBXACB3BG_js.normalizeHexColor(style?.strokeColor, chunkLXUMBK2O_js.DEFAULT_STROKE_COLOR);
|
|
5533
|
+
const visualStyle = chunkLXUMBK2O_js.getShapeVisualStyle(element, hasFill, fill, strokeWidth, stroke);
|
|
5534
|
+
const textStyle = chunkLXUMBK2O_js.getTextStyleForElement(
|
|
5537
5535
|
element,
|
|
5538
|
-
element.type === "shape" && hasFill ? "#ffffff" :
|
|
5536
|
+
element.type === "shape" && hasFill ? "#ffffff" : chunkLXUMBK2O_js.DEFAULT_TEXT_COLOR
|
|
5539
5537
|
);
|
|
5540
5538
|
const isImage = element.type === "picture" || element.type === "image";
|
|
5541
5539
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -5548,7 +5546,7 @@ function StaticElementRenderer({
|
|
|
5548
5546
|
top: positioned ? element.y : void 0,
|
|
5549
5547
|
width: positioned ? Math.max(element.width, 1) : "100%",
|
|
5550
5548
|
height: positioned ? Math.max(element.height, 1) : "100%",
|
|
5551
|
-
transform: positioned ?
|
|
5549
|
+
transform: positioned ? chunkBXACB3BG_js.getElementTransform(element) : void 0,
|
|
5552
5550
|
transformOrigin: "center",
|
|
5553
5551
|
zIndex,
|
|
5554
5552
|
...visualStyle
|
|
@@ -5572,12 +5570,12 @@ function StaticElementRenderer({
|
|
|
5572
5570
|
spellCheck: false,
|
|
5573
5571
|
txtSE: chunkAD3EAEY6_js.hasTextProperties(element) ? element.textStyle : void 0,
|
|
5574
5572
|
txtS: textStyle,
|
|
5575
|
-
vecShape:
|
|
5576
|
-
imgStyle:
|
|
5577
|
-
imgFilter:
|
|
5578
|
-
imgOpacity:
|
|
5573
|
+
vecShape: chunkLXUMBK2O_js.renderVectorShape(element, hasFill, fill, strokeWidth, stroke),
|
|
5574
|
+
imgStyle: chunkLXUMBK2O_js.getImageRenderStyle(element),
|
|
5575
|
+
imgFilter: chunkBXACB3BG_js.getImageEffectsFilter(element),
|
|
5576
|
+
imgOpacity: chunkBXACB3BG_js.getImageEffectsOpacity(element),
|
|
5579
5577
|
imgAlt: "",
|
|
5580
|
-
isTxtEl:
|
|
5578
|
+
isTxtEl: chunkBXACB3BG_js.isEditableTextElement(element),
|
|
5581
5579
|
media: mediaDataUrls,
|
|
5582
5580
|
tableSt: null,
|
|
5583
5581
|
isSel: false,
|
|
@@ -5603,12 +5601,12 @@ function SlideThumbnailImpl({
|
|
|
5603
5601
|
}) {
|
|
5604
5602
|
const safeCanvasWidth = Math.max(canvasSize.width, 1);
|
|
5605
5603
|
const safeCanvasHeight = Math.max(canvasSize.height, 1);
|
|
5606
|
-
const scale =
|
|
5604
|
+
const scale = chunkLXUMBK2O_js.SLIDE_NAV_THUMBNAIL_WIDTH / safeCanvasWidth;
|
|
5607
5605
|
const previewHeight = Math.max(56, Math.round(safeCanvasHeight * scale));
|
|
5608
5606
|
const previewElements = [...templateElements, ...slide.elements].slice(0, 60);
|
|
5609
5607
|
const { t } = reactI18next.useTranslation();
|
|
5610
5608
|
const transitionLabel = slide.transition ? (() => {
|
|
5611
|
-
const opt =
|
|
5609
|
+
const opt = chunkLXUMBK2O_js.SLIDE_TRANSITION_OPTIONS.find((o) => o.value === slide.transition?.type);
|
|
5612
5610
|
return opt ? t(opt.i18nKey) : slide.transition.type;
|
|
5613
5611
|
})() : void 0;
|
|
5614
5612
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -6301,7 +6299,7 @@ function SectionHeader({
|
|
|
6301
6299
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6302
6300
|
lu.LuChevronDown,
|
|
6303
6301
|
{
|
|
6304
|
-
className:
|
|
6302
|
+
className: chunkLXUMBK2O_js.cn(
|
|
6305
6303
|
"h-3 w-3 flex-shrink-0 transition-transform",
|
|
6306
6304
|
isCollapsed ? "-rotate-90" : "rotate-0"
|
|
6307
6305
|
)
|
|
@@ -6403,7 +6401,7 @@ function LazyThumbnailInner({
|
|
|
6403
6401
|
className: "relative w-full overflow-hidden rounded border border-border bg-muted/30 animate-pulse",
|
|
6404
6402
|
style: {
|
|
6405
6403
|
height: previewHeight,
|
|
6406
|
-
minWidth:
|
|
6404
|
+
minWidth: chunkLXUMBK2O_js.SLIDE_NAV_THUMBNAIL_WIDTH
|
|
6407
6405
|
}
|
|
6408
6406
|
}
|
|
6409
6407
|
) });
|
|
@@ -6440,7 +6438,7 @@ function buildFlatPaneItems(sectionGroups, showSectionHeaders, collapsedSections
|
|
|
6440
6438
|
function estimateSlideItemHeight(canvasWidth, canvasHeight) {
|
|
6441
6439
|
const safeW = Math.max(canvasWidth, 1);
|
|
6442
6440
|
const safeH = Math.max(canvasHeight, 1);
|
|
6443
|
-
const scale =
|
|
6441
|
+
const scale = chunkLXUMBK2O_js.SLIDE_NAV_THUMBNAIL_WIDTH / safeW;
|
|
6444
6442
|
const previewHeight = Math.max(56, Math.round(safeH * scale));
|
|
6445
6443
|
return previewHeight + 30;
|
|
6446
6444
|
}
|
|
@@ -6477,7 +6475,7 @@ function SlideItemInner({
|
|
|
6477
6475
|
);
|
|
6478
6476
|
const safeCanvasWidth = Math.max(canvasSize.width, 1);
|
|
6479
6477
|
const safeCanvasHeight = Math.max(canvasSize.height, 1);
|
|
6480
|
-
const scale =
|
|
6478
|
+
const scale = chunkLXUMBK2O_js.SLIDE_NAV_THUMBNAIL_WIDTH / safeCanvasWidth;
|
|
6481
6479
|
const previewHeight = Math.max(56, Math.round(safeCanvasHeight * scale));
|
|
6482
6480
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6483
6481
|
"button",
|
|
@@ -6486,7 +6484,7 @@ function SlideItemInner({
|
|
|
6486
6484
|
ref: slideRef,
|
|
6487
6485
|
"aria-label": `Go to slide ${slideIndex + 1}`,
|
|
6488
6486
|
"aria-current": isActive ? "true" : void 0,
|
|
6489
|
-
className:
|
|
6487
|
+
className: chunkLXUMBK2O_js.cn(
|
|
6490
6488
|
"group relative flex w-full items-center gap-1 cursor-pointer border-0 bg-transparent py-0.5 px-1 text-left transition-all",
|
|
6491
6489
|
isActive && "bg-accent/40 before:absolute before:left-0 before:top-1 before:bottom-1 before:w-[3px] before:bg-primary before:rounded-r",
|
|
6492
6490
|
isHidden && "opacity-50"
|
|
@@ -6502,7 +6500,7 @@ function SlideItemInner({
|
|
|
6502
6500
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6503
6501
|
"span",
|
|
6504
6502
|
{
|
|
6505
|
-
className:
|
|
6503
|
+
className: chunkLXUMBK2O_js.cn(
|
|
6506
6504
|
"text-[10px] tabular-nums text-right select-none w-full",
|
|
6507
6505
|
isActive ? "text-primary font-medium" : "text-muted-foreground"
|
|
6508
6506
|
),
|
|
@@ -6522,7 +6520,7 @@ function SlideItemInner({
|
|
|
6522
6520
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
6523
6521
|
"div",
|
|
6524
6522
|
{
|
|
6525
|
-
className:
|
|
6523
|
+
className: chunkLXUMBK2O_js.cn(
|
|
6526
6524
|
"relative flex-1 overflow-hidden border transition-colors bg-white",
|
|
6527
6525
|
isActive ? "border-primary/60" : "border-transparent group-hover:border-border/40"
|
|
6528
6526
|
),
|
|
@@ -6655,7 +6653,7 @@ function useSlidePaneCallbacks(onMoveSlide, onRenameSection) {
|
|
|
6655
6653
|
};
|
|
6656
6654
|
}
|
|
6657
6655
|
var EMPTY_TEMPLATE_ELEMENTS = [];
|
|
6658
|
-
var VIRTUALIZATION_THRESHOLD =
|
|
6656
|
+
var VIRTUALIZATION_THRESHOLD = chunkBXACB3BG_js.SLIDE_VIRTUALIZATION_THRESHOLD;
|
|
6659
6657
|
function SlidesPaneSidebar({
|
|
6660
6658
|
slides,
|
|
6661
6659
|
templateElementsBySlideId,
|
|
@@ -6727,7 +6725,7 @@ function SlidesPaneSidebar({
|
|
|
6727
6725
|
[sectionGroups, showSectionHeaders, collapsedSections]
|
|
6728
6726
|
);
|
|
6729
6727
|
const shouldVirtualize = slides.length >= VIRTUALIZATION_THRESHOLD;
|
|
6730
|
-
const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } =
|
|
6728
|
+
const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunkLXUMBK2O_js.useVirtualizedSlides({
|
|
6731
6729
|
totalItems: shouldVirtualize ? flatItems.length : 0,
|
|
6732
6730
|
itemHeight: estimatedItemHeight
|
|
6733
6731
|
});
|
|
@@ -6957,7 +6955,7 @@ function HandoutMasterPanel({
|
|
|
6957
6955
|
{
|
|
6958
6956
|
type: "button",
|
|
6959
6957
|
"aria-pressed": slidesPerPage === count,
|
|
6960
|
-
className:
|
|
6958
|
+
className: chunkLXUMBK2O_js.cn(
|
|
6961
6959
|
"px-2 py-1.5 rounded text-[11px] font-medium transition-colors",
|
|
6962
6960
|
slidesPerPage === count ? "bg-primary text-white" : "bg-accent/50 text-muted-foreground hover:bg-accent/70 hover:text-foreground"
|
|
6963
6961
|
),
|
|
@@ -7085,7 +7083,7 @@ function SlideMastersList({
|
|
|
7085
7083
|
"div",
|
|
7086
7084
|
{
|
|
7087
7085
|
ref: isMasterActive ? activeRef : void 0,
|
|
7088
|
-
className:
|
|
7086
|
+
className: chunkLXUMBK2O_js.cn(
|
|
7089
7087
|
"group relative cursor-pointer rounded-lg border-2 p-1 transition-all",
|
|
7090
7088
|
isMasterActive ? "border-amber-500 bg-amber-500/10" : "border-border bg-background/40 hover:border-border"
|
|
7091
7089
|
),
|
|
@@ -7102,7 +7100,7 @@ function SlideMastersList({
|
|
|
7102
7100
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 px-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7103
7101
|
"span",
|
|
7104
7102
|
{
|
|
7105
|
-
className:
|
|
7103
|
+
className: chunkLXUMBK2O_js.cn(
|
|
7106
7104
|
"text-[10px] font-medium",
|
|
7107
7105
|
isMasterActive ? "text-amber-400" : "text-muted-foreground"
|
|
7108
7106
|
),
|
|
@@ -7118,7 +7116,7 @@ function SlideMastersList({
|
|
|
7118
7116
|
"div",
|
|
7119
7117
|
{
|
|
7120
7118
|
ref: isLayoutActive ? activeRef : void 0,
|
|
7121
|
-
className:
|
|
7119
|
+
className: chunkLXUMBK2O_js.cn(
|
|
7122
7120
|
"group relative cursor-pointer rounded-md border-2 p-0.5 transition-all",
|
|
7123
7121
|
isLayoutActive ? "border-primary bg-primary/10" : "border-border bg-background/40 hover:border-border"
|
|
7124
7122
|
),
|
|
@@ -7135,7 +7133,7 @@ function SlideMastersList({
|
|
|
7135
7133
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5 px-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7136
7134
|
"span",
|
|
7137
7135
|
{
|
|
7138
|
-
className:
|
|
7136
|
+
className: chunkLXUMBK2O_js.cn(
|
|
7139
7137
|
"text-[9px]",
|
|
7140
7138
|
isLayoutActive ? "text-primary" : "text-muted-foreground"
|
|
7141
7139
|
),
|
|
@@ -7219,7 +7217,7 @@ function MasterViewSidebar({
|
|
|
7219
7217
|
type: "button",
|
|
7220
7218
|
role: "tab",
|
|
7221
7219
|
"aria-selected": masterViewTab === tab.key,
|
|
7222
|
-
className:
|
|
7220
|
+
className: chunkLXUMBK2O_js.cn(
|
|
7223
7221
|
"flex-1 px-1 py-1.5 text-[10px] font-medium transition-colors border-b-2",
|
|
7224
7222
|
masterViewTab === tab.key ? "border-amber-500 text-amber-400" : "border-transparent text-muted-foreground hover:text-foreground"
|
|
7225
7223
|
),
|
|
@@ -7691,7 +7689,7 @@ function SectionBlock({
|
|
|
7691
7689
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7692
7690
|
lu.LuChevronDown,
|
|
7693
7691
|
{
|
|
7694
|
-
className:
|
|
7692
|
+
className: chunkLXUMBK2O_js.cn("h-3 w-3 transition-transform", collapsed ? "-rotate-90" : "rotate-0")
|
|
7695
7693
|
}
|
|
7696
7694
|
),
|
|
7697
7695
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-left", children: section.label }),
|
|
@@ -7738,7 +7736,7 @@ function SlideCardImpl({
|
|
|
7738
7736
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7739
7737
|
"div",
|
|
7740
7738
|
{
|
|
7741
|
-
className:
|
|
7739
|
+
className: chunkLXUMBK2O_js.cn(
|
|
7742
7740
|
"group relative cursor-pointer rounded-lg border-2 p-1 transition-all",
|
|
7743
7741
|
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",
|
|
7744
7742
|
slide.hidden && "opacity-40"
|
|
@@ -7757,7 +7755,7 @@ function SlideCardImpl({
|
|
|
7757
7755
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7758
7756
|
"span",
|
|
7759
7757
|
{
|
|
7760
|
-
className:
|
|
7758
|
+
className: chunkLXUMBK2O_js.cn(
|
|
7761
7759
|
"text-[11px] font-medium",
|
|
7762
7760
|
isSelected ? "text-primary" : isActive ? "text-primary/70" : "text-muted-foreground"
|
|
7763
7761
|
),
|
|
@@ -8758,7 +8756,7 @@ function segmentsToEditorHtml(segments) {
|
|
|
8758
8756
|
inlineStyles.push(`font-family:${segment.style.fontFamily}`);
|
|
8759
8757
|
}
|
|
8760
8758
|
const text = escapeHtml(segment.text);
|
|
8761
|
-
if (segment.style.hyperlink &&
|
|
8759
|
+
if (segment.style.hyperlink && chunkBXACB3BG_js.isUrlSafe(segment.style.hyperlink)) {
|
|
8762
8760
|
const href = escapeHtml(segment.style.hyperlink);
|
|
8763
8761
|
return `<a href="${href}" style="color:#4a9eff;text-decoration:underline;cursor:pointer" data-hyperlink="${href}">${text}</a>`;
|
|
8764
8762
|
}
|
|
@@ -8841,7 +8839,7 @@ function renderRichNotesSegments(segments) {
|
|
|
8841
8839
|
if (segment.style.fontFamily) {
|
|
8842
8840
|
style.fontFamily = segment.style.fontFamily;
|
|
8843
8841
|
}
|
|
8844
|
-
if (segment.style.hyperlink &&
|
|
8842
|
+
if (segment.style.hyperlink && chunkBXACB3BG_js.isUrlSafe(segment.style.hyperlink)) {
|
|
8845
8843
|
const safeHref = segment.style.hyperlink;
|
|
8846
8844
|
style.color = "#4a9eff";
|
|
8847
8845
|
style.textDecoration = "underline";
|
|
@@ -8854,7 +8852,7 @@ function renderRichNotesSegments(segments) {
|
|
|
8854
8852
|
style,
|
|
8855
8853
|
onClick: (e) => {
|
|
8856
8854
|
e.preventDefault();
|
|
8857
|
-
|
|
8855
|
+
chunkBXACB3BG_js.safeOpenUrl(safeHref);
|
|
8858
8856
|
},
|
|
8859
8857
|
children: segment.text
|
|
8860
8858
|
},
|
|
@@ -9418,7 +9416,7 @@ function useSlideNotes({
|
|
|
9418
9416
|
const href = target.getAttribute("data-hyperlink") || target.getAttribute("href");
|
|
9419
9417
|
if (href && (e.ctrlKey || e.metaKey)) {
|
|
9420
9418
|
e.preventDefault();
|
|
9421
|
-
|
|
9419
|
+
chunkBXACB3BG_js.safeOpenUrl(href);
|
|
9422
9420
|
}
|
|
9423
9421
|
}, []);
|
|
9424
9422
|
return {
|
|
@@ -9492,7 +9490,7 @@ var SlideNotesPanel = ({
|
|
|
9492
9490
|
});
|
|
9493
9491
|
const hasNotes = draft.trim().length > 0;
|
|
9494
9492
|
const slideLabel = activeSlide ? t("pptx.notes.slideN", { n: activeSlide.slideNumber }) : t("pptx.notes.noSlide");
|
|
9495
|
-
const { dragY, handlers: dragHandlers } =
|
|
9493
|
+
const { dragY, handlers: dragHandlers } = chunkLXUMBK2O_js.useSheetDismissDrag(onToggle);
|
|
9496
9494
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
9497
9495
|
isExpanded && /* @__PURE__ */ jsxRuntime.jsx(
|
|
9498
9496
|
"button",
|
|
@@ -9506,7 +9504,7 @@ var SlideNotesPanel = ({
|
|
|
9506
9504
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
9507
9505
|
"div",
|
|
9508
9506
|
{
|
|
9509
|
-
className:
|
|
9507
|
+
className: chunkLXUMBK2O_js.cn(
|
|
9510
9508
|
"flex flex-col border-t border-border/60 bg-background select-none",
|
|
9511
9509
|
// On mobile, hide the entire notes strip when collapsed: the
|
|
9512
9510
|
// MobileBottomBar's Notes button is the entry point instead.
|
|
@@ -9763,8 +9761,8 @@ function VersionHistoryPanel({
|
|
|
9763
9761
|
className: "px-3 py-2.5 border-b border-border hover:bg-muted/50 group",
|
|
9764
9762
|
children: [
|
|
9765
9763
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
9766
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-foreground", children:
|
|
9767
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[10px] text-muted-foreground", children:
|
|
9764
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs text-foreground", children: chunkBXACB3BG_js.formatVersionTimestamp(version.timestamp) }),
|
|
9765
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[10px] text-muted-foreground", children: chunkBXACB3BG_js.formatRelativeTime(version.timestamp) })
|
|
9768
9766
|
] }),
|
|
9769
9767
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[10px] text-muted-foreground mt-0.5", children: formatFileSize(version.size) }),
|
|
9770
9768
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1 mt-1.5 opacity-0 group-hover:opacity-100 transition-opacity", children: [
|
|
@@ -9857,7 +9855,7 @@ function SlideDiffRow({
|
|
|
9857
9855
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9858
9856
|
"div",
|
|
9859
9857
|
{
|
|
9860
|
-
className:
|
|
9858
|
+
className: chunkLXUMBK2O_js.cn(
|
|
9861
9859
|
"rounded-lg border transition-colors",
|
|
9862
9860
|
isResolved ? "border-border/60 bg-card/40 opacity-60" : "border-border bg-background/70"
|
|
9863
9861
|
),
|
|
@@ -9871,7 +9869,7 @@ function SlideDiffRow({
|
|
|
9871
9869
|
children: [
|
|
9872
9870
|
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" }),
|
|
9873
9871
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-foreground", children: t("pptx.compare.slideNumber", { number: slideNumber }) }),
|
|
9874
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
9872
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkLXUMBK2O_js.cn("rounded-full px-2 py-0.5 text-[10px] font-medium", statusColor), children: statusLabel }),
|
|
9875
9873
|
diff.changes.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-muted-foreground", children: [
|
|
9876
9874
|
diff.changes.length,
|
|
9877
9875
|
" ",
|
|
@@ -9881,7 +9879,7 @@ function SlideDiffRow({
|
|
|
9881
9879
|
isResolved && /* @__PURE__ */ jsxRuntime.jsx(
|
|
9882
9880
|
"span",
|
|
9883
9881
|
{
|
|
9884
|
-
className:
|
|
9882
|
+
className: chunkLXUMBK2O_js.cn(
|
|
9885
9883
|
"text-[10px] font-medium",
|
|
9886
9884
|
accepted ? "text-green-400" : "text-muted-foreground"
|
|
9887
9885
|
),
|
|
@@ -9909,7 +9907,7 @@ function SlideDiffRow({
|
|
|
9909
9907
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9910
9908
|
"div",
|
|
9911
9909
|
{
|
|
9912
|
-
className:
|
|
9910
|
+
className: chunkLXUMBK2O_js.cn(
|
|
9913
9911
|
"rounded border overflow-hidden",
|
|
9914
9912
|
diff.status === "added" ? "border-green-700/60" : diff.status === "changed" ? "border-amber-700/60" : "border-border"
|
|
9915
9913
|
),
|
|
@@ -10075,7 +10073,7 @@ function useModalFocus(open, panelRef, onClose, initialFocusRef) {
|
|
|
10075
10073
|
if (!open || !panel) {
|
|
10076
10074
|
return;
|
|
10077
10075
|
}
|
|
10078
|
-
return
|
|
10076
|
+
return chunkBXACB3BG_js.activateModalFocus(panel, {
|
|
10079
10077
|
initialFocus: initialFocusRef?.current,
|
|
10080
10078
|
onEscape: onClose
|
|
10081
10079
|
});
|
|
@@ -10630,7 +10628,7 @@ function DocumentPropertiesDialog({
|
|
|
10630
10628
|
const handleClose = React14.useCallback(() => {
|
|
10631
10629
|
onClose();
|
|
10632
10630
|
}, [onClose]);
|
|
10633
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
10631
|
+
const { panelStyle, handlers: dragHandlers } = chunkLXUMBK2O_js.useModalDismissDrag(handleClose);
|
|
10634
10632
|
if (!isOpen) {
|
|
10635
10633
|
return null;
|
|
10636
10634
|
}
|
|
@@ -10778,7 +10776,7 @@ function FontEmbeddingPanel({
|
|
|
10778
10776
|
const scanFonts = React14.useCallback(async () => {
|
|
10779
10777
|
setScanning(true);
|
|
10780
10778
|
try {
|
|
10781
|
-
setAvailableFamilies(await
|
|
10779
|
+
setAvailableFamilies(await chunkBXACB3BG_js.scanAvailableFontFamilies(usedFontFamilies));
|
|
10782
10780
|
setScanned(true);
|
|
10783
10781
|
} catch {
|
|
10784
10782
|
} finally {
|
|
@@ -11161,7 +11159,7 @@ function PresentationAudienceEffects({ snapshot }) {
|
|
|
11161
11159
|
children: strokes.map((stroke) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
11162
11160
|
"path",
|
|
11163
11161
|
{
|
|
11164
|
-
d:
|
|
11162
|
+
d: chunkBXACB3BG_js.presentationInkPath(stroke.points),
|
|
11165
11163
|
fill: "none",
|
|
11166
11164
|
stroke: stroke.color,
|
|
11167
11165
|
strokeWidth: stroke.width / 10,
|
|
@@ -11262,7 +11260,7 @@ function PresentationSubtitleBar({
|
|
|
11262
11260
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute bottom-14 left-1/2 -translate-x-1/2 z-[70] max-w-[80%] min-w-[300px]", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-6 py-3 rounded-lg bg-black/75 backdrop-blur-sm border border-white/10", children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-center text-[15px] text-white/70 italic", children: renderedText }) }) });
|
|
11263
11261
|
}
|
|
11264
11262
|
function renderNotesSegments(segments) {
|
|
11265
|
-
return
|
|
11263
|
+
return chunkBXACB3BG_js.notesSegmentsToSpans(segments).map((span) => {
|
|
11266
11264
|
if (span.kind === "break") {
|
|
11267
11265
|
return React14__default.default.createElement("br", { key: span.key });
|
|
11268
11266
|
}
|
|
@@ -11400,7 +11398,7 @@ function ScaledSlidePreviewImpl({
|
|
|
11400
11398
|
{
|
|
11401
11399
|
className: "absolute inset-0",
|
|
11402
11400
|
style: {
|
|
11403
|
-
backgroundColor:
|
|
11401
|
+
backgroundColor: chunkBXACB3BG_js.normalizeHexColor(slide.backgroundColor, "#ffffff")
|
|
11404
11402
|
}
|
|
11405
11403
|
}
|
|
11406
11404
|
),
|
|
@@ -11490,7 +11488,7 @@ function PresenterNotesRail({
|
|
|
11490
11488
|
const notesText = slide?.notes ?? "";
|
|
11491
11489
|
const notesSegments = slide?.notesSegments;
|
|
11492
11490
|
const [notesDraft, setNotesDraft] = React14.useState(notesText);
|
|
11493
|
-
const [fontSize, setFontSize] = React14.useState(
|
|
11491
|
+
const [fontSize, setFontSize] = React14.useState(chunkBXACB3BG_js.NOTES_FONT_SIZE_DEFAULT);
|
|
11494
11492
|
React14.useEffect(() => setNotesDraft(notesText), [current, notesText]);
|
|
11495
11493
|
const notes = React14.useMemo(
|
|
11496
11494
|
() => notesSegments?.length ? renderNotesSegments(notesSegments) : notesText.trim() ? notesText : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "italic text-muted-foreground", children: t("pptx.presenter.noNotes") }),
|
|
@@ -11500,11 +11498,11 @@ function PresenterNotesRail({
|
|
|
11500
11498
|
/* @__PURE__ */ jsxRuntime.jsxs("header", { className: "flex items-center justify-between border-b border-border/60 px-4 py-3", children: [
|
|
11501
11499
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
11502
11500
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[10px] uppercase tracking-wider text-muted-foreground", children: t("pptx.presenter.currentTime") }),
|
|
11503
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-mono text-lg tabular-nums", children:
|
|
11501
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-mono text-lg tabular-nums", children: chunkBXACB3BG_js.formatTime(new Date(now)) })
|
|
11504
11502
|
] }),
|
|
11505
11503
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-right", children: [
|
|
11506
11504
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[10px] uppercase tracking-wider text-muted-foreground", children: t("pptx.presenter.elapsed") }),
|
|
11507
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-mono text-lg tabular-nums text-primary", children:
|
|
11505
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-mono text-lg tabular-nums text-primary", children: chunkBXACB3BG_js.formatElapsed(elapsed) })
|
|
11508
11506
|
] })
|
|
11509
11507
|
] }),
|
|
11510
11508
|
/* @__PURE__ */ jsxRuntime.jsxs("nav", { className: "flex items-center justify-between border-b border-border/60 px-4 py-2", children: [
|
|
@@ -11561,8 +11559,8 @@ function PresenterNotesRail({
|
|
|
11561
11559
|
"button",
|
|
11562
11560
|
{
|
|
11563
11561
|
type: "button",
|
|
11564
|
-
onClick: () => setFontSize(
|
|
11565
|
-
disabled: fontSize <=
|
|
11562
|
+
onClick: () => setFontSize(chunkBXACB3BG_js.clampNotesFontSize(fontSize - chunkBXACB3BG_js.NOTES_FONT_SIZE_STEP)),
|
|
11563
|
+
disabled: fontSize <= chunkBXACB3BG_js.NOTES_FONT_SIZE_MIN,
|
|
11566
11564
|
"aria-label": t("pptx.presenter.decreaseFontSize"),
|
|
11567
11565
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuMinus, {})
|
|
11568
11566
|
}
|
|
@@ -11575,8 +11573,8 @@ function PresenterNotesRail({
|
|
|
11575
11573
|
"button",
|
|
11576
11574
|
{
|
|
11577
11575
|
type: "button",
|
|
11578
|
-
onClick: () => setFontSize(
|
|
11579
|
-
disabled: fontSize >=
|
|
11576
|
+
onClick: () => setFontSize(chunkBXACB3BG_js.clampNotesFontSize(fontSize + chunkBXACB3BG_js.NOTES_FONT_SIZE_STEP)),
|
|
11577
|
+
disabled: fontSize >= chunkBXACB3BG_js.NOTES_FONT_SIZE_MAX,
|
|
11580
11578
|
"aria-label": t("pptx.presenter.increaseFontSize"),
|
|
11581
11579
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPlus, {})
|
|
11582
11580
|
}
|
|
@@ -11662,7 +11660,7 @@ function usePresenterInk(snapshot, onUpdate) {
|
|
|
11662
11660
|
const nextPoint = point(event);
|
|
11663
11661
|
if (pointer.tool === "eraser") {
|
|
11664
11662
|
onUpdate({
|
|
11665
|
-
inkStrokes:
|
|
11663
|
+
inkStrokes: chunkBXACB3BG_js.erasePresentationInkAt(
|
|
11666
11664
|
snapshot.inkStrokes ?? [],
|
|
11667
11665
|
snapshot.slideIndex,
|
|
11668
11666
|
nextPoint
|
|
@@ -11692,11 +11690,11 @@ function usePresenterInk(snapshot, onUpdate) {
|
|
|
11692
11690
|
return;
|
|
11693
11691
|
}
|
|
11694
11692
|
if (pointer.tool === "laser") {
|
|
11695
|
-
onUpdate({ pointer:
|
|
11693
|
+
onUpdate({ pointer: chunkBXACB3BG_js.movePresenterPointer(pointer, nextPoint.x, nextPoint.y) });
|
|
11696
11694
|
}
|
|
11697
11695
|
if (pointer.tool === "eraser" && event.buttons === 1) {
|
|
11698
11696
|
onUpdate({
|
|
11699
|
-
inkStrokes:
|
|
11697
|
+
inkStrokes: chunkBXACB3BG_js.erasePresentationInkAt(
|
|
11700
11698
|
snapshot.inkStrokes ?? [],
|
|
11701
11699
|
snapshot.slideIndex,
|
|
11702
11700
|
nextPoint
|
|
@@ -11706,7 +11704,7 @@ function usePresenterInk(snapshot, onUpdate) {
|
|
|
11706
11704
|
if (drawingId.current && event.buttons === 1) {
|
|
11707
11705
|
onUpdate({
|
|
11708
11706
|
inkStrokes: (snapshot.inkStrokes ?? []).map(
|
|
11709
|
-
(stroke) => stroke.id === drawingId.current ?
|
|
11707
|
+
(stroke) => stroke.id === drawingId.current ? chunkBXACB3BG_js.appendPresentationInkPoint(stroke, nextPoint) : stroke
|
|
11710
11708
|
)
|
|
11711
11709
|
});
|
|
11712
11710
|
}
|
|
@@ -11857,7 +11855,7 @@ function PresenterView({
|
|
|
11857
11855
|
"aria-valuemin": 0,
|
|
11858
11856
|
"aria-valuemax": 100,
|
|
11859
11857
|
"aria-label": t("pptx.presenter.timerProgress"),
|
|
11860
|
-
title: `${
|
|
11858
|
+
title: `${chunkBXACB3BG_js.formatElapsed(elapsed)} (segment ${timerSegment + 1})`,
|
|
11861
11859
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
11862
11860
|
"div",
|
|
11863
11861
|
{
|
|
@@ -11884,7 +11882,7 @@ function MobilePresenterView({
|
|
|
11884
11882
|
const interval = window.setInterval(() => setNow(Date.now()), 1e3);
|
|
11885
11883
|
return () => window.clearInterval(interval);
|
|
11886
11884
|
}, []);
|
|
11887
|
-
const elapsed =
|
|
11885
|
+
const elapsed = chunkBXACB3BG_js.mobileElapsedSince(presentationStartTime, now);
|
|
11888
11886
|
const currentSlide = slides[currentSlideIndex];
|
|
11889
11887
|
const nextSlide = currentSlideIndex + 1 < slides.length ? slides[currentSlideIndex + 1] : void 0;
|
|
11890
11888
|
if (!currentSlide) {
|
|
@@ -11893,8 +11891,8 @@ function MobilePresenterView({
|
|
|
11893
11891
|
const notesText = currentSlide.notes ?? "";
|
|
11894
11892
|
const notesSegments = currentSlide.notesSegments;
|
|
11895
11893
|
const hasRichNotes = notesSegments && notesSegments.length > 0;
|
|
11896
|
-
const atFirst =
|
|
11897
|
-
const atLast =
|
|
11894
|
+
const atFirst = chunkBXACB3BG_js.isFirstSlide(currentSlideIndex);
|
|
11895
|
+
const atLast = chunkBXACB3BG_js.isLastSlide(currentSlideIndex, slides.length);
|
|
11898
11896
|
const insetStyle = {
|
|
11899
11897
|
paddingTop: "env(safe-area-inset-top, 0px)",
|
|
11900
11898
|
paddingBottom: "env(safe-area-inset-bottom, 0px)",
|
|
@@ -11905,9 +11903,9 @@ function MobilePresenterView({
|
|
|
11905
11903
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2 px-4 py-2 border-b border-border/60", children: [
|
|
11906
11904
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col", children: [
|
|
11907
11905
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground uppercase tracking-wider", children: t("pptx.presenter.elapsed") }),
|
|
11908
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-lg font-mono tabular-nums text-primary", children:
|
|
11906
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-lg font-mono tabular-nums text-primary", children: chunkBXACB3BG_js.formatMobileElapsed(elapsed) })
|
|
11909
11907
|
] }),
|
|
11910
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-mono tabular-nums text-foreground", children:
|
|
11908
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-mono tabular-nums text-foreground", children: chunkBXACB3BG_js.mobileSlideCounter(currentSlideIndex, slides.length) }),
|
|
11911
11909
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
11912
11910
|
"button",
|
|
11913
11911
|
{
|
|
@@ -12249,7 +12247,7 @@ function SelectionPane({
|
|
|
12249
12247
|
setDragIndex(null);
|
|
12250
12248
|
setDragOverIndex(null);
|
|
12251
12249
|
},
|
|
12252
|
-
className:
|
|
12250
|
+
className: chunkLXUMBK2O_js.cn(
|
|
12253
12251
|
"flex items-center gap-1.5 px-2 py-1 text-xs cursor-pointer transition-colors",
|
|
12254
12252
|
isSelected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground",
|
|
12255
12253
|
dragOverIndex === realIndex ? "border-t-2 border-primary" : ""
|
|
@@ -12306,7 +12304,7 @@ function RibbonGroup({
|
|
|
12306
12304
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12307
12305
|
"section",
|
|
12308
12306
|
{
|
|
12309
|
-
className:
|
|
12307
|
+
className: chunkLXUMBK2O_js.cn(
|
|
12310
12308
|
"relative flex min-h-[78px] shrink-0 items-start gap-1 border-r border-border/60 px-2 pb-4 pt-1 last:border-r-0",
|
|
12311
12309
|
className
|
|
12312
12310
|
),
|
|
@@ -12334,7 +12332,7 @@ function RibbonCommand({
|
|
|
12334
12332
|
onClick,
|
|
12335
12333
|
disabled,
|
|
12336
12334
|
title: title ?? label,
|
|
12337
|
-
className:
|
|
12335
|
+
className: chunkLXUMBK2O_js.cn(
|
|
12338
12336
|
"inline-flex rounded-sm text-foreground transition-colors hover:bg-accent disabled:cursor-not-allowed disabled:opacity-35",
|
|
12339
12337
|
active && "bg-primary/15 text-primary ring-1 ring-primary/35",
|
|
12340
12338
|
compact ? "h-[26px] min-w-[88px] items-center gap-1.5 px-1.5 text-left text-[10px] leading-3" : "h-[58px] min-w-[54px] max-w-[72px] flex-col items-center justify-start gap-0.5 px-1 py-1 text-center text-[9px] leading-[11px]"
|
|
@@ -12343,7 +12341,7 @@ function RibbonCommand({
|
|
|
12343
12341
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12344
12342
|
"span",
|
|
12345
12343
|
{
|
|
12346
|
-
className:
|
|
12344
|
+
className: chunkLXUMBK2O_js.cn(
|
|
12347
12345
|
"grid shrink-0 place-items-center text-primary",
|
|
12348
12346
|
compact ? "h-4 w-4 [&>svg]:h-4 [&>svg]:w-4" : "h-7 w-7 [&>svg]:h-6 [&>svg]:w-6"
|
|
12349
12347
|
),
|
|
@@ -12372,7 +12370,7 @@ function RibbonToggle({
|
|
|
12372
12370
|
"label",
|
|
12373
12371
|
{
|
|
12374
12372
|
title,
|
|
12375
|
-
className:
|
|
12373
|
+
className: chunkLXUMBK2O_js.cn(
|
|
12376
12374
|
"flex h-[19px] items-center gap-1 whitespace-nowrap rounded-sm px-1 text-[10px] text-foreground",
|
|
12377
12375
|
checked && "bg-primary/15 text-primary"
|
|
12378
12376
|
),
|
|
@@ -12774,7 +12772,7 @@ function ArrangeSection(p) {
|
|
|
12774
12772
|
disabled: !p.canEdit || p.canActivateFormatPainter === false && !p.formatPainterActive,
|
|
12775
12773
|
"data-testid": "format-painter-toggle",
|
|
12776
12774
|
"data-active": p.formatPainterActive ? "true" : "false",
|
|
12777
|
-
className:
|
|
12775
|
+
className: chunkLXUMBK2O_js.cn(
|
|
12778
12776
|
pill,
|
|
12779
12777
|
p.formatPainterActive ? "bg-amber-600 hover:bg-amber-500 text-amber-50" : ""
|
|
12780
12778
|
),
|
|
@@ -12887,7 +12885,7 @@ function DesignSection(p) {
|
|
|
12887
12885
|
{
|
|
12888
12886
|
onClick: p.onToggleThemeGallery,
|
|
12889
12887
|
disabled: !p.canEdit,
|
|
12890
|
-
className:
|
|
12888
|
+
className: chunkLXUMBK2O_js.cn(
|
|
12891
12889
|
pill,
|
|
12892
12890
|
p.isThemeGalleryOpen ? "bg-primary hover:bg-primary/80 text-white" : ""
|
|
12893
12891
|
),
|
|
@@ -12903,7 +12901,7 @@ function DesignSection(p) {
|
|
|
12903
12901
|
{
|
|
12904
12902
|
onClick: p.onToggleThemeEditor,
|
|
12905
12903
|
disabled: !p.canEdit,
|
|
12906
|
-
className:
|
|
12904
|
+
className: chunkLXUMBK2O_js.cn(pill, p.isThemeEditorOpen ? "bg-primary hover:bg-primary/80 text-white" : ""),
|
|
12907
12905
|
title: t("pptx.ribbon.editThemeTitle"),
|
|
12908
12906
|
children: [
|
|
12909
12907
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuPencil, { className: ics }),
|
|
@@ -12928,7 +12926,7 @@ function DesignSection(p) {
|
|
|
12928
12926
|
"button",
|
|
12929
12927
|
{
|
|
12930
12928
|
onClick: p.onToggleInspector,
|
|
12931
|
-
className:
|
|
12929
|
+
className: chunkLXUMBK2O_js.cn(
|
|
12932
12930
|
pill,
|
|
12933
12931
|
p.isInspectorPaneOpen ? "bg-primary hover:bg-primary/80 text-white" : ""
|
|
12934
12932
|
),
|
|
@@ -12970,7 +12968,7 @@ function TransitionsSection(p) {
|
|
|
12970
12968
|
{
|
|
12971
12969
|
type: "button",
|
|
12972
12970
|
onClick: () => setSelected(preset.value),
|
|
12973
|
-
className:
|
|
12971
|
+
className: chunkLXUMBK2O_js.cn(
|
|
12974
12972
|
"flex-shrink-0 px-2 py-1 max-md:min-h-[44px] rounded border text-[11px] leading-tight transition-colors",
|
|
12975
12973
|
selected === preset.value ? "border-primary bg-primary/10 text-primary font-medium" : "border-border bg-muted hover:bg-accent text-foreground"
|
|
12976
12974
|
),
|
|
@@ -13055,7 +13053,7 @@ function TransitionsSection(p) {
|
|
|
13055
13053
|
{
|
|
13056
13054
|
type: "button",
|
|
13057
13055
|
onClick: p.onToggleInspector,
|
|
13058
|
-
className:
|
|
13056
|
+
className: chunkLXUMBK2O_js.cn(
|
|
13059
13057
|
pill,
|
|
13060
13058
|
p.isInspectorPaneOpen ? "bg-primary hover:bg-primary/80 text-white" : ""
|
|
13061
13059
|
),
|
|
@@ -13076,7 +13074,7 @@ function DrawSection(p) {
|
|
|
13076
13074
|
{
|
|
13077
13075
|
type: "button",
|
|
13078
13076
|
onClick: () => p.onSetActiveTool(tool.id),
|
|
13079
|
-
className:
|
|
13077
|
+
className: chunkLXUMBK2O_js.cn(
|
|
13080
13078
|
i < a.length - 1 ? gB : gL,
|
|
13081
13079
|
p.activeTool === tool.id ? tool.ac ?? "bg-accent text-foreground" : ""
|
|
13082
13080
|
),
|
|
@@ -13161,7 +13159,7 @@ function BackstageAction(props) {
|
|
|
13161
13159
|
function BackstageNewGallery(props) {
|
|
13162
13160
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
13163
13161
|
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "mt-7 text-[17px] font-semibold", children: "New" }),
|
|
13164
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-5 grid grid-cols-[repeat(auto-fill,minmax(150px,1fr))] gap-6", children:
|
|
13162
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-5 grid grid-cols-[repeat(auto-fill,minmax(150px,1fr))] gap-6", children: chunkBXACB3BG_js.BACKSTAGE_TEMPLATES.map((template) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
13165
13163
|
"button",
|
|
13166
13164
|
{
|
|
13167
13165
|
type: "button",
|
|
@@ -13204,8 +13202,8 @@ function BackstageRecentList(props) {
|
|
|
13204
13202
|
/* @__PURE__ */ jsxRuntime.jsx("small", { className: "block truncate text-[11px] text-muted-foreground", children: file.location })
|
|
13205
13203
|
] })
|
|
13206
13204
|
] }),
|
|
13207
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[11px] text-muted-foreground", children:
|
|
13208
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[11px] text-muted-foreground", children:
|
|
13205
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[11px] text-muted-foreground", children: chunkBXACB3BG_js.formatBackstageDate(file.timestamp) }),
|
|
13206
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[11px] text-muted-foreground", children: chunkBXACB3BG_js.formatBackstageSize(file.size) })
|
|
13209
13207
|
]
|
|
13210
13208
|
},
|
|
13211
13209
|
file.key
|
|
@@ -13218,7 +13216,7 @@ function FileSection(p) {
|
|
|
13218
13216
|
const [query, setQuery] = React14.useState("");
|
|
13219
13217
|
const [recent, setRecent] = React14.useState([]);
|
|
13220
13218
|
React14.useEffect(() => {
|
|
13221
|
-
void
|
|
13219
|
+
void chunkBXACB3BG_js.listBackstageRecentFiles().then(setRecent);
|
|
13222
13220
|
}, []);
|
|
13223
13221
|
const visibleRecent = React14.useMemo(() => {
|
|
13224
13222
|
const q = query.trim().toLowerCase();
|
|
@@ -13230,7 +13228,7 @@ function FileSection(p) {
|
|
|
13230
13228
|
p.onClose();
|
|
13231
13229
|
}
|
|
13232
13230
|
};
|
|
13233
|
-
const title =
|
|
13231
|
+
const title = chunkBXACB3BG_js.BACKSTAGE_NAV.find((item) => item.id === page)?.label ?? "Home";
|
|
13234
13232
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
13235
13233
|
"div",
|
|
13236
13234
|
{
|
|
@@ -13251,7 +13249,7 @@ function FileSection(p) {
|
|
|
13251
13249
|
}
|
|
13252
13250
|
),
|
|
13253
13251
|
/* @__PURE__ */ jsxRuntime.jsxs("nav", { className: "flex min-h-0 flex-1 flex-col py-2", children: [
|
|
13254
|
-
|
|
13252
|
+
chunkBXACB3BG_js.BACKSTAGE_NAV.filter((item) => !item.group).map((item) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
13255
13253
|
"button",
|
|
13256
13254
|
{
|
|
13257
13255
|
type: "button",
|
|
@@ -13265,7 +13263,7 @@ function FileSection(p) {
|
|
|
13265
13263
|
item.id
|
|
13266
13264
|
)),
|
|
13267
13265
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1" }),
|
|
13268
|
-
|
|
13266
|
+
chunkBXACB3BG_js.BACKSTAGE_NAV.filter((item) => item.group).map((item) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
13269
13267
|
"button",
|
|
13270
13268
|
{
|
|
13271
13269
|
type: "button",
|
|
@@ -13553,7 +13551,7 @@ function SlidesGroup(p) {
|
|
|
13553
13551
|
type: "button",
|
|
13554
13552
|
onClick: handleNewSlide,
|
|
13555
13553
|
disabled: !p.canEdit || p.layoutOptions.length === 0,
|
|
13556
|
-
className:
|
|
13554
|
+
className: chunkLXUMBK2O_js.cn(
|
|
13557
13555
|
pill,
|
|
13558
13556
|
"whitespace-nowrap",
|
|
13559
13557
|
p.layoutOptions.length > 0 ? "rounded-r-none" : ""
|
|
@@ -13743,7 +13741,7 @@ function HomeSection(p) {
|
|
|
13743
13741
|
setTimeout(() => setCutFeedback(false), 600);
|
|
13744
13742
|
},
|
|
13745
13743
|
disabled: !p.canEdit,
|
|
13746
|
-
className:
|
|
13744
|
+
className: chunkLXUMBK2O_js.cn(gB, cutFeedback && "bg-green-600/20 text-green-400"),
|
|
13747
13745
|
title: t("pptx.arrange.cut"),
|
|
13748
13746
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuScissors, { className: ic2 })
|
|
13749
13747
|
}
|
|
@@ -13757,7 +13755,7 @@ function HomeSection(p) {
|
|
|
13757
13755
|
setCopiedFeedback(true);
|
|
13758
13756
|
setTimeout(() => setCopiedFeedback(false), 600);
|
|
13759
13757
|
},
|
|
13760
|
-
className:
|
|
13758
|
+
className: chunkLXUMBK2O_js.cn(gB, copiedFeedback && "bg-green-600/20 text-green-400"),
|
|
13761
13759
|
title: t("pptx.arrange.copy"),
|
|
13762
13760
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuCopy, { className: ic2 })
|
|
13763
13761
|
}
|
|
@@ -13770,7 +13768,7 @@ function HomeSection(p) {
|
|
|
13770
13768
|
disabled: !p.canEdit || p.canActivateFormatPainter === false && !p.formatPainterActive,
|
|
13771
13769
|
"data-testid": "format-painter-toggle",
|
|
13772
13770
|
"data-active": p.formatPainterActive ? "true" : "false",
|
|
13773
|
-
className:
|
|
13771
|
+
className: chunkLXUMBK2O_js.cn(
|
|
13774
13772
|
gL,
|
|
13775
13773
|
p.formatPainterActive ? "bg-amber-600 hover:bg-amber-500 text-amber-50" : ""
|
|
13776
13774
|
),
|
|
@@ -13862,7 +13860,7 @@ function InsertSection(p) {
|
|
|
13862
13860
|
const [datePickerOpen, setDatePickerOpen] = React14.useState(false);
|
|
13863
13861
|
const [datePickerValue, setDatePickerValue] = React14.useState("");
|
|
13864
13862
|
const [dateFormat, setDateFormat] = React14.useState("locale");
|
|
13865
|
-
const [newChartType, setNewChartType] = React14.useState(
|
|
13863
|
+
const [newChartType, setNewChartType] = React14.useState(chunkBXACB3BG_js.DEFAULT_INSERT_CHART_TYPE);
|
|
13866
13864
|
const datePickerRef = React14.useRef(null);
|
|
13867
13865
|
const openDatePicker = React14.useCallback(() => {
|
|
13868
13866
|
const now = /* @__PURE__ */ new Date();
|
|
@@ -13945,7 +13943,7 @@ function InsertSection(p) {
|
|
|
13945
13943
|
onChange: (e) => p.onSetNewShapeType(e.target.value),
|
|
13946
13944
|
className: "bg-transparent py-1.5 pl-2 pr-1 outline-none text-xs",
|
|
13947
13945
|
title: t("pptx.insert.shapeType"),
|
|
13948
|
-
children:
|
|
13946
|
+
children: chunkLXUMBK2O_js.SHAPE_PRESETS.map((sp) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: sp.type, className: "bg-background", children: t(sp.i18nKey) }, sp.type))
|
|
13949
13947
|
}
|
|
13950
13948
|
),
|
|
13951
13949
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -13956,7 +13954,7 @@ function InsertSection(p) {
|
|
|
13956
13954
|
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",
|
|
13957
13955
|
title: t("pptx.insert.addShape"),
|
|
13958
13956
|
children: [
|
|
13959
|
-
|
|
13957
|
+
chunkLXUMBK2O_js.SHAPE_PRESETS.find((sp) => sp.type === p.newShapeType)?.icon || /* @__PURE__ */ jsxRuntime.jsx(lu.LuSquare, { className: ic2 }),
|
|
13960
13958
|
t("pptx.insert.shape")
|
|
13961
13959
|
]
|
|
13962
13960
|
}
|
|
@@ -14009,7 +14007,7 @@ function InsertSection(p) {
|
|
|
14009
14007
|
onChange: (e) => setNewChartType(e.target.value),
|
|
14010
14008
|
className: "bg-transparent py-1.5 pl-2 pr-1 outline-none text-xs",
|
|
14011
14009
|
title: t("pptx.ribbon.chartType"),
|
|
14012
|
-
children:
|
|
14010
|
+
children: chunkBXACB3BG_js.INSERT_CHART_TYPES.map((ct) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: ct.type, className: "bg-background", children: ct.label }, ct.type))
|
|
14013
14011
|
}
|
|
14014
14012
|
),
|
|
14015
14013
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -14111,7 +14109,7 @@ function InsertSection(p) {
|
|
|
14111
14109
|
]
|
|
14112
14110
|
}
|
|
14113
14111
|
),
|
|
14114
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute left-0 top-full z-50 hidden group-hover:flex flex-col w-40 pt-1", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border border-border bg-popover backdrop-blur-lg shadow-2xl py-1", children:
|
|
14112
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute left-0 top-full z-50 hidden group-hover:flex flex-col w-40 pt-1", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border border-border bg-popover backdrop-blur-lg shadow-2xl py-1", children: chunkBXACB3BG_js.ACTION_BUTTON_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
14115
14113
|
"button",
|
|
14116
14114
|
{
|
|
14117
14115
|
type: "button",
|
|
@@ -14211,16 +14209,7 @@ function InsertSection(p) {
|
|
|
14211
14209
|
)
|
|
14212
14210
|
] }) })
|
|
14213
14211
|
] }),
|
|
14214
|
-
p.onOpenHeaderFooter && /* @__PURE__ */ jsxRuntime.jsx(
|
|
14215
|
-
"button",
|
|
14216
|
-
{
|
|
14217
|
-
type: "button",
|
|
14218
|
-
disabled: !canEdit,
|
|
14219
|
-
className: pill,
|
|
14220
|
-
onClick: p.onOpenHeaderFooter,
|
|
14221
|
-
children: t("pptx.headerFooter.title")
|
|
14222
|
-
}
|
|
14223
|
-
),
|
|
14212
|
+
p.onOpenHeaderFooter && /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", disabled: !canEdit, className: pill, onClick: p.onOpenHeaderFooter, children: t("pptx.headerFooter.title") }),
|
|
14224
14213
|
datePickerOpen && /* @__PURE__ */ jsxRuntime.jsx(
|
|
14225
14214
|
"div",
|
|
14226
14215
|
{
|
|
@@ -15544,7 +15533,7 @@ function MobileSheet({
|
|
|
15544
15533
|
headerRight
|
|
15545
15534
|
}) {
|
|
15546
15535
|
const sheetRef = React14.useRef(null);
|
|
15547
|
-
const { dragY, dragging, handlers } =
|
|
15536
|
+
const { dragY, dragging, handlers } = chunkLXUMBK2O_js.useSheetDismissDrag(onClose);
|
|
15548
15537
|
useModalFocus(open, sheetRef, onClose);
|
|
15549
15538
|
if (!open) {
|
|
15550
15539
|
return null;
|
|
@@ -15568,7 +15557,7 @@ function MobileSheet({
|
|
|
15568
15557
|
"aria-modal": "true",
|
|
15569
15558
|
"aria-label": typeof title === "string" ? title : "Mobile panel",
|
|
15570
15559
|
tabIndex: -1,
|
|
15571
|
-
className:
|
|
15560
|
+
className: chunkLXUMBK2O_js.cn(
|
|
15572
15561
|
"relative bg-background border-t border-border rounded-t-2xl shadow-2xl flex flex-col overflow-hidden",
|
|
15573
15562
|
"animate-in slide-in-from-bottom duration-200",
|
|
15574
15563
|
className
|
|
@@ -15637,7 +15626,7 @@ function MobileMenuSheet(props) {
|
|
|
15637
15626
|
{
|
|
15638
15627
|
type: "button",
|
|
15639
15628
|
onClick: () => setActive(active === key ? null : key),
|
|
15640
|
-
className:
|
|
15629
|
+
className: chunkLXUMBK2O_js.cn(
|
|
15641
15630
|
"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]",
|
|
15642
15631
|
active === key ? "bg-primary text-white border-primary" : "border-border text-muted-foreground hover:text-foreground hover:bg-accent/40"
|
|
15643
15632
|
),
|
|
@@ -15934,7 +15923,7 @@ function MobileToolbar(props) {
|
|
|
15934
15923
|
{
|
|
15935
15924
|
type: "button",
|
|
15936
15925
|
onClick: () => onSetMode("present"),
|
|
15937
|
-
className:
|
|
15926
|
+
className: chunkLXUMBK2O_js.cn(btn, "text-primary"),
|
|
15938
15927
|
title: t("pptx.toolbar.present"),
|
|
15939
15928
|
"aria-label": t("pptx.toolbar.present"),
|
|
15940
15929
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPresentation, { className: "w-5 h-5" })
|
|
@@ -15945,7 +15934,7 @@ function MobileToolbar(props) {
|
|
|
15945
15934
|
{
|
|
15946
15935
|
type: "button",
|
|
15947
15936
|
onClick: props.onOpenShareDialog ?? props.onPackageForSharing,
|
|
15948
|
-
className:
|
|
15937
|
+
className: chunkLXUMBK2O_js.cn(btn, "bg-primary text-white hover:bg-primary/90 px-3"),
|
|
15949
15938
|
title: t("pptx.toolbar.share"),
|
|
15950
15939
|
"aria-label": t("pptx.toolbar.share"),
|
|
15951
15940
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuShare2, { className: "w-4 h-4" })
|
|
@@ -15970,7 +15959,7 @@ var FILL_COLORS = [
|
|
|
15970
15959
|
"#008888",
|
|
15971
15960
|
"#888888"
|
|
15972
15961
|
];
|
|
15973
|
-
var TOP_SHAPES =
|
|
15962
|
+
var TOP_SHAPES = chunkLXUMBK2O_js.SHAPE_PRESETS.slice(0, 12);
|
|
15974
15963
|
function DrawingGroup(p) {
|
|
15975
15964
|
const { t } = reactI18next.useTranslation();
|
|
15976
15965
|
const [shapesOpen, setShapesOpen] = React14.useState(false);
|
|
@@ -16051,7 +16040,7 @@ function DrawingGroup(p) {
|
|
|
16051
16040
|
"button",
|
|
16052
16041
|
{
|
|
16053
16042
|
type: "button",
|
|
16054
|
-
className:
|
|
16043
|
+
className: chunkLXUMBK2O_js.cn(
|
|
16055
16044
|
"flex items-center gap-2 w-full px-3 py-1.5 text-xs text-foreground hover:bg-muted transition-colors",
|
|
16056
16045
|
p.newShapeType === s.type && "bg-accent"
|
|
16057
16046
|
),
|
|
@@ -16195,7 +16184,7 @@ function DrawingGroup(p) {
|
|
|
16195
16184
|
{
|
|
16196
16185
|
type: "button",
|
|
16197
16186
|
disabled: true,
|
|
16198
|
-
className:
|
|
16187
|
+
className: chunkLXUMBK2O_js.cn(pill, "opacity-50 cursor-not-allowed"),
|
|
16199
16188
|
title: t("pptx.drawing.shapeEffectsUnavailable"),
|
|
16200
16189
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSparkles, { className: ic2 })
|
|
16201
16190
|
}
|
|
@@ -16308,11 +16297,11 @@ function TabRowActions(p) {
|
|
|
16308
16297
|
{
|
|
16309
16298
|
type: "button",
|
|
16310
16299
|
onClick: p.onEnterRehearsalMode,
|
|
16311
|
-
className:
|
|
16300
|
+
className: chunkBXACB3BG_js.TAB_ROW_ACTION_CLASSES.record,
|
|
16312
16301
|
title: t("pptx.titleBar.record"),
|
|
16313
16302
|
"aria-label": t("pptx.titleBar.record"),
|
|
16314
16303
|
children: [
|
|
16315
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
16304
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.TAB_ROW_ACTION_CLASSES.recordDot, "aria-hidden": "true" }),
|
|
16316
16305
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: t("pptx.titleBar.record") })
|
|
16317
16306
|
]
|
|
16318
16307
|
}
|
|
@@ -16322,7 +16311,7 @@ function TabRowActions(p) {
|
|
|
16322
16311
|
{
|
|
16323
16312
|
type: "button",
|
|
16324
16313
|
onClick: p.onOpenShareDialog ?? p.onPackageForSharing,
|
|
16325
|
-
className:
|
|
16314
|
+
className: chunkLXUMBK2O_js.cn(
|
|
16326
16315
|
"relative inline-flex items-center gap-1 px-2.5 py-1 rounded-sm text-[11px] font-medium transition-colors whitespace-nowrap",
|
|
16327
16316
|
isCollaborating ? "bg-green-600 hover:bg-green-500 text-white" : "bg-primary hover:bg-primary/90 text-white"
|
|
16328
16317
|
),
|
|
@@ -16402,7 +16391,7 @@ function CustomShowsControls({
|
|
|
16402
16391
|
{
|
|
16403
16392
|
type: "button",
|
|
16404
16393
|
onClick: onToggleCurrentSlideInActiveShow,
|
|
16405
|
-
className:
|
|
16394
|
+
className: chunkLXUMBK2O_js.cn(
|
|
16406
16395
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
16407
16396
|
isCurrentSlideInActiveShow ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
16408
16397
|
),
|
|
@@ -16450,7 +16439,7 @@ function PresentDropdown({
|
|
|
16450
16439
|
{
|
|
16451
16440
|
type: "button",
|
|
16452
16441
|
onClick: onPresent,
|
|
16453
|
-
className:
|
|
16442
|
+
className: chunkLXUMBK2O_js.cn(
|
|
16454
16443
|
"px-2 py-1 transition-colors",
|
|
16455
16444
|
isActive ? "bg-primary text-white" : "hover:bg-accent text-foreground"
|
|
16456
16445
|
),
|
|
@@ -16463,7 +16452,7 @@ function PresentDropdown({
|
|
|
16463
16452
|
{
|
|
16464
16453
|
type: "button",
|
|
16465
16454
|
onClick: () => setOpen((prev) => !prev),
|
|
16466
|
-
className:
|
|
16455
|
+
className: chunkLXUMBK2O_js.cn(
|
|
16467
16456
|
"px-1 py-1 transition-colors border-l border-border",
|
|
16468
16457
|
open ? "bg-primary text-white" : "hover:bg-accent text-foreground"
|
|
16469
16458
|
),
|
|
@@ -16651,7 +16640,7 @@ function OverflowMenu(p) {
|
|
|
16651
16640
|
{
|
|
16652
16641
|
type: "button",
|
|
16653
16642
|
onClick: () => p.onSetOverflowMenuOpen(!p.isOverflowMenuOpen),
|
|
16654
|
-
className:
|
|
16643
|
+
className: chunkLXUMBK2O_js.cn(
|
|
16655
16644
|
"p-1.5 rounded transition-colors",
|
|
16656
16645
|
p.isOverflowMenuOpen ? "bg-primary/80 text-white" : "bg-muted hover:bg-accent"
|
|
16657
16646
|
),
|
|
@@ -16706,7 +16695,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
16706
16695
|
{
|
|
16707
16696
|
type: "button",
|
|
16708
16697
|
onClick: onToggleSidebar,
|
|
16709
|
-
className:
|
|
16698
|
+
className: chunkLXUMBK2O_js.cn(qab, !isSidebarCollapsed ? "text-foreground" : "text-muted-foreground"),
|
|
16710
16699
|
title: t("pptx.toolbar.toggleSlidesPanel"),
|
|
16711
16700
|
"aria-label": t("pptx.toolbar.toggleSlidesPanel"),
|
|
16712
16701
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelLeft, { className: ic2 })
|
|
@@ -16718,7 +16707,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
16718
16707
|
{
|
|
16719
16708
|
type: "button",
|
|
16720
16709
|
onClick: p.onToggleComments,
|
|
16721
|
-
className:
|
|
16710
|
+
className: chunkLXUMBK2O_js.cn(
|
|
16722
16711
|
qab,
|
|
16723
16712
|
"relative max-md:hidden",
|
|
16724
16713
|
p.isCommentsPanelOpen ? "text-foreground" : "text-muted-foreground"
|
|
@@ -16785,7 +16774,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
16785
16774
|
{
|
|
16786
16775
|
type: "button",
|
|
16787
16776
|
onClick: onToggleInspector,
|
|
16788
|
-
className:
|
|
16777
|
+
className: chunkLXUMBK2O_js.cn(qab, isInspectorPaneOpen ? "text-foreground" : "text-muted-foreground"),
|
|
16789
16778
|
title: t("pptx.toolbar.toggleInspector"),
|
|
16790
16779
|
"aria-label": t("pptx.toolbar.toggleInspector"),
|
|
16791
16780
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelRight, { className: ic2 })
|
|
@@ -16796,7 +16785,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
16796
16785
|
{
|
|
16797
16786
|
type: "button",
|
|
16798
16787
|
onClick: p.onOpenSettings ?? p.onToggleShortcuts,
|
|
16799
|
-
className:
|
|
16788
|
+
className: chunkLXUMBK2O_js.cn(qab, "text-muted-foreground"),
|
|
16800
16789
|
title: t("pptx.toolbar.settingsShortcuts"),
|
|
16801
16790
|
"aria-label": t("pptx.toolbar.settings"),
|
|
16802
16791
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSettings, { className: ics })
|
|
@@ -16841,14 +16830,14 @@ function Toolbar(p) {
|
|
|
16841
16830
|
role: "tablist",
|
|
16842
16831
|
className: "flex items-center border-b border-border/60 px-1 max-md:overflow-x-auto max-md:scrollbar-none",
|
|
16843
16832
|
children: [
|
|
16844
|
-
|
|
16833
|
+
chunkLXUMBK2O_js.TOOLBAR_SECTIONS.map((s) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
16845
16834
|
"button",
|
|
16846
16835
|
{
|
|
16847
16836
|
type: "button",
|
|
16848
16837
|
role: "tab",
|
|
16849
16838
|
"aria-selected": toolbarSection === s.id,
|
|
16850
16839
|
onClick: () => onSetToolbarSection(s.id),
|
|
16851
|
-
className:
|
|
16840
|
+
className: chunkLXUMBK2O_js.cn(
|
|
16852
16841
|
"relative px-3.5 py-2 text-[12px] font-medium whitespace-nowrap transition-colors max-md:min-h-[36px] max-md:px-3",
|
|
16853
16842
|
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"
|
|
16854
16843
|
),
|
|
@@ -16870,7 +16859,7 @@ function Toolbar(p) {
|
|
|
16870
16859
|
{
|
|
16871
16860
|
type: "button",
|
|
16872
16861
|
onClick: p.onToggleCompactToolbar,
|
|
16873
|
-
className:
|
|
16862
|
+
className: chunkLXUMBK2O_js.cn(
|
|
16874
16863
|
"px-2 py-1 rounded text-[11px] transition-colors mr-1",
|
|
16875
16864
|
isCompactToolbarOpen ? "bg-primary/80 text-white" : "text-muted-foreground hover:text-foreground"
|
|
16876
16865
|
),
|
|
@@ -16886,7 +16875,7 @@ function Toolbar(p) {
|
|
|
16886
16875
|
showRibbon && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
16887
16876
|
"div",
|
|
16888
16877
|
{
|
|
16889
|
-
className:
|
|
16878
|
+
className: chunkLXUMBK2O_js.cn(
|
|
16890
16879
|
"flex min-h-[82px] items-stretch gap-0 overflow-visible px-1 py-0.5 max-md:min-h-0 max-md:px-1 max-md:py-0.5 flex-nowrap",
|
|
16891
16880
|
isNarrowViewport && !isCompactToolbarOpen && "hidden"
|
|
16892
16881
|
),
|
|
@@ -17139,13 +17128,13 @@ function Toolbar(p) {
|
|
|
17139
17128
|
}
|
|
17140
17129
|
var INPUT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px]";
|
|
17141
17130
|
var SELECT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px]";
|
|
17142
|
-
var ENTRANCE_PRESETS =
|
|
17131
|
+
var ENTRANCE_PRESETS = chunkLXUMBK2O_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
17143
17132
|
(o) => o.value === "fadeIn" || o.value === "flyIn" || o.value === "zoomIn"
|
|
17144
17133
|
);
|
|
17145
|
-
var EXIT_PRESETS =
|
|
17134
|
+
var EXIT_PRESETS = chunkLXUMBK2O_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
17146
17135
|
(o) => o.value === "fadeOut" || o.value === "flyOut" || o.value === "zoomOut"
|
|
17147
17136
|
);
|
|
17148
|
-
var EMPHASIS_PRESETS =
|
|
17137
|
+
var EMPHASIS_PRESETS = chunkLXUMBK2O_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
17149
17138
|
(o) => o.value === "spin" || o.value === "pulse" || o.value === "colorWave" || o.value === "bounce" || o.value === "flash" || o.value === "growShrink" || o.value === "teeter"
|
|
17150
17139
|
);
|
|
17151
17140
|
var TRIGGER_OPTIONS = [
|
|
@@ -17247,7 +17236,7 @@ function AnimationTimelineSection({
|
|
|
17247
17236
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-6 rounded bg-muted/50 border border-border overflow-hidden", children: timelineBarData.map((bar) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
17248
17237
|
"div",
|
|
17249
17238
|
{
|
|
17250
|
-
className:
|
|
17239
|
+
className: chunkLXUMBK2O_js.cn(
|
|
17251
17240
|
"absolute top-0.5 bottom-0.5 rounded-sm transition-colors",
|
|
17252
17241
|
animationTypeColor(bar.anim),
|
|
17253
17242
|
bar.anim.elementId === selectedElementId && "ring-1 ring-primary"
|
|
@@ -17281,7 +17270,7 @@ function AnimationTimelineSection({
|
|
|
17281
17270
|
onDragEnd: handleDragEnd,
|
|
17282
17271
|
onMouseEnter: () => handleAnimationHover(anim),
|
|
17283
17272
|
onMouseLeave: handleAnimationHoverEnd,
|
|
17284
|
-
className:
|
|
17273
|
+
className: chunkLXUMBK2O_js.cn(
|
|
17285
17274
|
"flex items-center gap-1 px-1 py-0.5 rounded text-[10px] cursor-grab transition-colors",
|
|
17286
17275
|
isSelected ? "bg-primary/30 text-primary" : "bg-muted/50 text-muted-foreground",
|
|
17287
17276
|
isDragging && "opacity-40",
|
|
@@ -17445,13 +17434,13 @@ function useAnimationPreview({
|
|
|
17445
17434
|
if (!preset || preset === "none") {
|
|
17446
17435
|
return;
|
|
17447
17436
|
}
|
|
17448
|
-
|
|
17437
|
+
chunkLXUMBK2O_js.startPreviewAnimation(anim.elementId, preset, {
|
|
17449
17438
|
direction: anim.direction,
|
|
17450
17439
|
durationMs: anim.durationMs ?? 500,
|
|
17451
17440
|
timingCurve: anim.timingCurve
|
|
17452
17441
|
});
|
|
17453
17442
|
}, []);
|
|
17454
|
-
const handleAnimationHoverEnd = React14.useCallback(() =>
|
|
17443
|
+
const handleAnimationHoverEnd = React14.useCallback(() => chunkLXUMBK2O_js.stopPreviewAnimation(), []);
|
|
17455
17444
|
const handlePreviewClick = React14.useCallback(() => {
|
|
17456
17445
|
if (!selectedElementAnimation) {
|
|
17457
17446
|
return;
|
|
@@ -17460,7 +17449,7 @@ function useAnimationPreview({
|
|
|
17460
17449
|
if (!preset || preset === "none") {
|
|
17461
17450
|
return;
|
|
17462
17451
|
}
|
|
17463
|
-
|
|
17452
|
+
chunkLXUMBK2O_js.startPreviewAnimation(selectedElementId, preset, {
|
|
17464
17453
|
direction: selectedElementAnimation.direction,
|
|
17465
17454
|
durationMs: selectedElementAnimation.durationMs ?? 500,
|
|
17466
17455
|
timingCurve: selectedElementAnimation.timingCurve
|
|
@@ -17633,14 +17622,14 @@ function useAnimationHandlers({
|
|
|
17633
17622
|
return anim.elementId.slice(0, 8);
|
|
17634
17623
|
}
|
|
17635
17624
|
const text = chunkAD3EAEY6_js.hasTextProperties(el) ? el.text : void 0;
|
|
17636
|
-
return text ||
|
|
17625
|
+
return text || chunkBXACB3BG_js.getElementLabel(el);
|
|
17637
17626
|
},
|
|
17638
17627
|
[activeSlide.elements]
|
|
17639
17628
|
);
|
|
17640
17629
|
const hasAnimation = Boolean(
|
|
17641
17630
|
selectedElementAnimation?.entrance || selectedElementAnimation?.exit || selectedElementAnimation?.emphasis
|
|
17642
17631
|
);
|
|
17643
|
-
const showDirectionPicker = hasAnimation && (
|
|
17632
|
+
const showDirectionPicker = hasAnimation && (chunkBXACB3BG_js.DIRECTIONAL_PRESETS.has(selectedElementAnimation?.entrance ?? "") || chunkBXACB3BG_js.DIRECTIONAL_PRESETS.has(selectedElementAnimation?.exit ?? ""));
|
|
17644
17633
|
const timelineBarData = React14.useMemo(() => {
|
|
17645
17634
|
if (sortedAnimations.length === 0) {
|
|
17646
17635
|
return [];
|
|
@@ -17792,7 +17781,7 @@ function AnimationPanel({
|
|
|
17792
17781
|
{
|
|
17793
17782
|
type: "button",
|
|
17794
17783
|
disabled: !canEdit,
|
|
17795
|
-
className:
|
|
17784
|
+
className: chunkLXUMBK2O_js.cn(
|
|
17796
17785
|
"flex items-center justify-center w-7 h-7 rounded border transition-colors",
|
|
17797
17786
|
isActive ? "border-primary bg-primary/20 text-primary" : "border-border bg-muted text-muted-foreground hover:bg-accent"
|
|
17798
17787
|
),
|
|
@@ -17842,7 +17831,7 @@ function AnimationPanel({
|
|
|
17842
17831
|
className: SELECT_CLS,
|
|
17843
17832
|
children: [
|
|
17844
17833
|
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: t("pptx.animation.trigger.selectShape") }),
|
|
17845
|
-
activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children:
|
|
17834
|
+
activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children: chunkBXACB3BG_js.getElementLabel(el) }, el.id))
|
|
17846
17835
|
]
|
|
17847
17836
|
}
|
|
17848
17837
|
)
|
|
@@ -18034,7 +18023,7 @@ function ActionTriggerSection({
|
|
|
18034
18023
|
"select",
|
|
18035
18024
|
{
|
|
18036
18025
|
disabled: !canEdit,
|
|
18037
|
-
className:
|
|
18026
|
+
className: chunkLXUMBK2O_js.cn(INPUT, "w-full"),
|
|
18038
18027
|
value: activeType,
|
|
18039
18028
|
onChange: (e) => onChangeType(e.target.value),
|
|
18040
18029
|
children: ACTION_TYPE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.label) }, o.value))
|
|
@@ -18045,7 +18034,7 @@ function ActionTriggerSection({
|
|
|
18045
18034
|
{
|
|
18046
18035
|
type: "text",
|
|
18047
18036
|
disabled: !canEdit,
|
|
18048
|
-
className:
|
|
18037
|
+
className: chunkLXUMBK2O_js.cn(INPUT, "w-full"),
|
|
18049
18038
|
placeholder: "https://...",
|
|
18050
18039
|
value: action?.url ?? fallbackUrl ?? "",
|
|
18051
18040
|
onChange: (e) => onChangeUrl(e.target.value)
|
|
@@ -18056,7 +18045,7 @@ function ActionTriggerSection({
|
|
|
18056
18045
|
{
|
|
18057
18046
|
type: "number",
|
|
18058
18047
|
disabled: !canEdit,
|
|
18059
|
-
className:
|
|
18048
|
+
className: chunkLXUMBK2O_js.cn(INPUT, "w-full"),
|
|
18060
18049
|
placeholder: t("pptx.action.slideNumberPlaceholder"),
|
|
18061
18050
|
min: 1,
|
|
18062
18051
|
max: slideCount,
|
|
@@ -19711,7 +19700,7 @@ function ConnectorPanel({
|
|
|
19711
19700
|
"select",
|
|
19712
19701
|
{
|
|
19713
19702
|
disabled: !canEdit,
|
|
19714
|
-
className:
|
|
19703
|
+
className: chunkLXUMBK2O_js.cn(INPUT, "w-full"),
|
|
19715
19704
|
value: selectedElement.shapeStyle?.[key] ?? "none",
|
|
19716
19705
|
onChange: (e) => onUpdateElementStyle({ [key]: e.target.value }),
|
|
19717
19706
|
children: [
|
|
@@ -19763,7 +19752,7 @@ function OlePropertiesPanel({
|
|
|
19763
19752
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
19764
19753
|
"span",
|
|
19765
19754
|
{
|
|
19766
|
-
className:
|
|
19755
|
+
className: chunkLXUMBK2O_js.cn(
|
|
19767
19756
|
"inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium",
|
|
19768
19757
|
ole.isLinked ? "bg-blue-500/20 text-blue-400" : "bg-green-500/20 text-green-400"
|
|
19769
19758
|
),
|
|
@@ -19822,7 +19811,7 @@ function LayerOrderButtons({
|
|
|
19822
19811
|
"button",
|
|
19823
19812
|
{
|
|
19824
19813
|
type: "button",
|
|
19825
|
-
className:
|
|
19814
|
+
className: chunkLXUMBK2O_js.cn("flex-1", BTN),
|
|
19826
19815
|
disabled: !canEdit,
|
|
19827
19816
|
onClick: () => onMoveLayer("forward"),
|
|
19828
19817
|
children: "\u2191 Forward"
|
|
@@ -19832,7 +19821,7 @@ function LayerOrderButtons({
|
|
|
19832
19821
|
"button",
|
|
19833
19822
|
{
|
|
19834
19823
|
type: "button",
|
|
19835
|
-
className:
|
|
19824
|
+
className: chunkLXUMBK2O_js.cn("flex-1", BTN),
|
|
19836
19825
|
disabled: !canEdit,
|
|
19837
19826
|
onClick: () => onMoveLayer("backward"),
|
|
19838
19827
|
children: "\u2193 Backward"
|
|
@@ -19849,14 +19838,14 @@ function ArtisticEffectsGallery({
|
|
|
19849
19838
|
const { t } = reactI18next.useTranslation();
|
|
19850
19839
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px]", children: [
|
|
19851
19840
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.image.artisticEffects") }),
|
|
19852
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children:
|
|
19841
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: chunkBXACB3BG_js.ARTISTIC_EFFECTS.map(([effectName, tKey, cssFilter]) => {
|
|
19853
19842
|
const isActive = effectName === "none" ? !fx?.artisticEffect : fx?.artisticEffect === effectName;
|
|
19854
19843
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
19855
19844
|
"button",
|
|
19856
19845
|
{
|
|
19857
19846
|
type: "button",
|
|
19858
19847
|
disabled: !canEdit,
|
|
19859
|
-
className:
|
|
19848
|
+
className: chunkLXUMBK2O_js.cn(
|
|
19860
19849
|
"flex flex-col items-center gap-0.5 rounded border p-0.5 hover:bg-accent/50",
|
|
19861
19850
|
isActive ? "border-primary bg-primary/10" : "border-border"
|
|
19862
19851
|
),
|
|
@@ -19919,7 +19908,7 @@ function ColorChangeSection({
|
|
|
19919
19908
|
DebouncedColorInput,
|
|
19920
19909
|
{
|
|
19921
19910
|
disabled: !canEdit,
|
|
19922
|
-
value:
|
|
19911
|
+
value: chunkBXACB3BG_js.normalizeHexColor(cc.clrFrom, "#ffffff"),
|
|
19923
19912
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
19924
19913
|
onCommit: (hex) => updateEffects({
|
|
19925
19914
|
clrChange: {
|
|
@@ -19937,7 +19926,7 @@ function ColorChangeSection({
|
|
|
19937
19926
|
DebouncedColorInput,
|
|
19938
19927
|
{
|
|
19939
19928
|
disabled: !canEdit || Boolean(cc.clrToTransparent),
|
|
19940
|
-
value:
|
|
19929
|
+
value: chunkBXACB3BG_js.normalizeHexColor(cc.clrTo, "#000000"),
|
|
19941
19930
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
19942
19931
|
onCommit: (hex) => updateEffects({
|
|
19943
19932
|
clrChange: {
|
|
@@ -19999,7 +19988,7 @@ function ColorWashSection({
|
|
|
19999
19988
|
DebouncedColorInput,
|
|
20000
19989
|
{
|
|
20001
19990
|
disabled: !canEdit,
|
|
20002
|
-
value:
|
|
19991
|
+
value: chunkBXACB3BG_js.normalizeHexColor(wash.color, "#0066cc"),
|
|
20003
19992
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
20004
19993
|
onCommit: (hex) => updateEffects({
|
|
20005
19994
|
colorWash: { color: hex, opacity: wash.opacity ?? 40 }
|
|
@@ -20099,8 +20088,8 @@ function DuotonePanel({
|
|
|
20099
20088
|
}
|
|
20100
20089
|
});
|
|
20101
20090
|
}, [effects, onUpdateElement]);
|
|
20102
|
-
const shadowColor =
|
|
20103
|
-
const highlightColor =
|
|
20091
|
+
const shadowColor = chunkBXACB3BG_js.normalizeHexColor(effects?.duotone?.color1, "#000000");
|
|
20092
|
+
const highlightColor = chunkBXACB3BG_js.normalizeHexColor(effects?.duotone?.color2, "#ffffff");
|
|
20104
20093
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px]", children: [
|
|
20105
20094
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground font-medium", children: t("pptx.image.duotone") }),
|
|
20106
20095
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
@@ -20131,7 +20120,7 @@ function DuotonePanel({
|
|
|
20131
20120
|
] }),
|
|
20132
20121
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
20133
20122
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground text-[10px]", children: t("pptx.image.duotonePresets") }),
|
|
20134
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children:
|
|
20123
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: chunkBXACB3BG_js.DUOTONE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20135
20124
|
"button",
|
|
20136
20125
|
{
|
|
20137
20126
|
type: "button",
|
|
@@ -20305,7 +20294,7 @@ function ImagePropertiesPanel({
|
|
|
20305
20294
|
{
|
|
20306
20295
|
rows: 2,
|
|
20307
20296
|
disabled: !canEdit,
|
|
20308
|
-
className:
|
|
20297
|
+
className: chunkLXUMBK2O_js.cn(INPUT, "resize-none text-[11px]"),
|
|
20309
20298
|
value: selectedElement.altText ?? "",
|
|
20310
20299
|
onChange: (e) => onUpdateElement({
|
|
20311
20300
|
altText: e.target.value
|
|
@@ -21264,11 +21253,11 @@ function ShapeTextPanels({
|
|
|
21264
21253
|
{
|
|
21265
21254
|
value: selectedElement.shapeType || "rect",
|
|
21266
21255
|
disabled: !canEdit,
|
|
21267
|
-
className:
|
|
21256
|
+
className: chunkLXUMBK2O_js.cn(INPUT, "w-full"),
|
|
21268
21257
|
onChange: (e) => onUpdateElement({
|
|
21269
21258
|
shapeType: e.target.value
|
|
21270
21259
|
}),
|
|
21271
|
-
children:
|
|
21260
|
+
children: chunkLXUMBK2O_js.SHAPE_PRESETS.filter((p) => p.type !== "connector").map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.type, children: t(p.i18nKey) }, p.type))
|
|
21272
21261
|
}
|
|
21273
21262
|
)
|
|
21274
21263
|
] }),
|
|
@@ -21281,7 +21270,7 @@ function ShapeTextPanels({
|
|
|
21281
21270
|
DebouncedColorInput,
|
|
21282
21271
|
{
|
|
21283
21272
|
disabled: !canEdit,
|
|
21284
|
-
value:
|
|
21273
|
+
value: chunkBXACB3BG_js.normalizeHexColor(selectedElement.shapeStyle?.fillColor, "#3b82f6"),
|
|
21285
21274
|
className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
|
|
21286
21275
|
onCommit: (hex) => onUpdateElementStyle({ fillColor: hex, fillMode: "solid" })
|
|
21287
21276
|
}
|
|
@@ -21293,7 +21282,7 @@ function ShapeTextPanels({
|
|
|
21293
21282
|
DebouncedColorInput,
|
|
21294
21283
|
{
|
|
21295
21284
|
disabled: !canEdit,
|
|
21296
|
-
value:
|
|
21285
|
+
value: chunkBXACB3BG_js.normalizeHexColor(selectedElement.shapeStyle?.strokeColor, "#1f2937"),
|
|
21297
21286
|
className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
|
|
21298
21287
|
onCommit: (hex) => onUpdateElementStyle({ strokeColor: hex })
|
|
21299
21288
|
}
|
|
@@ -21340,7 +21329,7 @@ function ShapeTextPanels({
|
|
|
21340
21329
|
DebouncedColorInput,
|
|
21341
21330
|
{
|
|
21342
21331
|
disabled: !canEdit,
|
|
21343
|
-
value:
|
|
21332
|
+
value: chunkBXACB3BG_js.normalizeHexColor(selectedElement.textStyle?.color, "#000000"),
|
|
21344
21333
|
className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
|
|
21345
21334
|
onCommit: (hex) => onUpdateTextStyle({ color: hex })
|
|
21346
21335
|
}
|
|
@@ -21398,7 +21387,7 @@ function TextFormatToggle({
|
|
|
21398
21387
|
{
|
|
21399
21388
|
type: "button",
|
|
21400
21389
|
disabled,
|
|
21401
|
-
className:
|
|
21390
|
+
className: chunkLXUMBK2O_js.cn(
|
|
21402
21391
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
21403
21392
|
italic && "italic",
|
|
21404
21393
|
underline && "underline",
|
|
@@ -21690,7 +21679,7 @@ function SmartArtLayoutSwitcher({
|
|
|
21690
21679
|
type: "button",
|
|
21691
21680
|
"data-testid": `smartart-layout-${type}`,
|
|
21692
21681
|
disabled: !canEdit,
|
|
21693
|
-
className:
|
|
21682
|
+
className: chunkLXUMBK2O_js.cn(
|
|
21694
21683
|
"flex flex-col items-center gap-0.5 rounded border p-1.5 transition-colors",
|
|
21695
21684
|
"text-[9px] leading-tight",
|
|
21696
21685
|
isActive ? "border-primary bg-primary/15 text-primary" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
@@ -21762,7 +21751,7 @@ function SmartArtNodeStyleControls({
|
|
|
21762
21751
|
disabled: !canEdit,
|
|
21763
21752
|
"aria-label": `Bold ${label}`,
|
|
21764
21753
|
"aria-pressed": bold,
|
|
21765
|
-
className:
|
|
21754
|
+
className: chunkLXUMBK2O_js.cn(
|
|
21766
21755
|
EMPHASIS_BTN,
|
|
21767
21756
|
"font-bold",
|
|
21768
21757
|
bold ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground"
|
|
@@ -21778,7 +21767,7 @@ function SmartArtNodeStyleControls({
|
|
|
21778
21767
|
disabled: !canEdit,
|
|
21779
21768
|
"aria-label": `Italic ${label}`,
|
|
21780
21769
|
"aria-pressed": italic,
|
|
21781
|
-
className:
|
|
21770
|
+
className: chunkLXUMBK2O_js.cn(
|
|
21782
21771
|
EMPHASIS_BTN,
|
|
21783
21772
|
"italic",
|
|
21784
21773
|
italic ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground"
|
|
@@ -21817,7 +21806,7 @@ function SmartArtNodeRow({
|
|
|
21817
21806
|
"div",
|
|
21818
21807
|
{
|
|
21819
21808
|
role: "listitem",
|
|
21820
|
-
className:
|
|
21809
|
+
className: chunkLXUMBK2O_js.cn(
|
|
21821
21810
|
"rounded border bg-background/60 p-1.5",
|
|
21822
21811
|
isChild ? "border-border/60 ml-4" : "border-border"
|
|
21823
21812
|
),
|
|
@@ -21832,7 +21821,7 @@ function SmartArtNodeRow({
|
|
|
21832
21821
|
"data-testid": "smartart-node-text",
|
|
21833
21822
|
disabled: !canEdit,
|
|
21834
21823
|
"aria-label": label,
|
|
21835
|
-
className:
|
|
21824
|
+
className: chunkLXUMBK2O_js.cn(INPUT, "flex-1 text-[11px] py-0.5"),
|
|
21836
21825
|
value: text,
|
|
21837
21826
|
onChange: (e) => onChangeText(nodeId, e.target.value),
|
|
21838
21827
|
onKeyDown: (e) => onKeyDown(e, nodeId),
|
|
@@ -21881,7 +21870,7 @@ function SmartArtNodeRow({
|
|
|
21881
21870
|
{
|
|
21882
21871
|
type: "button",
|
|
21883
21872
|
disabled: !canEdit || removeDisabled,
|
|
21884
|
-
className:
|
|
21873
|
+
className: chunkLXUMBK2O_js.cn(MINI_BTN, "hover:text-red-400"),
|
|
21885
21874
|
onClick: () => onRemove(nodeId),
|
|
21886
21875
|
"aria-label": `Remove ${label}`,
|
|
21887
21876
|
title: removeDisabled ? t("pptx.smartArt.layoutMinimum") : t("pptx.smartArt.remove"),
|
|
@@ -21936,10 +21925,10 @@ function SmartArtPropertiesPanel({
|
|
|
21936
21925
|
if (focusId) {
|
|
21937
21926
|
pendingFocusId.current = focusId;
|
|
21938
21927
|
}
|
|
21939
|
-
const reflowed = box ?
|
|
21928
|
+
const reflowed = box ? chunkBXACB3BG_js.rebuildDrawingShapesIfCleared(
|
|
21940
21929
|
newData,
|
|
21941
21930
|
newData.layout,
|
|
21942
|
-
|
|
21931
|
+
chunkLXUMBK2O_js.resolveSmartArtDataPalette(newData),
|
|
21943
21932
|
newData.style ?? "flat",
|
|
21944
21933
|
"inspector",
|
|
21945
21934
|
box
|
|
@@ -22048,7 +22037,7 @@ function SmartArtPropertiesPanel({
|
|
|
22048
22037
|
disabled: !canEdit,
|
|
22049
22038
|
"data-testid": "smartart-color-scheme",
|
|
22050
22039
|
"aria-label": t("pptx.smartart.colorScheme"),
|
|
22051
|
-
className:
|
|
22040
|
+
className: chunkLXUMBK2O_js.cn(INPUT, "w-full"),
|
|
22052
22041
|
value: smartArtData.colorScheme ?? "colorful1",
|
|
22053
22042
|
onChange: (e) => updateSmartArt({ colorScheme: e.target.value }),
|
|
22054
22043
|
children: COLOR_SCHEMES.map((cs) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: cs, children: cs }, cs))
|
|
@@ -22063,7 +22052,7 @@ function SmartArtPropertiesPanel({
|
|
|
22063
22052
|
type: "button",
|
|
22064
22053
|
disabled: !canEdit,
|
|
22065
22054
|
"aria-pressed": (smartArtData.style ?? "flat") === s,
|
|
22066
|
-
className:
|
|
22055
|
+
className: chunkLXUMBK2O_js.cn(
|
|
22067
22056
|
"flex-1 px-2 py-1 text-[10px] rounded border transition-colors",
|
|
22068
22057
|
(smartArtData.style ?? "flat") === s ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground hover:bg-muted"
|
|
22069
22058
|
),
|
|
@@ -22173,15 +22162,15 @@ function TableCellAdvancedFill({
|
|
|
22173
22162
|
};
|
|
22174
22163
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
22175
22164
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
22176
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
22165
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.LBL, children: t("pptx.table.fillMode") }),
|
|
22177
22166
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22178
22167
|
"select",
|
|
22179
22168
|
{
|
|
22180
22169
|
disabled: !canEdit,
|
|
22181
|
-
className:
|
|
22170
|
+
className: chunkBXACB3BG_js.SEL,
|
|
22182
22171
|
value: fillMode,
|
|
22183
22172
|
onChange: (e) => handleFillModeChange(e.target.value),
|
|
22184
|
-
children:
|
|
22173
|
+
children: chunkBXACB3BG_js.FILL_MODE_OPTIONS.map((opt) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: opt.value ?? "", children: t(opt.i18nKey) }, opt.value))
|
|
22185
22174
|
}
|
|
22186
22175
|
)
|
|
22187
22176
|
] }),
|
|
@@ -22202,20 +22191,20 @@ function TableCellAdvancedFill({
|
|
|
22202
22191
|
}
|
|
22203
22192
|
),
|
|
22204
22193
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
22205
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
22194
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.SECTION_HEADING, children: t("pptx.table.margins") }),
|
|
22206
22195
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-1.5", children: [
|
|
22207
22196
|
["marginTop", "pptx.table.marginTop"],
|
|
22208
22197
|
["marginBottom", "pptx.table.marginBottom"],
|
|
22209
22198
|
["marginLeft", "pptx.table.marginLeft"],
|
|
22210
22199
|
["marginRight", "pptx.table.marginRight"]
|
|
22211
22200
|
].map(([key, i18nKey]) => /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-0.5", children: [
|
|
22212
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
22201
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.LBL, children: t(i18nKey) }),
|
|
22213
22202
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22214
22203
|
"input",
|
|
22215
22204
|
{
|
|
22216
22205
|
type: "number",
|
|
22217
22206
|
disabled: !canEdit,
|
|
22218
|
-
className:
|
|
22207
|
+
className: chunkBXACB3BG_js.NUM,
|
|
22219
22208
|
min: 0,
|
|
22220
22209
|
max: 200,
|
|
22221
22210
|
value: cellStyle[key] ?? 0,
|
|
@@ -22248,28 +22237,28 @@ function GradientControls({
|
|
|
22248
22237
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
22249
22238
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-1.5", children: [
|
|
22250
22239
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-0.5", children: [
|
|
22251
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
22240
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.LBL, children: t("pptx.table.gradientType") }),
|
|
22252
22241
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22253
22242
|
"select",
|
|
22254
22243
|
{
|
|
22255
22244
|
disabled: !canEdit,
|
|
22256
|
-
className:
|
|
22245
|
+
className: chunkBXACB3BG_js.SEL,
|
|
22257
22246
|
value: gradType,
|
|
22258
22247
|
onChange: (e) => onUpdateCellStyle({
|
|
22259
22248
|
gradientFillType: e.target.value
|
|
22260
22249
|
}),
|
|
22261
|
-
children:
|
|
22250
|
+
children: chunkBXACB3BG_js.GRADIENT_TYPE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
22262
22251
|
}
|
|
22263
22252
|
)
|
|
22264
22253
|
] }),
|
|
22265
22254
|
gradType === "linear" && /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-0.5", children: [
|
|
22266
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
22255
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.LBL, children: t("pptx.table.gradientAngle") }),
|
|
22267
22256
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22268
22257
|
"input",
|
|
22269
22258
|
{
|
|
22270
22259
|
type: "number",
|
|
22271
22260
|
disabled: !canEdit,
|
|
22272
|
-
className:
|
|
22261
|
+
className: chunkBXACB3BG_js.NUM,
|
|
22273
22262
|
min: 0,
|
|
22274
22263
|
max: 360,
|
|
22275
22264
|
value: cellStyle.gradientFillAngle ?? 90,
|
|
@@ -22280,7 +22269,7 @@ function GradientControls({
|
|
|
22280
22269
|
)
|
|
22281
22270
|
] })
|
|
22282
22271
|
] }),
|
|
22283
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
22272
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.LBL, children: t("pptx.table.gradientStops") }),
|
|
22284
22273
|
stops.map((stop, idx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
|
|
22285
22274
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22286
22275
|
"input",
|
|
@@ -22297,7 +22286,7 @@ function GradientControls({
|
|
|
22297
22286
|
{
|
|
22298
22287
|
type: "number",
|
|
22299
22288
|
disabled: !canEdit,
|
|
22300
|
-
className:
|
|
22289
|
+
className: chunkBXACB3BG_js.NUM,
|
|
22301
22290
|
min: 0,
|
|
22302
22291
|
max: 100,
|
|
22303
22292
|
value: Math.round(stop.position),
|
|
@@ -22328,23 +22317,23 @@ function PatternControls({
|
|
|
22328
22317
|
const { t } = reactI18next.useTranslation();
|
|
22329
22318
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
22330
22319
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-0.5", children: [
|
|
22331
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
22320
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.LBL, children: t("pptx.table.patternPreset") }),
|
|
22332
22321
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22333
22322
|
"select",
|
|
22334
22323
|
{
|
|
22335
22324
|
disabled: !canEdit,
|
|
22336
|
-
className:
|
|
22325
|
+
className: chunkBXACB3BG_js.SEL,
|
|
22337
22326
|
value: cellStyle.patternFillPreset ?? "ltDnDiag",
|
|
22338
22327
|
onChange: (e) => onUpdateCellStyle({
|
|
22339
22328
|
patternFillPreset: e.target.value
|
|
22340
22329
|
}),
|
|
22341
|
-
children:
|
|
22330
|
+
children: chunkBXACB3BG_js.PATTERN_OPTIONS.map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p, children: p }, p))
|
|
22342
22331
|
}
|
|
22343
22332
|
)
|
|
22344
22333
|
] }),
|
|
22345
22334
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-1.5", children: [
|
|
22346
22335
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-0.5", children: [
|
|
22347
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
22336
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.LBL, children: t("pptx.table.patternForeground") }),
|
|
22348
22337
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22349
22338
|
"input",
|
|
22350
22339
|
{
|
|
@@ -22359,7 +22348,7 @@ function PatternControls({
|
|
|
22359
22348
|
)
|
|
22360
22349
|
] }),
|
|
22361
22350
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-0.5", children: [
|
|
22362
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
22351
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.LBL, children: t("pptx.table.patternBackground") }),
|
|
22363
22352
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22364
22353
|
"input",
|
|
22365
22354
|
{
|
|
@@ -22431,7 +22420,7 @@ function TableCellFormattingPanel({
|
|
|
22431
22420
|
DebouncedColorInput,
|
|
22432
22421
|
{
|
|
22433
22422
|
disabled: !canEdit,
|
|
22434
|
-
value:
|
|
22423
|
+
value: chunkBXACB3BG_js.normalizeHexColor(cs.color, "#000000"),
|
|
22435
22424
|
className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
|
|
22436
22425
|
onCommit: (hex) => updateCellStyle({ color: hex })
|
|
22437
22426
|
}
|
|
@@ -22443,7 +22432,7 @@ function TableCellFormattingPanel({
|
|
|
22443
22432
|
DebouncedColorInput,
|
|
22444
22433
|
{
|
|
22445
22434
|
disabled: !canEdit,
|
|
22446
|
-
value:
|
|
22435
|
+
value: chunkBXACB3BG_js.normalizeHexColor(cs.backgroundColor, "#ffffff"),
|
|
22447
22436
|
className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
|
|
22448
22437
|
onCommit: (hex) => updateCellStyle({ backgroundColor: hex })
|
|
22449
22438
|
}
|
|
@@ -22467,7 +22456,7 @@ function TableCellFormattingPanel({
|
|
|
22467
22456
|
{
|
|
22468
22457
|
type: "button",
|
|
22469
22458
|
disabled: !canEdit,
|
|
22470
|
-
className:
|
|
22459
|
+
className: chunkLXUMBK2O_js.cn(
|
|
22471
22460
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
22472
22461
|
cls,
|
|
22473
22462
|
cs[key] ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
@@ -22486,7 +22475,7 @@ function TableCellFormattingPanel({
|
|
|
22486
22475
|
{
|
|
22487
22476
|
type: "button",
|
|
22488
22477
|
disabled: !canEdit,
|
|
22489
|
-
className:
|
|
22478
|
+
className: chunkLXUMBK2O_js.cn(
|
|
22490
22479
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
22491
22480
|
cs.align === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
22492
22481
|
),
|
|
@@ -22504,7 +22493,7 @@ function TableCellFormattingPanel({
|
|
|
22504
22493
|
{
|
|
22505
22494
|
type: "button",
|
|
22506
22495
|
disabled: !canEdit,
|
|
22507
|
-
className:
|
|
22496
|
+
className: chunkLXUMBK2O_js.cn(
|
|
22508
22497
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
22509
22498
|
cs.vAlign === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
22510
22499
|
),
|
|
@@ -22527,7 +22516,7 @@ function TableCellFormattingPanel({
|
|
|
22527
22516
|
DebouncedColorInput,
|
|
22528
22517
|
{
|
|
22529
22518
|
disabled: !canEdit,
|
|
22530
|
-
value:
|
|
22519
|
+
value: chunkBXACB3BG_js.normalizeHexColor(cs[colorKey], "#374151"),
|
|
22531
22520
|
className: "w-7 h-6 rounded border border-border bg-transparent cursor-pointer shrink-0",
|
|
22532
22521
|
onCommit: (hex) => updateCellStyle({ [colorKey]: hex })
|
|
22533
22522
|
}
|
|
@@ -22537,7 +22526,7 @@ function TableCellFormattingPanel({
|
|
|
22537
22526
|
{
|
|
22538
22527
|
type: "number",
|
|
22539
22528
|
disabled: !canEdit,
|
|
22540
|
-
className:
|
|
22529
|
+
className: chunkLXUMBK2O_js.cn(INPUT, "w-14"),
|
|
22541
22530
|
min: 0,
|
|
22542
22531
|
max: 10,
|
|
22543
22532
|
value: cs[widthKey] ?? 1,
|
|
@@ -22553,9 +22542,9 @@ function TableCellFormattingPanel({
|
|
|
22553
22542
|
{
|
|
22554
22543
|
type: "button",
|
|
22555
22544
|
disabled: !canEdit,
|
|
22556
|
-
className:
|
|
22545
|
+
className: chunkLXUMBK2O_js.cn(BTN, "text-center"),
|
|
22557
22546
|
onClick: () => {
|
|
22558
|
-
const newRows =
|
|
22547
|
+
const newRows = chunkBXACB3BG_js.computeMergeCellRight(td, rowIndex, columnIndex);
|
|
22559
22548
|
if (newRows) {
|
|
22560
22549
|
onUpdateTableData({ rows: newRows });
|
|
22561
22550
|
}
|
|
@@ -22568,9 +22557,9 @@ function TableCellFormattingPanel({
|
|
|
22568
22557
|
{
|
|
22569
22558
|
type: "button",
|
|
22570
22559
|
disabled: !canEdit,
|
|
22571
|
-
className:
|
|
22560
|
+
className: chunkLXUMBK2O_js.cn(BTN, "text-center"),
|
|
22572
22561
|
onClick: () => {
|
|
22573
|
-
const newRows =
|
|
22562
|
+
const newRows = chunkBXACB3BG_js.computeMergeCellDown(td, rowIndex, columnIndex);
|
|
22574
22563
|
if (newRows) {
|
|
22575
22564
|
onUpdateTableData({ rows: newRows });
|
|
22576
22565
|
}
|
|
@@ -22583,9 +22572,9 @@ function TableCellFormattingPanel({
|
|
|
22583
22572
|
{
|
|
22584
22573
|
type: "button",
|
|
22585
22574
|
disabled: !canEdit,
|
|
22586
|
-
className:
|
|
22575
|
+
className: chunkLXUMBK2O_js.cn(BTN, "text-center"),
|
|
22587
22576
|
onClick: () => {
|
|
22588
|
-
const newRows =
|
|
22577
|
+
const newRows = chunkBXACB3BG_js.computeSplitCell(td, rowIndex, columnIndex);
|
|
22589
22578
|
if (newRows) {
|
|
22590
22579
|
onUpdateTableData({ rows: newRows });
|
|
22591
22580
|
}
|
|
@@ -22676,7 +22665,7 @@ function TablePropertiesPanel({
|
|
|
22676
22665
|
] }),
|
|
22677
22666
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD, children: [
|
|
22678
22667
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: t("pptx.table.stylePresets") }),
|
|
22679
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children:
|
|
22668
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children: chunkBXACB3BG_js.TABLE_STYLE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
22680
22669
|
"button",
|
|
22681
22670
|
{
|
|
22682
22671
|
type: "button",
|
|
@@ -22991,7 +22980,7 @@ function InspectorCommentRow({
|
|
|
22991
22980
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22992
22981
|
"div",
|
|
22993
22982
|
{
|
|
22994
|
-
className:
|
|
22983
|
+
className: chunkLXUMBK2O_js.cn(
|
|
22995
22984
|
"rounded border border-border bg-card p-2",
|
|
22996
22985
|
depth > 0 && "ml-3 border-l-2 border-l-primary/40"
|
|
22997
22986
|
),
|
|
@@ -23004,7 +22993,7 @@ function InspectorCommentRow({
|
|
|
23004
22993
|
t("pptx.comments.resolved")
|
|
23005
22994
|
] })
|
|
23006
22995
|
] }),
|
|
23007
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children:
|
|
22996
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children: chunkBXACB3BG_js.formatCommentTimestamp(comment.createdAt) })
|
|
23008
22997
|
] }),
|
|
23009
22998
|
comment.elementId && (targetElement ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
23010
22999
|
"button",
|
|
@@ -23012,12 +23001,12 @@ function InspectorCommentRow({
|
|
|
23012
23001
|
type: "button",
|
|
23013
23002
|
className: "mt-1 inline-flex items-center gap-1 rounded bg-primary/20 px-1.5 py-0.5 text-[10px] text-primary hover:bg-primary/30 transition-colors",
|
|
23014
23003
|
title: t("pptx.comments.commentingOn", {
|
|
23015
|
-
element:
|
|
23004
|
+
element: chunkBXACB3BG_js.getElementLabel(targetElement)
|
|
23016
23005
|
}),
|
|
23017
23006
|
onClick: () => onSelectElement(targetElement.id),
|
|
23018
23007
|
children: [
|
|
23019
23008
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
|
|
23020
|
-
|
|
23009
|
+
chunkBXACB3BG_js.getElementLabel(targetElement)
|
|
23021
23010
|
]
|
|
23022
23011
|
}
|
|
23023
23012
|
) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-1 inline-flex items-center gap-1 rounded bg-muted/60 px-1.5 py-0.5 text-[10px] text-muted-foreground", children: t("pptx.comments.deletedElement") })),
|
|
@@ -23079,7 +23068,7 @@ function InspectorCommentRow({
|
|
|
23079
23068
|
"button",
|
|
23080
23069
|
{
|
|
23081
23070
|
type: "button",
|
|
23082
|
-
className:
|
|
23071
|
+
className: chunkLXUMBK2O_js.cn(
|
|
23083
23072
|
"inline-flex items-center justify-center p-1.5 border-l border-border transition-colors",
|
|
23084
23073
|
comment.resolved ? "bg-green-900/40 text-green-300 hover:bg-green-900/60" : "hover:bg-accent text-foreground hover:text-foreground"
|
|
23085
23074
|
),
|
|
@@ -23246,7 +23235,7 @@ function InspectorCommentsSection({
|
|
|
23246
23235
|
selectedElement && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-center gap-1 rounded bg-primary/20 px-1.5 py-0.5 text-[10px] text-primary", children: [
|
|
23247
23236
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
|
|
23248
23237
|
t("pptx.comments.commentingOn", {
|
|
23249
|
-
element:
|
|
23238
|
+
element: chunkBXACB3BG_js.getElementLabel(selectedElement)
|
|
23250
23239
|
})
|
|
23251
23240
|
] }),
|
|
23252
23241
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -23254,7 +23243,7 @@ function InspectorCommentsSection({
|
|
|
23254
23243
|
{
|
|
23255
23244
|
rows: 2,
|
|
23256
23245
|
placeholder: selectedElement ? t("pptx.comments.addOnElement", {
|
|
23257
|
-
element:
|
|
23246
|
+
element: chunkBXACB3BG_js.getElementLabel(selectedElement)
|
|
23258
23247
|
}) : t("pptx.comments.addPlaceholder"),
|
|
23259
23248
|
value: commentDraft,
|
|
23260
23249
|
className: "w-full bg-muted border border-border rounded px-2 py-1 text-xs resize-y outline-none focus:border-primary",
|
|
@@ -23273,7 +23262,7 @@ function InspectorCommentsSection({
|
|
|
23273
23262
|
type: "button",
|
|
23274
23263
|
onClick: onAddComment,
|
|
23275
23264
|
disabled: !commentDraft.trim(),
|
|
23276
|
-
className:
|
|
23265
|
+
className: chunkLXUMBK2O_js.cn(
|
|
23277
23266
|
"w-full inline-flex items-center justify-center gap-1 rounded px-2 py-1 text-[11px] font-medium transition-colors",
|
|
23278
23267
|
commentDraft.trim() ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
|
|
23279
23268
|
),
|
|
@@ -23298,7 +23287,7 @@ function InspectorPaneHeader({
|
|
|
23298
23287
|
{
|
|
23299
23288
|
type: "button",
|
|
23300
23289
|
title: label,
|
|
23301
|
-
className:
|
|
23290
|
+
className: chunkLXUMBK2O_js.cn(
|
|
23302
23291
|
"flex items-center gap-1 px-2 py-1 rounded text-[11px] transition-colors",
|
|
23303
23292
|
activeTab === key ? "bg-primary text-white" : "text-muted-foreground hover:text-foreground hover:bg-accent"
|
|
23304
23293
|
),
|
|
@@ -23407,7 +23396,7 @@ function CustomPropertiesBlock({
|
|
|
23407
23396
|
"button",
|
|
23408
23397
|
{
|
|
23409
23398
|
type: "button",
|
|
23410
|
-
className:
|
|
23399
|
+
className: chunkLXUMBK2O_js.cn(BTN, "px-1.5 text-red-400 hover:text-red-300"),
|
|
23411
23400
|
onClick: () => onUpdate(customProperties.filter((_, i) => i !== index)),
|
|
23412
23401
|
children: "\xD7"
|
|
23413
23402
|
}
|
|
@@ -23542,7 +23531,7 @@ function PresentationSettingsCard({
|
|
|
23542
23531
|
"select",
|
|
23543
23532
|
{
|
|
23544
23533
|
disabled: !canEdit,
|
|
23545
|
-
className:
|
|
23534
|
+
className: chunkLXUMBK2O_js.cn(INPUT, "w-28"),
|
|
23546
23535
|
value: presentationProperties.showType ?? "presented",
|
|
23547
23536
|
onChange: (e) => onUpdate({
|
|
23548
23537
|
showType: e.target.value
|
|
@@ -23600,7 +23589,7 @@ function PresentationSettingsCard({
|
|
|
23600
23589
|
min: 1,
|
|
23601
23590
|
max: 16,
|
|
23602
23591
|
disabled: !canEdit,
|
|
23603
|
-
className:
|
|
23592
|
+
className: chunkLXUMBK2O_js.cn(INPUT, "w-20"),
|
|
23604
23593
|
value: presentationProperties.printSlidesPerPage ?? 1,
|
|
23605
23594
|
onChange: (e) => onUpdate({ printSlidesPerPage: Number(e.target.value) })
|
|
23606
23595
|
}
|
|
@@ -23897,7 +23886,7 @@ function TagsSection({
|
|
|
23897
23886
|
"button",
|
|
23898
23887
|
{
|
|
23899
23888
|
type: "button",
|
|
23900
|
-
className:
|
|
23889
|
+
className: chunkLXUMBK2O_js.cn(BTN, "px-1.5 text-red-400 hover:text-red-300"),
|
|
23901
23890
|
title: t("pptx.tags.deleteTag"),
|
|
23902
23891
|
onClick: () => deleteTag(tag.colIdx, tag.tagIdx),
|
|
23903
23892
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuTrash2, { className: "w-3 h-3" })
|
|
@@ -23997,7 +23986,7 @@ function PresentationPropertiesPanel({
|
|
|
23997
23986
|
canEdit
|
|
23998
23987
|
}
|
|
23999
23988
|
),
|
|
24000
|
-
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
23989
|
+
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkLXUMBK2O_js.cn(CARD, "space-y-1"), children: [
|
|
24001
23990
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: "Slide" }),
|
|
24002
23991
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[11px] text-muted-foreground", children: [
|
|
24003
23992
|
activeSlide.elements?.length ?? 0,
|
|
@@ -24018,14 +24007,14 @@ function SlideBackgroundPanel({
|
|
|
24018
24007
|
const { t } = reactI18next.useTranslation();
|
|
24019
24008
|
const bgImageInputRef = React14.useRef(null);
|
|
24020
24009
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
24021
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
24010
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkLXUMBK2O_js.cn(CARD, "space-y-2"), children: [
|
|
24022
24011
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: "Background" }),
|
|
24023
24012
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
24024
24013
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-10 shrink-0", children: "Colour" }),
|
|
24025
24014
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
24026
24015
|
DebouncedColorInput,
|
|
24027
24016
|
{
|
|
24028
|
-
value:
|
|
24017
|
+
value: chunkBXACB3BG_js.normalizeHexColor(activeSlide.backgroundColor, "#ffffff"),
|
|
24029
24018
|
disabled: !canEdit,
|
|
24030
24019
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
24031
24020
|
onCommit: (hex) => onUpdateSlide({ backgroundColor: hex })
|
|
@@ -24064,7 +24053,7 @@ function SlideBackgroundPanel({
|
|
|
24064
24053
|
"button",
|
|
24065
24054
|
{
|
|
24066
24055
|
type: "button",
|
|
24067
|
-
className:
|
|
24056
|
+
className: chunkLXUMBK2O_js.cn(BTN, "flex-1 text-center"),
|
|
24068
24057
|
disabled: !canEdit,
|
|
24069
24058
|
onClick: () => bgImageInputRef.current?.click(),
|
|
24070
24059
|
children: activeSlide.backgroundImage ? t("pptx.slideBackground.replaceImage") : t("pptx.slideBackground.chooseImage")
|
|
@@ -24097,7 +24086,7 @@ function SlideBackgroundPanel({
|
|
|
24097
24086
|
"button",
|
|
24098
24087
|
{
|
|
24099
24088
|
type: "button",
|
|
24100
|
-
className:
|
|
24089
|
+
className: chunkLXUMBK2O_js.cn(BTN, "w-full text-center text-red-400 hover:text-red-300"),
|
|
24101
24090
|
disabled: !canEdit,
|
|
24102
24091
|
onClick: () => onUpdateSlide({
|
|
24103
24092
|
backgroundColor: void 0,
|
|
@@ -24128,7 +24117,7 @@ function TemplateBackgroundCard({
|
|
|
24128
24117
|
onGetTemplateBackgroundColor
|
|
24129
24118
|
}) {
|
|
24130
24119
|
const { t } = reactI18next.useTranslation();
|
|
24131
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
24120
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkLXUMBK2O_js.cn(CARD, "space-y-2"), children: [
|
|
24132
24121
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: t("pptx.slideBackground.templateBackgroundsHeading") }),
|
|
24133
24122
|
activeSlide.layoutPath && /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
24134
24123
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -24142,7 +24131,7 @@ function TemplateBackgroundCard({
|
|
|
24142
24131
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
24143
24132
|
DebouncedColorInput,
|
|
24144
24133
|
{
|
|
24145
|
-
value:
|
|
24134
|
+
value: chunkBXACB3BG_js.normalizeHexColor(
|
|
24146
24135
|
onGetTemplateBackgroundColor(activeSlide.layoutPath),
|
|
24147
24136
|
"#ffffff"
|
|
24148
24137
|
),
|
|
@@ -24172,7 +24161,7 @@ function TemplateBackgroundCard({
|
|
|
24172
24161
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
24173
24162
|
DebouncedColorInput,
|
|
24174
24163
|
{
|
|
24175
|
-
value:
|
|
24164
|
+
value: chunkBXACB3BG_js.normalizeHexColor(onGetTemplateBackgroundColor(master.path), "#ffffff"),
|
|
24176
24165
|
disabled: !canEdit,
|
|
24177
24166
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
24178
24167
|
onCommit: (hex) => onSetTemplateBackground(master.path, hex)
|
|
@@ -24275,7 +24264,7 @@ function InspectorPane(props) {
|
|
|
24275
24264
|
} = props;
|
|
24276
24265
|
const hasSelection = selectedElement !== null;
|
|
24277
24266
|
const { t } = reactI18next.useTranslation();
|
|
24278
|
-
const { dragY, handlers: dragHandlers } =
|
|
24267
|
+
const { dragY, handlers: dragHandlers } = chunkLXUMBK2O_js.useSheetDismissDrag(onClose);
|
|
24279
24268
|
const {
|
|
24280
24269
|
animationPanelHeight,
|
|
24281
24270
|
effectiveThemeOptions,
|
|
@@ -24296,7 +24285,7 @@ function InspectorPane(props) {
|
|
|
24296
24285
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
24297
24286
|
"div",
|
|
24298
24287
|
{
|
|
24299
|
-
className:
|
|
24288
|
+
className: chunkLXUMBK2O_js.cn(
|
|
24300
24289
|
// Shared styles
|
|
24301
24290
|
"bg-background flex flex-col text-xs text-foreground shadow-xl",
|
|
24302
24291
|
// Mobile: absolute bottom sheet overlay sized via dvh so it
|
|
@@ -24334,7 +24323,7 @@ function InspectorPane(props) {
|
|
|
24334
24323
|
),
|
|
24335
24324
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 overflow-y-auto p-3 space-y-3", children: [
|
|
24336
24325
|
activeTab === "elements" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
24337
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
24326
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkLXUMBK2O_js.cn(HEADING, "mb-2"), children: t("pptx.inspector.layerOrder") }),
|
|
24338
24327
|
activeSlide ? [...activeSlide.elements || []].reverse().map((el, ri) => {
|
|
24339
24328
|
const idx = (activeSlide.elements || []).length - 1 - ri;
|
|
24340
24329
|
const sel = selectedElement?.id === el.id || selectedElementIds.includes(el.id);
|
|
@@ -24343,7 +24332,7 @@ function InspectorPane(props) {
|
|
|
24343
24332
|
"div",
|
|
24344
24333
|
{
|
|
24345
24334
|
title: `${el.type} \u2014 ${el.id}`,
|
|
24346
|
-
className:
|
|
24335
|
+
className: chunkLXUMBK2O_js.cn(
|
|
24347
24336
|
"flex items-center gap-2 px-2 py-1 rounded cursor-pointer transition-colors",
|
|
24348
24337
|
sel ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground"
|
|
24349
24338
|
),
|
|
@@ -24751,7 +24740,7 @@ function PresentationToolbar({
|
|
|
24751
24740
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuChevronLeft, { size: 18 })
|
|
24752
24741
|
}
|
|
24753
24742
|
),
|
|
24754
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-mono tabular-nums text-white/80 px-1.5 select-none min-w-[48px] text-center", children:
|
|
24743
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-mono tabular-nums text-white/80 px-1.5 select-none min-w-[48px] text-center", children: chunkBXACB3BG_js.formatSlideCounter(currentSlideIndex, totalSlides) }),
|
|
24755
24744
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
24756
24745
|
"button",
|
|
24757
24746
|
{
|
|
@@ -24772,7 +24761,7 @@ function PresentationToolbar({
|
|
|
24772
24761
|
title: t("pptx.presenter.elapsed"),
|
|
24773
24762
|
children: [
|
|
24774
24763
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuTimer, { size: 14 }),
|
|
24775
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children:
|
|
24764
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: chunkBXACB3BG_js.formatElapsed(elapsed) })
|
|
24776
24765
|
]
|
|
24777
24766
|
}
|
|
24778
24767
|
),
|
|
@@ -24946,7 +24935,7 @@ function PresentationTouchControls({
|
|
|
24946
24935
|
onEndPresentation
|
|
24947
24936
|
}) {
|
|
24948
24937
|
const { t } = reactI18next.useTranslation();
|
|
24949
|
-
const { isTouchDevice } =
|
|
24938
|
+
const { isTouchDevice } = chunkLXUMBK2O_js.useIsMobile();
|
|
24950
24939
|
if (!isTouchDevice) {
|
|
24951
24940
|
return null;
|
|
24952
24941
|
}
|
|
@@ -25030,7 +25019,7 @@ function SlideLayer({ slide, templateElements, canvasSize }) {
|
|
|
25030
25019
|
style: {
|
|
25031
25020
|
width: safeWidth,
|
|
25032
25021
|
height: safeHeight,
|
|
25033
|
-
backgroundColor: slide.backgroundColor ?
|
|
25022
|
+
backgroundColor: slide.backgroundColor ? chunkBXACB3BG_js.normalizeHexColor(slide.backgroundColor, "#ffffff") : "#ffffff",
|
|
25034
25023
|
backgroundImage: slide.backgroundImage ? `url(${slide.backgroundImage})` : slide.backgroundGradient ? slide.backgroundGradient : void 0,
|
|
25035
25024
|
backgroundSize: slide.backgroundImage ? "cover" : void 0,
|
|
25036
25025
|
backgroundPosition: slide.backgroundImage ? "center" : void 0
|
|
@@ -25073,7 +25062,7 @@ function PresentationTransitionOverlay({
|
|
|
25073
25062
|
};
|
|
25074
25063
|
}, [durationMs, onComplete]);
|
|
25075
25064
|
const animations = React14.useMemo(
|
|
25076
|
-
() =>
|
|
25065
|
+
() => chunkBXACB3BG_js.getSlideTransitionAnimations(
|
|
25077
25066
|
transition.type,
|
|
25078
25067
|
durationMs,
|
|
25079
25068
|
transition.direction,
|
|
@@ -25099,7 +25088,7 @@ function PresentationTransitionOverlay({
|
|
|
25099
25088
|
className: "pptx-react-transition-overlay absolute inset-0 pointer-events-none overflow-hidden",
|
|
25100
25089
|
style: { zIndex: outgoingZIndex },
|
|
25101
25090
|
children: [
|
|
25102
|
-
/* @__PURE__ */ jsxRuntime.jsx("style", { children:
|
|
25091
|
+
/* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkBXACB3BG_js.SLIDE_TRANSITION_KEYFRAMES }),
|
|
25103
25092
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25104
25093
|
"div",
|
|
25105
25094
|
{
|
|
@@ -25199,8 +25188,8 @@ function NotesPagePreview({
|
|
|
25199
25188
|
maxPages = 3
|
|
25200
25189
|
}) {
|
|
25201
25190
|
const { t } = reactI18next.useTranslation();
|
|
25202
|
-
const pages = React14.useMemo(() =>
|
|
25203
|
-
const printable = React14.useMemo(() =>
|
|
25191
|
+
const pages = React14.useMemo(() => chunkBXACB3BG_js.computeAllNotesPages(slideIndices), [slideIndices]);
|
|
25192
|
+
const printable = React14.useMemo(() => chunkBXACB3BG_js.getNotesPrintableArea(), []);
|
|
25204
25193
|
const visiblePages = pages.slice(0, maxPages);
|
|
25205
25194
|
const scaledW = printable.width * PREVIEW_SCALE;
|
|
25206
25195
|
const scaledH = printable.height * PREVIEW_SCALE;
|
|
@@ -25288,13 +25277,13 @@ function PrintPreview({
|
|
|
25288
25277
|
}) {
|
|
25289
25278
|
const { t } = reactI18next.useTranslation();
|
|
25290
25279
|
const pages = React14.useMemo(
|
|
25291
|
-
() =>
|
|
25280
|
+
() => chunkBXACB3BG_js.computeHandoutLayout(slideIndices, slidesPerPage, orientation),
|
|
25292
25281
|
[slideIndices, slidesPerPage, orientation]
|
|
25293
25282
|
);
|
|
25294
|
-
const printable = React14.useMemo(() =>
|
|
25283
|
+
const printable = React14.useMemo(() => chunkBXACB3BG_js.getPrintableArea(orientation), [orientation]);
|
|
25295
25284
|
const visiblePages = pages.slice(0, maxPages);
|
|
25296
25285
|
const isThreePerPage = slidesPerPage === 3;
|
|
25297
|
-
const noteLineCount =
|
|
25286
|
+
const noteLineCount = chunkBXACB3BG_js.generateNoteLineCount();
|
|
25298
25287
|
const scaledW = printable.width * PREVIEW_SCALE2;
|
|
25299
25288
|
const scaledH = printable.height * PREVIEW_SCALE2;
|
|
25300
25289
|
const noteAreaFraction = 0.5;
|
|
@@ -25459,7 +25448,7 @@ function PrintSettingsPanel({
|
|
|
25459
25448
|
] }),
|
|
25460
25449
|
printWhat === "handouts" && /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { children: [
|
|
25461
25450
|
/* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-xs font-medium text-muted-foreground mb-2 uppercase tracking-wide", children: t("pptx.print.slidesPerPage") }),
|
|
25462
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-1.5 flex-wrap", children:
|
|
25451
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-1.5 flex-wrap", children: chunkBXACB3BG_js.HANDOUT_OPTIONS.map((n) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
25463
25452
|
"button",
|
|
25464
25453
|
{
|
|
25465
25454
|
type: "button",
|
|
@@ -25645,13 +25634,13 @@ function PrintDialog({
|
|
|
25645
25634
|
defaultFrameSlides
|
|
25646
25635
|
}) {
|
|
25647
25636
|
const { t } = reactI18next.useTranslation();
|
|
25648
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
25637
|
+
const { panelStyle, handlers: dragHandlers } = chunkLXUMBK2O_js.useModalDismissDrag(onClose);
|
|
25649
25638
|
const [printWhat, setPrintWhat] = React14.useState("slides");
|
|
25650
25639
|
const [orientation, setOrientation] = React14.useState("landscape");
|
|
25651
25640
|
const [colorMode, setColorMode] = React14.useState("color");
|
|
25652
25641
|
const [frameSlides, setFrameSlides] = React14.useState(defaultFrameSlides ?? false);
|
|
25653
25642
|
const [slidesPerPage, setSlidesPerPage] = React14.useState(
|
|
25654
|
-
|
|
25643
|
+
chunkBXACB3BG_js.HANDOUT_OPTIONS.includes(defaultSlidesPerPage) ? defaultSlidesPerPage : 6
|
|
25655
25644
|
);
|
|
25656
25645
|
const [slideRange, setSlideRange] = React14.useState("all");
|
|
25657
25646
|
const [customFrom, setCustomFrom] = React14.useState(1);
|
|
@@ -26174,19 +26163,19 @@ function BroadcastDialog({
|
|
|
26174
26163
|
const [serverUrl, setServerUrl] = React14.useState("");
|
|
26175
26164
|
const [copied, setCopied] = React14.useState(false);
|
|
26176
26165
|
const dialogRef = React14.useRef(null);
|
|
26177
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
26166
|
+
const { panelStyle, handlers: dragHandlers } = chunkLXUMBK2O_js.useModalDismissDrag(onClose);
|
|
26178
26167
|
useModalFocus(open, dialogRef, onClose);
|
|
26179
26168
|
React14.useEffect(() => {
|
|
26180
26169
|
if (open && !isBroadcasting) {
|
|
26181
|
-
const broadcastRoom = defaultRoomId ? `broadcast-${defaultRoomId}` :
|
|
26170
|
+
const broadcastRoom = defaultRoomId ? `broadcast-${defaultRoomId}` : chunkBXACB3BG_js.generateBroadcastRoomId();
|
|
26182
26171
|
setRoomId(broadcastRoom);
|
|
26183
26172
|
setUserName(defaultUserName ?? "");
|
|
26184
|
-
setServerUrl(defaultServerUrl ??
|
|
26173
|
+
setServerUrl(defaultServerUrl ?? chunkBXACB3BG_js.DEFAULT_BROADCAST_SERVER_URL);
|
|
26185
26174
|
}
|
|
26186
26175
|
}, [open, isBroadcasting, defaultRoomId, defaultUserName, defaultServerUrl]);
|
|
26187
26176
|
const activeRoomId = isBroadcasting ? collab.config.roomId : roomId;
|
|
26188
26177
|
const activeServerUrl = isBroadcasting ? collab.config.serverUrl : serverUrl;
|
|
26189
|
-
const broadcastUrl = typeof window !== "undefined" ?
|
|
26178
|
+
const broadcastUrl = typeof window !== "undefined" ? chunkBXACB3BG_js.buildBroadcastViewerUrl(activeRoomId, activeServerUrl, window.location) : activeRoomId;
|
|
26190
26179
|
const handleCopyUrl = React14.useCallback(() => {
|
|
26191
26180
|
void navigator.clipboard.writeText(broadcastUrl).then(() => {
|
|
26192
26181
|
setCopied(true);
|
|
@@ -26205,7 +26194,7 @@ function BroadcastDialog({
|
|
|
26205
26194
|
userName: userName.trim(),
|
|
26206
26195
|
role: "owner",
|
|
26207
26196
|
// A blank server broadcasts over the serverless peer-to-peer transport.
|
|
26208
|
-
transport:
|
|
26197
|
+
transport: chunkBXACB3BG_js.resolveTransportForServerUrl(trimmedServer)
|
|
26209
26198
|
});
|
|
26210
26199
|
setTimeout(() => {
|
|
26211
26200
|
onStartPresenting?.();
|
|
@@ -26475,7 +26464,7 @@ function isP2P(config) {
|
|
|
26475
26464
|
return config.transport === "webrtc" || !config.serverUrl?.trim();
|
|
26476
26465
|
}
|
|
26477
26466
|
function shareUrl(config) {
|
|
26478
|
-
return
|
|
26467
|
+
return chunkBXACB3BG_js.buildCollaborationShareUrl(
|
|
26479
26468
|
config,
|
|
26480
26469
|
typeof window === "undefined" ? void 0 : { origin: window.location.origin, pathname: window.location.pathname }
|
|
26481
26470
|
);
|
|
@@ -26711,7 +26700,7 @@ function StartSessionForm({
|
|
|
26711
26700
|
] });
|
|
26712
26701
|
}
|
|
26713
26702
|
function shareUrl2(config) {
|
|
26714
|
-
return
|
|
26703
|
+
return chunkBXACB3BG_js.buildCollaborationShareUrl(
|
|
26715
26704
|
config,
|
|
26716
26705
|
typeof window === "undefined" ? void 0 : { origin: window.location.origin, pathname: window.location.pathname }
|
|
26717
26706
|
);
|
|
@@ -26737,7 +26726,7 @@ function ShareDialog({
|
|
|
26737
26726
|
const [invitation, setInvitation] = React14.useState("");
|
|
26738
26727
|
const [copied, setCopied] = React14.useState(false);
|
|
26739
26728
|
const dialogRef = React14.useRef(null);
|
|
26740
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
26729
|
+
const { panelStyle, handlers: dragHandlers } = chunkLXUMBK2O_js.useModalDismissDrag(onClose);
|
|
26741
26730
|
useModalFocus(open, dialogRef, onClose);
|
|
26742
26731
|
React14.useEffect(() => {
|
|
26743
26732
|
if (activeCollaboration) {
|
|
@@ -26755,12 +26744,12 @@ function ShareDialog({
|
|
|
26755
26744
|
});
|
|
26756
26745
|
}, [activeCollaboration, roomId, serverUrl]);
|
|
26757
26746
|
const handleStartSharing = React14.useCallback(() => {
|
|
26758
|
-
const config = mode === "join" ?
|
|
26747
|
+
const config = mode === "join" ? chunkBXACB3BG_js.buildJoinCollaborationConfig({ invitation, userName, serverUrl }) : chunkBXACB3BG_js.buildCreateCollaborationConfig({ roomId, userName, serverUrl });
|
|
26759
26748
|
if (config) {
|
|
26760
26749
|
onStartCollaboration?.(config);
|
|
26761
26750
|
}
|
|
26762
26751
|
}, [invitation, mode, roomId, userName, serverUrl, onStartCollaboration]);
|
|
26763
|
-
const canStart = (mode === "join" ?
|
|
26752
|
+
const canStart = (mode === "join" ? chunkBXACB3BG_js.buildJoinCollaborationConfig({ invitation, userName, serverUrl }) : chunkBXACB3BG_js.buildCreateCollaborationConfig({ roomId, userName, serverUrl })) !== null;
|
|
26764
26753
|
if (!open) {
|
|
26765
26754
|
return null;
|
|
26766
26755
|
}
|
|
@@ -27012,12 +27001,12 @@ function HyperlinkEditDialog({
|
|
|
27012
27001
|
onCancel
|
|
27013
27002
|
}) {
|
|
27014
27003
|
const { t } = reactI18next.useTranslation();
|
|
27015
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
27004
|
+
const { panelStyle, handlers: dragHandlers } = chunkLXUMBK2O_js.useModalDismissDrag(onCancel);
|
|
27016
27005
|
const inputRef = React14.useRef(null);
|
|
27017
|
-
const detectedType =
|
|
27018
|
-
const emailParts =
|
|
27019
|
-
const detectedSlide =
|
|
27020
|
-
const detectedVerb = initialAction ?
|
|
27006
|
+
const detectedType = chunkLXUMBK2O_js.detectTargetType(initialUrl, initialAction);
|
|
27007
|
+
const emailParts = chunkLXUMBK2O_js.parseEmailUrl(initialUrl || "");
|
|
27008
|
+
const detectedSlide = chunkLXUMBK2O_js.parseSlideFromUrl(initialUrl, initialAction);
|
|
27009
|
+
const detectedVerb = initialAction ? chunkLXUMBK2O_js.ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
|
|
27021
27010
|
const [targetType, setTargetType] = React14.useState(detectedType);
|
|
27022
27011
|
const [url, setUrl] = React14.useState(
|
|
27023
27012
|
detectedType === "email" || detectedType === "slide" || detectedType === "action" ? "" : initialUrl || ""
|
|
@@ -27048,7 +27037,7 @@ function HyperlinkEditDialog({
|
|
|
27048
27037
|
actionVerb
|
|
27049
27038
|
});
|
|
27050
27039
|
};
|
|
27051
|
-
const tabCls = (active) =>
|
|
27040
|
+
const tabCls = (active) => chunkLXUMBK2O_js.cn(
|
|
27052
27041
|
"px-3 py-1.5 text-xs rounded-t border-b-2 transition-colors",
|
|
27053
27042
|
active ? "border-primary text-primary font-medium" : "border-transparent text-muted-foreground hover:text-foreground hover:border-border"
|
|
27054
27043
|
);
|
|
@@ -27266,7 +27255,7 @@ function CommentMarkersOverlay({
|
|
|
27266
27255
|
onCommentMarkerClick
|
|
27267
27256
|
}) {
|
|
27268
27257
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 pointer-events-none z-[45]", children: comments.map((comment, idx) => {
|
|
27269
|
-
const pos =
|
|
27258
|
+
const pos = chunkBXACB3BG_js.getCommentMarkerPosition(comment, idx, canvasSize.width, canvasSize.height);
|
|
27270
27259
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
27271
27260
|
"div",
|
|
27272
27261
|
{
|
|
@@ -27318,7 +27307,7 @@ function ConnectorOverlay({
|
|
|
27318
27307
|
style: { pointerEvents: connectorDragState ? "auto" : "none" },
|
|
27319
27308
|
children: [
|
|
27320
27309
|
activeSlide.elements.filter((el) => el.type !== "connector").map((el) => {
|
|
27321
|
-
const sites =
|
|
27310
|
+
const sites = chunkBXACB3BG_js.getConnectionSites(el.width, el.height);
|
|
27322
27311
|
return sites.map((site) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
27323
27312
|
"div",
|
|
27324
27313
|
{
|
|
@@ -27360,7 +27349,7 @@ function ConnectorDragPreview({
|
|
|
27360
27349
|
if (!startEl) {
|
|
27361
27350
|
return null;
|
|
27362
27351
|
}
|
|
27363
|
-
const startSites =
|
|
27352
|
+
const startSites = chunkBXACB3BG_js.getConnectionSites(startEl.width, startEl.height);
|
|
27364
27353
|
const startSite = startSites[connectorDragState.startSiteIndex] ?? startSites[0];
|
|
27365
27354
|
const sx = startEl.x + startSite.x;
|
|
27366
27355
|
const sy = startEl.y + startSite.y;
|
|
@@ -27438,7 +27427,7 @@ function DrawingOverlaySvg({
|
|
|
27438
27427
|
}
|
|
27439
27428
|
);
|
|
27440
27429
|
}
|
|
27441
|
-
function GridOverlay({ canvasSize, gridSpacingPx =
|
|
27430
|
+
function GridOverlay({ canvasSize, gridSpacingPx = chunkLXUMBK2O_js.GRID_SIZE, visible }) {
|
|
27442
27431
|
const spacing = Math.max(gridSpacingPx, 2);
|
|
27443
27432
|
const patternId = React14.useMemo(() => `grid-dot-pattern-${Math.random().toString(36).slice(2, 8)}`, []);
|
|
27444
27433
|
if (!visible) {
|
|
@@ -27459,15 +27448,15 @@ function GridOverlay({ canvasSize, gridSpacingPx = chunkYF6JD4DO_js.GRID_SIZE, v
|
|
|
27459
27448
|
);
|
|
27460
27449
|
}
|
|
27461
27450
|
var HorizontalRuler = React14__default.default.memo(({ ticks, widthPx, highlight }) => {
|
|
27462
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: widthPx, height:
|
|
27463
|
-
/* @__PURE__ */ jsxRuntime.jsx("rect", { width: widthPx, height:
|
|
27451
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: widthPx, height: chunkBXACB3BG_js.RULER_THICKNESS, className: "block select-none", "aria-hidden": "true", children: [
|
|
27452
|
+
/* @__PURE__ */ jsxRuntime.jsx("rect", { width: widthPx, height: chunkBXACB3BG_js.RULER_THICKNESS, className: "fill-gray-100 dark:fill-gray-800" }),
|
|
27464
27453
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
27465
27454
|
"line",
|
|
27466
27455
|
{
|
|
27467
27456
|
x1: 0,
|
|
27468
|
-
y1:
|
|
27457
|
+
y1: chunkBXACB3BG_js.RULER_THICKNESS - 0.5,
|
|
27469
27458
|
x2: widthPx,
|
|
27470
|
-
y2:
|
|
27459
|
+
y2: chunkBXACB3BG_js.RULER_THICKNESS - 0.5,
|
|
27471
27460
|
className: "stroke-border",
|
|
27472
27461
|
strokeWidth: 1
|
|
27473
27462
|
}
|
|
@@ -27478,20 +27467,20 @@ var HorizontalRuler = React14__default.default.memo(({ ticks, widthPx, highlight
|
|
|
27478
27467
|
x: highlight.start,
|
|
27479
27468
|
y: 0,
|
|
27480
27469
|
width: Math.max(highlight.end - highlight.start, 1),
|
|
27481
|
-
height:
|
|
27470
|
+
height: chunkBXACB3BG_js.RULER_THICKNESS,
|
|
27482
27471
|
className: "fill-primary/20"
|
|
27483
27472
|
}
|
|
27484
27473
|
),
|
|
27485
27474
|
ticks.map((tick, i) => {
|
|
27486
|
-
const tickHeight = tick.isMajor ?
|
|
27475
|
+
const tickHeight = tick.isMajor ? chunkBXACB3BG_js.RULER_THICKNESS * 0.6 : chunkBXACB3BG_js.RULER_THICKNESS * 0.3;
|
|
27487
27476
|
return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
|
|
27488
27477
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
27489
27478
|
"line",
|
|
27490
27479
|
{
|
|
27491
27480
|
x1: tick.position,
|
|
27492
|
-
y1:
|
|
27481
|
+
y1: chunkBXACB3BG_js.RULER_THICKNESS,
|
|
27493
27482
|
x2: tick.position,
|
|
27494
|
-
y2:
|
|
27483
|
+
y2: chunkBXACB3BG_js.RULER_THICKNESS - tickHeight,
|
|
27495
27484
|
className: "stroke-gray-400 dark:stroke-gray-500",
|
|
27496
27485
|
strokeWidth: tick.isMajor ? 1 : 0.5
|
|
27497
27486
|
}
|
|
@@ -27500,8 +27489,8 @@ var HorizontalRuler = React14__default.default.memo(({ ticks, widthPx, highlight
|
|
|
27500
27489
|
"text",
|
|
27501
27490
|
{
|
|
27502
27491
|
x: tick.position + 2,
|
|
27503
|
-
y:
|
|
27504
|
-
fontSize:
|
|
27492
|
+
y: chunkBXACB3BG_js.RULER_FONT_SIZE + 1,
|
|
27493
|
+
fontSize: chunkBXACB3BG_js.RULER_FONT_SIZE,
|
|
27505
27494
|
className: "fill-gray-500 dark:fill-gray-400",
|
|
27506
27495
|
style: { fontFamily: "system-ui, sans-serif" },
|
|
27507
27496
|
children: tick.label
|
|
@@ -27513,11 +27502,11 @@ var HorizontalRuler = React14__default.default.memo(({ ticks, widthPx, highlight
|
|
|
27513
27502
|
});
|
|
27514
27503
|
HorizontalRuler.displayName = "HorizontalRuler";
|
|
27515
27504
|
var VerticalRuler = React14__default.default.memo(({ ticks, heightPx, highlight }) => {
|
|
27516
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("svg", { width:
|
|
27505
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: chunkBXACB3BG_js.RULER_THICKNESS, height: heightPx, className: "block select-none", "aria-hidden": "true", children: [
|
|
27517
27506
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
27518
27507
|
"rect",
|
|
27519
27508
|
{
|
|
27520
|
-
width:
|
|
27509
|
+
width: chunkBXACB3BG_js.RULER_THICKNESS,
|
|
27521
27510
|
height: heightPx,
|
|
27522
27511
|
className: "fill-gray-100 dark:fill-gray-800"
|
|
27523
27512
|
}
|
|
@@ -27525,9 +27514,9 @@ var VerticalRuler = React14__default.default.memo(({ ticks, heightPx, highlight
|
|
|
27525
27514
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
27526
27515
|
"line",
|
|
27527
27516
|
{
|
|
27528
|
-
x1:
|
|
27517
|
+
x1: chunkBXACB3BG_js.RULER_THICKNESS - 0.5,
|
|
27529
27518
|
y1: 0,
|
|
27530
|
-
x2:
|
|
27519
|
+
x2: chunkBXACB3BG_js.RULER_THICKNESS - 0.5,
|
|
27531
27520
|
y2: heightPx,
|
|
27532
27521
|
className: "stroke-border",
|
|
27533
27522
|
strokeWidth: 1
|
|
@@ -27538,20 +27527,20 @@ var VerticalRuler = React14__default.default.memo(({ ticks, heightPx, highlight
|
|
|
27538
27527
|
{
|
|
27539
27528
|
x: 0,
|
|
27540
27529
|
y: highlight.start,
|
|
27541
|
-
width:
|
|
27530
|
+
width: chunkBXACB3BG_js.RULER_THICKNESS,
|
|
27542
27531
|
height: Math.max(highlight.end - highlight.start, 1),
|
|
27543
27532
|
className: "fill-primary/20"
|
|
27544
27533
|
}
|
|
27545
27534
|
),
|
|
27546
27535
|
ticks.map((tick, i) => {
|
|
27547
|
-
const tickWidth = tick.isMajor ?
|
|
27536
|
+
const tickWidth = tick.isMajor ? chunkBXACB3BG_js.RULER_THICKNESS * 0.6 : chunkBXACB3BG_js.RULER_THICKNESS * 0.3;
|
|
27548
27537
|
return /* @__PURE__ */ jsxRuntime.jsxs("g", { children: [
|
|
27549
27538
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
27550
27539
|
"line",
|
|
27551
27540
|
{
|
|
27552
|
-
x1:
|
|
27541
|
+
x1: chunkBXACB3BG_js.RULER_THICKNESS,
|
|
27553
27542
|
y1: tick.position,
|
|
27554
|
-
x2:
|
|
27543
|
+
x2: chunkBXACB3BG_js.RULER_THICKNESS - tickWidth,
|
|
27555
27544
|
y2: tick.position,
|
|
27556
27545
|
className: "stroke-gray-400 dark:stroke-gray-500",
|
|
27557
27546
|
strokeWidth: tick.isMajor ? 1 : 0.5
|
|
@@ -27561,8 +27550,8 @@ var VerticalRuler = React14__default.default.memo(({ ticks, heightPx, highlight
|
|
|
27561
27550
|
"text",
|
|
27562
27551
|
{
|
|
27563
27552
|
x: 2,
|
|
27564
|
-
y: tick.position +
|
|
27565
|
-
fontSize:
|
|
27553
|
+
y: tick.position + chunkBXACB3BG_js.RULER_FONT_SIZE + 2,
|
|
27554
|
+
fontSize: chunkBXACB3BG_js.RULER_FONT_SIZE,
|
|
27566
27555
|
className: "fill-gray-500 dark:fill-gray-400",
|
|
27567
27556
|
style: { fontFamily: "system-ui, sans-serif" },
|
|
27568
27557
|
children: tick.label
|
|
@@ -27582,11 +27571,11 @@ function Ruler({
|
|
|
27582
27571
|
onCreateGuideFromRuler
|
|
27583
27572
|
}) {
|
|
27584
27573
|
const hTicks = React14.useMemo(
|
|
27585
|
-
() =>
|
|
27574
|
+
() => chunkBXACB3BG_js.generateTicks(canvasSize.width, editorScale, unit),
|
|
27586
27575
|
[canvasSize.width, editorScale, unit]
|
|
27587
27576
|
);
|
|
27588
27577
|
const vTicks = React14.useMemo(
|
|
27589
|
-
() =>
|
|
27578
|
+
() => chunkBXACB3BG_js.generateTicks(canvasSize.height, editorScale, unit),
|
|
27590
27579
|
[canvasSize.height, editorScale, unit]
|
|
27591
27580
|
);
|
|
27592
27581
|
const hHighlight = React14.useMemo(() => {
|
|
@@ -27650,8 +27639,8 @@ function Ruler({
|
|
|
27650
27639
|
}
|
|
27651
27640
|
const rect = rulerEl.getBoundingClientRect();
|
|
27652
27641
|
const posScaled = e.clientY - rect.top;
|
|
27653
|
-
if (posScaled >
|
|
27654
|
-
const positionPx = (posScaled -
|
|
27642
|
+
if (posScaled > chunkBXACB3BG_js.RULER_THICKNESS) {
|
|
27643
|
+
const positionPx = (posScaled - chunkBXACB3BG_js.RULER_THICKNESS) / scale;
|
|
27655
27644
|
if (positionPx >= 0 && positionPx <= canvasSize.height) {
|
|
27656
27645
|
onCreateGuideFromRuler("h", positionPx);
|
|
27657
27646
|
}
|
|
@@ -27664,8 +27653,8 @@ function Ruler({
|
|
|
27664
27653
|
}
|
|
27665
27654
|
const rect = rulerEl.getBoundingClientRect();
|
|
27666
27655
|
const posScaled = e.clientX - rect.left;
|
|
27667
|
-
if (posScaled >
|
|
27668
|
-
const positionPx = (posScaled -
|
|
27656
|
+
if (posScaled > chunkBXACB3BG_js.RULER_THICKNESS) {
|
|
27657
|
+
const positionPx = (posScaled - chunkBXACB3BG_js.RULER_THICKNESS) / scale;
|
|
27669
27658
|
if (positionPx >= 0 && positionPx <= canvasSize.width) {
|
|
27670
27659
|
onCreateGuideFromRuler("v", positionPx);
|
|
27671
27660
|
}
|
|
@@ -27688,8 +27677,8 @@ function Ruler({
|
|
|
27688
27677
|
style: {
|
|
27689
27678
|
top: 0,
|
|
27690
27679
|
left: 0,
|
|
27691
|
-
width:
|
|
27692
|
-
height:
|
|
27680
|
+
width: chunkBXACB3BG_js.RULER_THICKNESS,
|
|
27681
|
+
height: chunkBXACB3BG_js.RULER_THICKNESS
|
|
27693
27682
|
}
|
|
27694
27683
|
}
|
|
27695
27684
|
),
|
|
@@ -27700,9 +27689,9 @@ function Ruler({
|
|
|
27700
27689
|
className: "absolute z-[50] overflow-visible",
|
|
27701
27690
|
style: {
|
|
27702
27691
|
top: 0,
|
|
27703
|
-
left:
|
|
27692
|
+
left: chunkBXACB3BG_js.RULER_THICKNESS,
|
|
27704
27693
|
width: scaledWidth,
|
|
27705
|
-
height:
|
|
27694
|
+
height: chunkBXACB3BG_js.RULER_THICKNESS,
|
|
27706
27695
|
cursor: onCreateGuideFromRuler ? "row-resize" : void 0
|
|
27707
27696
|
},
|
|
27708
27697
|
onPointerDown: handleHRulerPointerDown,
|
|
@@ -27716,9 +27705,9 @@ function Ruler({
|
|
|
27716
27705
|
ref: vRulerRef,
|
|
27717
27706
|
className: "absolute z-[50] overflow-visible",
|
|
27718
27707
|
style: {
|
|
27719
|
-
top:
|
|
27708
|
+
top: chunkBXACB3BG_js.RULER_THICKNESS,
|
|
27720
27709
|
left: 0,
|
|
27721
|
-
width:
|
|
27710
|
+
width: chunkBXACB3BG_js.RULER_THICKNESS,
|
|
27722
27711
|
height: scaledHeight,
|
|
27723
27712
|
cursor: onCreateGuideFromRuler ? "col-resize" : void 0
|
|
27724
27713
|
},
|
|
@@ -27963,8 +27952,8 @@ function useConnectorCreation({
|
|
|
27963
27952
|
setConnectorDragState(null);
|
|
27964
27953
|
return;
|
|
27965
27954
|
}
|
|
27966
|
-
const startSites =
|
|
27967
|
-
const endSites =
|
|
27955
|
+
const startSites = chunkBXACB3BG_js.getConnectionSites(startEl.width, startEl.height);
|
|
27956
|
+
const endSites = chunkBXACB3BG_js.getConnectionSites(endEl.width, endEl.height);
|
|
27968
27957
|
const startSite = startSites[connectorDragState.startSiteIndex] ?? startSites[0];
|
|
27969
27958
|
const endSite = endSites[targetSiteIndex] ?? endSites[0];
|
|
27970
27959
|
const sx = startEl.x + startSite.x;
|
|
@@ -28437,7 +28426,7 @@ function SlideCanvas({
|
|
|
28437
28426
|
onAddFreeformShape,
|
|
28438
28427
|
onEraseInkElement
|
|
28439
28428
|
});
|
|
28440
|
-
const rulerOffset = showRulers ?
|
|
28429
|
+
const rulerOffset = showRulers ? chunkBXACB3BG_js.RULER_THICKNESS : 0;
|
|
28441
28430
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
28442
28431
|
"div",
|
|
28443
28432
|
{
|
|
@@ -28527,7 +28516,7 @@ function SlideCanvas({
|
|
|
28527
28516
|
showResizeHandles: isEditableCanvas && selectedElementIdSet.has(element.id) && selectedElementIdSet.size <= 1 && !inlineEditingElementId,
|
|
28528
28517
|
renderInk: false,
|
|
28529
28518
|
renderGroups: false,
|
|
28530
|
-
adjustmentHandleDescriptor: isEditableCanvas && selectedElement?.id === element.id ?
|
|
28519
|
+
adjustmentHandleDescriptor: isEditableCanvas && selectedElement?.id === element.id ? chunkBXACB3BG_js.getShapeAdjustmentHandleDescriptor(element) : null,
|
|
28531
28520
|
onResizePointerDown: stableResizePointerDown,
|
|
28532
28521
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
28533
28522
|
onRotate: stableRotate,
|
|
@@ -28567,7 +28556,7 @@ function SlideCanvas({
|
|
|
28567
28556
|
showResizeHandles: isEditableCanvas && selectedElementIdSet.has(element.id) && selectedElementIdSet.size <= 1 && !inlineEditingElementId,
|
|
28568
28557
|
renderInk: true,
|
|
28569
28558
|
renderGroups: true,
|
|
28570
|
-
adjustmentHandleDescriptor: isEditableCanvas && selectedElement?.id === element.id ?
|
|
28559
|
+
adjustmentHandleDescriptor: isEditableCanvas && selectedElement?.id === element.id ? chunkBXACB3BG_js.getShapeAdjustmentHandleDescriptor(element) : null,
|
|
28571
28560
|
onResizePointerDown: stableResizePointerDown,
|
|
28572
28561
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
28573
28562
|
onRotate: stableRotate,
|
|
@@ -28936,7 +28925,7 @@ function TitleBar(p) {
|
|
|
28936
28925
|
const [searchQuery, setSearchQuery] = React14.useState("");
|
|
28937
28926
|
const [searchFocused, setSearchFocused] = React14.useState(false);
|
|
28938
28927
|
const searchRef = React14.useRef(null);
|
|
28939
|
-
const commandResults =
|
|
28928
|
+
const commandResults = chunkBXACB3BG_js.filterCommands(searchQuery, t);
|
|
28940
28929
|
const handleCommandSelect = React14.useCallback(
|
|
28941
28930
|
(entry) => {
|
|
28942
28931
|
p.onCommandSearch?.(entry.command);
|
|
@@ -28970,17 +28959,17 @@ function TitleBar(p) {
|
|
|
28970
28959
|
document.addEventListener("mousedown", handler);
|
|
28971
28960
|
return () => document.removeEventListener("mousedown", handler);
|
|
28972
28961
|
}, []);
|
|
28973
|
-
const statusKey =
|
|
28962
|
+
const statusKey = chunkBXACB3BG_js.resolveTitleBarStatusKey({
|
|
28974
28963
|
autosaveState: p.autosaveStatus?.state ?? "idle",
|
|
28975
28964
|
isDirty: p.isDirty,
|
|
28976
28965
|
autosaveEnabled: p.autosaveEnabled,
|
|
28977
28966
|
disabledReason: p.autosaveStatus?.state === "disabled" ? p.autosaveStatus.reason : void 0
|
|
28978
28967
|
});
|
|
28979
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
28980
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
28968
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.container, "data-pptx-title-bar": "", children: [
|
|
28969
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.logo, "aria-hidden": "true", children: "P" }),
|
|
28981
28970
|
editing && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
28982
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className:
|
|
28983
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
28971
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.autosaveGroup, children: [
|
|
28972
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.autosaveLabel, children: t("pptx.titleBar.autoSave") }),
|
|
28984
28973
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
28985
28974
|
"button",
|
|
28986
28975
|
{
|
|
@@ -28988,32 +28977,32 @@ function TitleBar(p) {
|
|
|
28988
28977
|
role: "switch",
|
|
28989
28978
|
"aria-checked": p.autosaveEnabled,
|
|
28990
28979
|
onClick: p.onToggleAutosave,
|
|
28991
|
-
className:
|
|
28992
|
-
|
|
28993
|
-
p.autosaveEnabled ?
|
|
28980
|
+
className: chunkLXUMBK2O_js.cn(
|
|
28981
|
+
chunkBXACB3BG_js.TITLE_BAR_CLASSES.toggleTrack,
|
|
28982
|
+
p.autosaveEnabled ? chunkBXACB3BG_js.TITLE_BAR_CLASSES.toggleTrackOn : chunkBXACB3BG_js.TITLE_BAR_CLASSES.toggleTrackOff
|
|
28994
28983
|
),
|
|
28995
28984
|
title: t("pptx.titleBar.toggleAutoSave"),
|
|
28996
28985
|
"aria-label": t("pptx.titleBar.toggleAutoSave"),
|
|
28997
28986
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
28998
28987
|
"span",
|
|
28999
28988
|
{
|
|
29000
|
-
className:
|
|
29001
|
-
|
|
29002
|
-
p.autosaveEnabled ?
|
|
28989
|
+
className: chunkLXUMBK2O_js.cn(
|
|
28990
|
+
chunkBXACB3BG_js.TITLE_BAR_CLASSES.toggleKnob,
|
|
28991
|
+
p.autosaveEnabled ? chunkBXACB3BG_js.TITLE_BAR_CLASSES.toggleKnobOn : chunkBXACB3BG_js.TITLE_BAR_CLASSES.toggleKnobOff
|
|
29003
28992
|
)
|
|
29004
28993
|
}
|
|
29005
28994
|
)
|
|
29006
28995
|
}
|
|
29007
28996
|
),
|
|
29008
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
28997
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.autosaveLabel, children: t(p.autosaveEnabled ? "pptx.titleBar.autoSaveOn" : "pptx.titleBar.autoSaveOff") })
|
|
29009
28998
|
] }),
|
|
29010
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
28999
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.separator }),
|
|
29011
29000
|
p.onSave && /* @__PURE__ */ jsxRuntime.jsx(
|
|
29012
29001
|
"button",
|
|
29013
29002
|
{
|
|
29014
29003
|
type: "button",
|
|
29015
29004
|
onClick: p.onSave,
|
|
29016
|
-
className:
|
|
29005
|
+
className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.quickButton,
|
|
29017
29006
|
title: t("pptx.titleBar.save"),
|
|
29018
29007
|
"aria-label": t("pptx.titleBar.save"),
|
|
29019
29008
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSave, { className: "w-3.5 h-3.5" })
|
|
@@ -29025,7 +29014,7 @@ function TitleBar(p) {
|
|
|
29025
29014
|
type: "button",
|
|
29026
29015
|
onClick: p.onUndo,
|
|
29027
29016
|
disabled: !p.canUndo,
|
|
29028
|
-
className:
|
|
29017
|
+
className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.quickButton,
|
|
29029
29018
|
title: p.undoLabel ? t("pptx.toolbar.undoAction", { action: p.undoLabel }) : t("pptx.toolbar.undo"),
|
|
29030
29019
|
"aria-label": t("pptx.toolbar.undo"),
|
|
29031
29020
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuUndo, { className: "w-3.5 h-3.5" })
|
|
@@ -29037,41 +29026,41 @@ function TitleBar(p) {
|
|
|
29037
29026
|
type: "button",
|
|
29038
29027
|
onClick: p.onRedo,
|
|
29039
29028
|
disabled: !p.canRedo,
|
|
29040
|
-
className:
|
|
29029
|
+
className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.quickButton,
|
|
29041
29030
|
title: p.redoLabel ? t("pptx.toolbar.redoAction", { action: p.redoLabel }) : t("pptx.toolbar.redo"),
|
|
29042
29031
|
"aria-label": t("pptx.toolbar.redo"),
|
|
29043
29032
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuRedo, { className: "w-3.5 h-3.5" })
|
|
29044
29033
|
}
|
|
29045
29034
|
),
|
|
29046
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
29035
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.separator })
|
|
29047
29036
|
] }),
|
|
29048
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className:
|
|
29049
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
29037
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.fileGroup, children: [
|
|
29038
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.fileName, children: p.fileName || t(chunkBXACB3BG_js.TITLE_BAR_DEFAULT_FILE_KEY) }),
|
|
29050
29039
|
editing && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
29051
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
29040
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.statusDot, "aria-hidden": "true", children: "\u2022" }),
|
|
29052
29041
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
29053
29042
|
"span",
|
|
29054
29043
|
{
|
|
29055
|
-
className:
|
|
29056
|
-
|
|
29057
|
-
p.autosaveStatus?.state === "error" && p.autosaveEnabled &&
|
|
29058
|
-
p.autosaveStatus?.state === "saving" && p.autosaveEnabled &&
|
|
29044
|
+
className: chunkLXUMBK2O_js.cn(
|
|
29045
|
+
chunkBXACB3BG_js.TITLE_BAR_CLASSES.statusText,
|
|
29046
|
+
p.autosaveStatus?.state === "error" && p.autosaveEnabled && chunkBXACB3BG_js.TITLE_BAR_CLASSES.statusError,
|
|
29047
|
+
p.autosaveStatus?.state === "saving" && p.autosaveEnabled && chunkBXACB3BG_js.TITLE_BAR_CLASSES.statusSaving
|
|
29059
29048
|
),
|
|
29060
29049
|
children: t(statusKey)
|
|
29061
29050
|
}
|
|
29062
29051
|
)
|
|
29063
29052
|
] })
|
|
29064
29053
|
] }),
|
|
29065
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
29054
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.searchWrap, children: (p.mode === "edit" || p.mode === "master") && /* @__PURE__ */ jsxRuntime.jsxs("div", { ref: searchRef, className: "relative w-full max-w-md", children: [
|
|
29066
29055
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
29067
29056
|
"div",
|
|
29068
29057
|
{
|
|
29069
|
-
className:
|
|
29070
|
-
|
|
29058
|
+
className: chunkLXUMBK2O_js.cn(
|
|
29059
|
+
chunkBXACB3BG_js.TITLE_BAR_CLASSES.searchBox,
|
|
29071
29060
|
(searchFocused || p.findReplaceOpen) && "text-foreground bg-background"
|
|
29072
29061
|
),
|
|
29073
29062
|
children: [
|
|
29074
|
-
/* @__PURE__ */ jsxRuntime.jsx(lu.LuSearch, { className:
|
|
29063
|
+
/* @__PURE__ */ jsxRuntime.jsx(lu.LuSearch, { className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.searchIcon }),
|
|
29075
29064
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
29076
29065
|
"input",
|
|
29077
29066
|
{
|
|
@@ -29128,7 +29117,7 @@ function TitleBar(p) {
|
|
|
29128
29117
|
) })
|
|
29129
29118
|
] })
|
|
29130
29119
|
] }) }),
|
|
29131
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
29120
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkBXACB3BG_js.TITLE_BAR_CLASSES.rightSpacer })
|
|
29132
29121
|
] });
|
|
29133
29122
|
}
|
|
29134
29123
|
function ViewerToolbarSection(props) {
|
|
@@ -29271,7 +29260,7 @@ function ViewerToolbarSection(props) {
|
|
|
29271
29260
|
insertHandlers.handleAddTable();
|
|
29272
29261
|
break;
|
|
29273
29262
|
case "chart":
|
|
29274
|
-
insertHandlers.handleAddChart(
|
|
29263
|
+
insertHandlers.handleAddChart(chunkBXACB3BG_js.DEFAULT_INSERT_CHART_TYPE);
|
|
29275
29264
|
break;
|
|
29276
29265
|
case "smartArt":
|
|
29277
29266
|
dialogs.setIsSmartArtDialogOpen(true);
|
|
@@ -29462,7 +29451,7 @@ function ViewerToolbarSection(props) {
|
|
|
29462
29451
|
onOpenFile,
|
|
29463
29452
|
onOpenRecentFile,
|
|
29464
29453
|
onCreatePresentation: (templateId) => {
|
|
29465
|
-
s.setSlides(
|
|
29454
|
+
s.setSlides(chunkBXACB3BG_js.createBackstagePresentation(templateId));
|
|
29466
29455
|
s.setActiveSlideIndex(0);
|
|
29467
29456
|
s.setSelectedElementId(null);
|
|
29468
29457
|
s.setSelectedElementIds([]);
|
|
@@ -29517,7 +29506,7 @@ function ViewerToolbarSection(props) {
|
|
|
29517
29506
|
isCommentsPanelOpen: s.isInspectorPaneOpen,
|
|
29518
29507
|
slideCommentCount: activeSlide?.comments?.length ?? 0,
|
|
29519
29508
|
formatPainterActive: s.formatPainterActive,
|
|
29520
|
-
canActivateFormatPainter:
|
|
29509
|
+
canActivateFormatPainter: chunkBXACB3BG_js.hasCopyableFormat(selectedElement),
|
|
29521
29510
|
onToggleFormatPainter: onToggleFormatPainterProp ?? (() => s.setFormatPainterActive((p) => !p)),
|
|
29522
29511
|
isSelectionPaneOpen: s.isSelectionPaneOpen,
|
|
29523
29512
|
onToggleSelectionPane: () => s.setIsSelectionPaneOpen((p) => !p),
|
|
@@ -29564,13 +29553,6 @@ function ViewerToolbarSection(props) {
|
|
|
29564
29553
|
)
|
|
29565
29554
|
] });
|
|
29566
29555
|
}
|
|
29567
|
-
function sanitizeMathMl(markup) {
|
|
29568
|
-
const purify = DOMPurify__default.default;
|
|
29569
|
-
if (typeof purify.sanitize !== "function") {
|
|
29570
|
-
return markup;
|
|
29571
|
-
}
|
|
29572
|
-
return purify.sanitize(markup, { USE_PROFILES: { mathMl: true, svg: true } });
|
|
29573
|
-
}
|
|
29574
29556
|
var TEMPLATES = [
|
|
29575
29557
|
{
|
|
29576
29558
|
label: "Fraction",
|
|
@@ -29635,9 +29617,9 @@ var TEMPLATES = [
|
|
|
29635
29617
|
];
|
|
29636
29618
|
var TEMPLATE_MATHML = TEMPLATES.map((tmpl) => {
|
|
29637
29619
|
try {
|
|
29638
|
-
const tmplOmml =
|
|
29639
|
-
const raw =
|
|
29640
|
-
return raw ? sanitizeMathMl(raw) : "";
|
|
29620
|
+
const tmplOmml = chunkBXACB3BG_js.convertLatexToOmml(tmpl.latex);
|
|
29621
|
+
const raw = chunkBXACB3BG_js.convertOmmlToMathMl(tmplOmml);
|
|
29622
|
+
return raw ? chunkBXACB3BG_js.sanitizeMathMl(raw) : "";
|
|
29641
29623
|
} catch {
|
|
29642
29624
|
return "";
|
|
29643
29625
|
}
|
|
@@ -29649,7 +29631,7 @@ function MathMlPreview({ mathml }) {
|
|
|
29649
29631
|
return;
|
|
29650
29632
|
}
|
|
29651
29633
|
if (mathml) {
|
|
29652
|
-
containerRef.current.innerHTML = sanitizeMathMl(mathml);
|
|
29634
|
+
containerRef.current.innerHTML = chunkBXACB3BG_js.sanitizeMathMl(mathml);
|
|
29653
29635
|
} else {
|
|
29654
29636
|
containerRef.current.innerHTML = "";
|
|
29655
29637
|
}
|
|
@@ -29670,12 +29652,12 @@ function EquationEditorDialog({
|
|
|
29670
29652
|
existingOmml
|
|
29671
29653
|
}) {
|
|
29672
29654
|
const { t } = reactI18next.useTranslation();
|
|
29673
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
29655
|
+
const { panelStyle, handlers: dragHandlers } = chunkLXUMBK2O_js.useModalDismissDrag(onClose);
|
|
29674
29656
|
const initialLatex = React14.useMemo(() => {
|
|
29675
29657
|
if (!existingOmml) {
|
|
29676
29658
|
return "";
|
|
29677
29659
|
}
|
|
29678
|
-
return
|
|
29660
|
+
return chunkBXACB3BG_js.convertOmmlToLatex(existingOmml);
|
|
29679
29661
|
}, [existingOmml]);
|
|
29680
29662
|
const [latex, setLatex] = React14.useState(initialLatex);
|
|
29681
29663
|
const deferredLatex = React14.useDeferredValue(latex);
|
|
@@ -29692,8 +29674,8 @@ function EquationEditorDialog({
|
|
|
29692
29674
|
return { mathml: "", omml: {} };
|
|
29693
29675
|
}
|
|
29694
29676
|
try {
|
|
29695
|
-
const ommlObj =
|
|
29696
|
-
const mathmlStr =
|
|
29677
|
+
const ommlObj = chunkBXACB3BG_js.convertLatexToOmml(deferredLatex);
|
|
29678
|
+
const mathmlStr = chunkBXACB3BG_js.convertOmmlToMathMl(ommlObj);
|
|
29697
29679
|
return { mathml: mathmlStr, omml: ommlObj };
|
|
29698
29680
|
} catch {
|
|
29699
29681
|
return { mathml: "", omml: {} };
|
|
@@ -29705,7 +29687,7 @@ function EquationEditorDialog({
|
|
|
29705
29687
|
}
|
|
29706
29688
|
let insertOmml = omml;
|
|
29707
29689
|
try {
|
|
29708
|
-
const fresh =
|
|
29690
|
+
const fresh = chunkBXACB3BG_js.convertLatexToOmml(latex);
|
|
29709
29691
|
if (fresh && Object.keys(fresh).length > 0) {
|
|
29710
29692
|
insertOmml = fresh;
|
|
29711
29693
|
}
|
|
@@ -29803,7 +29785,7 @@ function EquationEditorDialog({
|
|
|
29803
29785
|
{
|
|
29804
29786
|
type: "button",
|
|
29805
29787
|
onClick: () => handleTemplateClick(tmpl.latex),
|
|
29806
|
-
className:
|
|
29788
|
+
className: chunkLXUMBK2O_js.cn(
|
|
29807
29789
|
"flex flex-col items-center gap-1 p-2 rounded-lg border transition-colors",
|
|
29808
29790
|
latex === tmpl.latex ? "border-primary bg-primary/10" : "border-border bg-muted/40 hover:bg-accent/60 hover:border-border"
|
|
29809
29791
|
),
|
|
@@ -29859,7 +29841,7 @@ var PREVIEW_ELEMENT_HEIGHT = 340;
|
|
|
29859
29841
|
var PREVIEW_TILE_WIDTH = 64;
|
|
29860
29842
|
var FALLBACK_ITEMS = ["1", "2", "3"];
|
|
29861
29843
|
function buildPreviewElement(layout) {
|
|
29862
|
-
const preset =
|
|
29844
|
+
const preset = chunkBXACB3BG_js.PRESETS.find((p) => p.layout === layout);
|
|
29863
29845
|
return {
|
|
29864
29846
|
id: `smartart-preview-${layout}`,
|
|
29865
29847
|
type: "smartArt",
|
|
@@ -29867,7 +29849,7 @@ function buildPreviewElement(layout) {
|
|
|
29867
29849
|
y: 0,
|
|
29868
29850
|
width: PREVIEW_ELEMENT_WIDTH,
|
|
29869
29851
|
height: PREVIEW_ELEMENT_HEIGHT,
|
|
29870
|
-
smartArtData:
|
|
29852
|
+
smartArtData: chunkBXACB3BG_js.buildSmartArtPresetData(layout, preset?.defaultItems ?? FALLBACK_ITEMS)
|
|
29871
29853
|
};
|
|
29872
29854
|
}
|
|
29873
29855
|
function getPreviewForLayout(layout) {
|
|
@@ -29902,17 +29884,17 @@ function InsertSmartArtDialog({
|
|
|
29902
29884
|
onInsert
|
|
29903
29885
|
}) {
|
|
29904
29886
|
const { t } = reactI18next.useTranslation();
|
|
29905
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
29887
|
+
const { panelStyle, handlers: dragHandlers } = chunkLXUMBK2O_js.useModalDismissDrag(onClose);
|
|
29906
29888
|
const [activeCategory, setActiveCategory] = React14.useState("list");
|
|
29907
29889
|
const [selectedLayout, setSelectedLayout] = React14.useState(null);
|
|
29908
29890
|
const dialogRef = React14.useRef(null);
|
|
29909
29891
|
useModalFocus(isOpen, dialogRef, onClose);
|
|
29910
|
-
const filteredPresets =
|
|
29892
|
+
const filteredPresets = chunkBXACB3BG_js.PRESETS.filter((p) => p.category === activeCategory);
|
|
29911
29893
|
const handleInsert = React14.useCallback(() => {
|
|
29912
29894
|
if (!selectedLayout) {
|
|
29913
29895
|
return;
|
|
29914
29896
|
}
|
|
29915
|
-
const preset =
|
|
29897
|
+
const preset = chunkBXACB3BG_js.PRESETS.find((p) => p.layout === selectedLayout);
|
|
29916
29898
|
if (!preset) {
|
|
29917
29899
|
return;
|
|
29918
29900
|
}
|
|
@@ -29975,7 +29957,7 @@ function InsertSmartArtDialog({
|
|
|
29975
29957
|
{
|
|
29976
29958
|
className: "w-40 border-r border-border py-2",
|
|
29977
29959
|
"aria-label": t("pptx.insertSmartArt.categories"),
|
|
29978
|
-
children:
|
|
29960
|
+
children: chunkBXACB3BG_js.CATEGORIES.map((cat) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
29979
29961
|
"button",
|
|
29980
29962
|
{
|
|
29981
29963
|
type: "button",
|
|
@@ -29983,7 +29965,7 @@ function InsertSmartArtDialog({
|
|
|
29983
29965
|
setActiveCategory(cat.id);
|
|
29984
29966
|
setSelectedLayout(null);
|
|
29985
29967
|
},
|
|
29986
|
-
className:
|
|
29968
|
+
className: chunkLXUMBK2O_js.cn(
|
|
29987
29969
|
"w-full text-left px-3 py-1.5 text-xs transition-colors",
|
|
29988
29970
|
activeCategory === cat.id ? "bg-primary text-white" : "text-foreground hover:bg-muted"
|
|
29989
29971
|
),
|
|
@@ -30011,7 +29993,7 @@ function InsertSmartArtDialog({
|
|
|
30011
29993
|
onInsert(preset.layout, preset.defaultItems);
|
|
30012
29994
|
onClose();
|
|
30013
29995
|
},
|
|
30014
|
-
className:
|
|
29996
|
+
className: chunkLXUMBK2O_js.cn(
|
|
30015
29997
|
"flex flex-col items-center gap-1 p-2 rounded border transition-colors",
|
|
30016
29998
|
selectedLayout === preset.layout ? "border-primary bg-primary/20" : "border-border hover:border-border hover:bg-muted/50"
|
|
30017
29999
|
),
|
|
@@ -30041,7 +30023,7 @@ function InsertSmartArtDialog({
|
|
|
30041
30023
|
type: "button",
|
|
30042
30024
|
onClick: handleInsert,
|
|
30043
30025
|
disabled: !selectedLayout,
|
|
30044
|
-
className:
|
|
30026
|
+
className: chunkLXUMBK2O_js.cn(
|
|
30045
30027
|
"px-3 py-1.5 text-xs rounded transition-colors",
|
|
30046
30028
|
selectedLayout ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
|
|
30047
30029
|
),
|
|
@@ -30383,16 +30365,16 @@ function ViewerCanvasArea(props) {
|
|
|
30383
30365
|
if (mode === "present") {
|
|
30384
30366
|
presentation.handlePresentationAction(action);
|
|
30385
30367
|
} else if (action.url) {
|
|
30386
|
-
|
|
30368
|
+
chunkBXACB3BG_js.safeOpenUrl(action.url);
|
|
30387
30369
|
}
|
|
30388
30370
|
},
|
|
30389
30371
|
[mode, presentation]
|
|
30390
30372
|
);
|
|
30391
30373
|
const handleHyperlinkClick = React14.useCallback(
|
|
30392
30374
|
(url) => {
|
|
30393
|
-
if (
|
|
30375
|
+
if (chunkBXACB3BG_js.isPpactionUrl(url)) {
|
|
30394
30376
|
if (mode === "present") {
|
|
30395
|
-
const parsed =
|
|
30377
|
+
const parsed = chunkBXACB3BG_js.parsePpactionUrl(url);
|
|
30396
30378
|
if (parsed) {
|
|
30397
30379
|
const action = {
|
|
30398
30380
|
action: parsed.action,
|
|
@@ -30403,7 +30385,7 @@ function ViewerCanvasArea(props) {
|
|
|
30403
30385
|
}
|
|
30404
30386
|
return;
|
|
30405
30387
|
}
|
|
30406
|
-
|
|
30388
|
+
chunkBXACB3BG_js.safeOpenUrl(url);
|
|
30407
30389
|
},
|
|
30408
30390
|
[mode, presentation]
|
|
30409
30391
|
);
|
|
@@ -30430,7 +30412,7 @@ function ViewerCanvasArea(props) {
|
|
|
30430
30412
|
s.setActiveSlideIndex((i) => Math.max(0, i - 1));
|
|
30431
30413
|
}
|
|
30432
30414
|
}, [mode, presentation, s]);
|
|
30433
|
-
const swipe =
|
|
30415
|
+
const swipe = chunkLXUMBK2O_js.useSwipeNavigation({
|
|
30434
30416
|
enabled: swipeEnabled,
|
|
30435
30417
|
onNext: handleSwipeNext,
|
|
30436
30418
|
onPrev: handleSwipePrev
|
|
@@ -30891,7 +30873,7 @@ function ThemeColorSchemeEditor({
|
|
|
30891
30873
|
onMinorFontChange
|
|
30892
30874
|
}) {
|
|
30893
30875
|
const { t } = reactI18next.useTranslation();
|
|
30894
|
-
const previewGrid = React14.useMemo(() =>
|
|
30876
|
+
const previewGrid = React14.useMemo(() => chunkBXACB3BG_js.buildThemeColorGrid(editColors), [editColors]);
|
|
30895
30877
|
const handleColorText = React14.useCallback(
|
|
30896
30878
|
(val) => {
|
|
30897
30879
|
if (activePickerKey && /^#[0-9a-fA-F]{6}$/.test(val)) {
|
|
@@ -30911,15 +30893,15 @@ function ThemeColorSchemeEditor({
|
|
|
30911
30893
|
disabled: !canEdit,
|
|
30912
30894
|
className: `h-6 w-full rounded-sm border transition-colors ${activePickerKey === key ? "border-primary ring-1 ring-primary" : "border-border hover:border-muted-foreground"} disabled:opacity-40 disabled:cursor-not-allowed`,
|
|
30913
30895
|
style: { backgroundColor: editColors[key] },
|
|
30914
|
-
title: `${
|
|
30915
|
-
"aria-label": `${
|
|
30896
|
+
title: `${chunkBXACB3BG_js.THEME_COLOR_LABELS[key]}: ${editColors[key]}`,
|
|
30897
|
+
"aria-label": `${chunkBXACB3BG_js.THEME_COLOR_LABELS[key]}: ${editColors[key]}`,
|
|
30916
30898
|
onClick: () => onSetActivePickerKey(activePickerKey === key ? null : key)
|
|
30917
30899
|
}
|
|
30918
30900
|
),
|
|
30919
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[9px] text-muted-foreground truncate w-full text-center", children:
|
|
30901
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[9px] text-muted-foreground truncate w-full text-center", children: chunkBXACB3BG_js.THEME_COLOR_LABELS[key] })
|
|
30920
30902
|
] }, key)) }),
|
|
30921
30903
|
activePickerKey && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 flex items-center gap-2 rounded bg-background p-2", children: [
|
|
30922
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground min-w-[60px]", children:
|
|
30904
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground min-w-[60px]", children: chunkBXACB3BG_js.THEME_COLOR_LABELS[activePickerKey] }),
|
|
30923
30905
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30924
30906
|
"input",
|
|
30925
30907
|
{
|
|
@@ -31217,7 +31199,7 @@ function MobileDismissSheet({
|
|
|
31217
31199
|
className,
|
|
31218
31200
|
children
|
|
31219
31201
|
}) {
|
|
31220
|
-
const { dragY, handlers } =
|
|
31202
|
+
const { dragY, handlers } = chunkLXUMBK2O_js.useSheetDismissDrag(onClose);
|
|
31221
31203
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31222
31204
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
31223
31205
|
"button",
|
|
@@ -31486,7 +31468,7 @@ function ThemeThumbnail({
|
|
|
31486
31468
|
{
|
|
31487
31469
|
type: "button",
|
|
31488
31470
|
onClick,
|
|
31489
|
-
className:
|
|
31471
|
+
className: chunkLXUMBK2O_js.cn(
|
|
31490
31472
|
"group relative flex flex-col rounded-lg border-2 transition-all overflow-hidden",
|
|
31491
31473
|
selected ? "border-primary shadow-lg scale-[1.02]" : "border-border hover:border-primary/50 hover:shadow-md"
|
|
31492
31474
|
),
|
|
@@ -32118,7 +32100,7 @@ function MobileBottomBar({
|
|
|
32118
32100
|
{
|
|
32119
32101
|
type: "button",
|
|
32120
32102
|
onClick,
|
|
32121
|
-
className:
|
|
32103
|
+
className: chunkLXUMBK2O_js.cn(
|
|
32122
32104
|
"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",
|
|
32123
32105
|
active ? "text-primary" : "text-muted-foreground hover:text-foreground"
|
|
32124
32106
|
),
|
|
@@ -32166,7 +32148,7 @@ function MobileChromeOverlay(props) {
|
|
|
32166
32148
|
canEdit,
|
|
32167
32149
|
commentCount
|
|
32168
32150
|
} = props;
|
|
32169
|
-
const { keyboardInset, isKeyboardOpen } =
|
|
32151
|
+
const { keyboardInset, isKeyboardOpen } = chunkLXUMBK2O_js.useKeyboardInsets();
|
|
32170
32152
|
const activeSheet = s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null;
|
|
32171
32153
|
const closeAllSheets = () => {
|
|
32172
32154
|
s.setIsSlidesPaneOpen(false);
|
|
@@ -32262,7 +32244,7 @@ function ToggleSwitch({
|
|
|
32262
32244
|
{
|
|
32263
32245
|
type: "button",
|
|
32264
32246
|
onClick: onToggle,
|
|
32265
|
-
className:
|
|
32247
|
+
className: chunkLXUMBK2O_js.cn(
|
|
32266
32248
|
"relative inline-flex h-5 w-9 items-center rounded-full transition-colors",
|
|
32267
32249
|
enabled ? "bg-primary" : "bg-muted-foreground/30"
|
|
32268
32250
|
),
|
|
@@ -32272,7 +32254,7 @@ function ToggleSwitch({
|
|
|
32272
32254
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
32273
32255
|
"span",
|
|
32274
32256
|
{
|
|
32275
|
-
className:
|
|
32257
|
+
className: chunkLXUMBK2O_js.cn(
|
|
32276
32258
|
"inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform",
|
|
32277
32259
|
enabled ? "translate-x-[18px]" : "translate-x-[3px]"
|
|
32278
32260
|
)
|
|
@@ -32299,7 +32281,7 @@ function SettingsDialog({
|
|
|
32299
32281
|
const [activeTab, setActiveTab] = React14.useState("general");
|
|
32300
32282
|
const [autoSave, setAutoSave] = React14.useState(true);
|
|
32301
32283
|
const { t } = reactI18next.useTranslation();
|
|
32302
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
32284
|
+
const { panelStyle, handlers: dragHandlers } = chunkLXUMBK2O_js.useModalDismissDrag(onClose);
|
|
32303
32285
|
const handleKeyDown = React14.useCallback(
|
|
32304
32286
|
(e) => {
|
|
32305
32287
|
if (e.key === "Escape") {
|
|
@@ -32371,7 +32353,7 @@ function SettingsDialog({
|
|
|
32371
32353
|
{
|
|
32372
32354
|
type: "button",
|
|
32373
32355
|
onClick: () => setActiveTab(tab.id),
|
|
32374
|
-
className:
|
|
32356
|
+
className: chunkLXUMBK2O_js.cn(
|
|
32375
32357
|
"px-3 py-2 text-xs font-medium transition-colors relative",
|
|
32376
32358
|
activeTab === tab.id ? "text-primary" : "text-muted-foreground hover:text-foreground"
|
|
32377
32359
|
),
|
|
@@ -32433,10 +32415,10 @@ function SettingsDialog({
|
|
|
32433
32415
|
}
|
|
32434
32416
|
)
|
|
32435
32417
|
] }),
|
|
32436
|
-
activeTab === "shortcuts" && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children:
|
|
32418
|
+
activeTab === "shortcuts" && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: chunkLXUMBK2O_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut, i) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
32437
32419
|
"div",
|
|
32438
32420
|
{
|
|
32439
|
-
className:
|
|
32421
|
+
className: chunkLXUMBK2O_js.cn(
|
|
32440
32422
|
"flex items-center justify-between gap-3 rounded px-3 py-2",
|
|
32441
32423
|
i % 2 === 0 ? "bg-muted/60" : ""
|
|
32442
32424
|
),
|
|
@@ -32481,7 +32463,7 @@ var PowerPointViewer = React14.forwardRef(
|
|
|
32481
32463
|
smartArt3D = false
|
|
32482
32464
|
} = props;
|
|
32483
32465
|
React14.useEffect(() => {
|
|
32484
|
-
const css =
|
|
32466
|
+
const css = chunkBXACB3BG_js.buildUserFontFaceStyles(fonts);
|
|
32485
32467
|
if (!css) {
|
|
32486
32468
|
return;
|
|
32487
32469
|
}
|
|
@@ -32502,7 +32484,7 @@ var PowerPointViewer = React14.forwardRef(
|
|
|
32502
32484
|
return;
|
|
32503
32485
|
}
|
|
32504
32486
|
void (async () => {
|
|
32505
|
-
const picked = await
|
|
32487
|
+
const picked = await chunkBXACB3BG_js.openPptxFile();
|
|
32506
32488
|
if (picked) {
|
|
32507
32489
|
setContent(picked.buffer);
|
|
32508
32490
|
}
|
|
@@ -32510,7 +32492,7 @@ var PowerPointViewer = React14.forwardRef(
|
|
|
32510
32492
|
}, [hostOpenFile]);
|
|
32511
32493
|
const handleOpenRecentFile = React14.useCallback((key) => {
|
|
32512
32494
|
void (async () => {
|
|
32513
|
-
const bytes = await
|
|
32495
|
+
const bytes = await chunkBXACB3BG_js.readBackstageRecentFile(key);
|
|
32514
32496
|
if (bytes) {
|
|
32515
32497
|
setContent(bytes);
|
|
32516
32498
|
}
|
|
@@ -32520,8 +32502,8 @@ var PowerPointViewer = React14.forwardRef(
|
|
|
32520
32502
|
const [isHeaderFooterOpen, setIsHeaderFooterOpen] = React14.useState(false);
|
|
32521
32503
|
const [autosaveEnabled, setAutosaveEnabled] = React14.useState(true);
|
|
32522
32504
|
const [isShareDialogOpen, setIsShareDialogOpen] = React14.useState(false);
|
|
32523
|
-
const { reducedMotion, toggleReducedMotion } =
|
|
32524
|
-
const state =
|
|
32505
|
+
const { reducedMotion, toggleReducedMotion } = chunkLXUMBK2O_js.useReducedMotion();
|
|
32506
|
+
const state = chunkLXUMBK2O_js.useViewerState({ content, canEdit });
|
|
32525
32507
|
const {
|
|
32526
32508
|
containerRef,
|
|
32527
32509
|
mode,
|
|
@@ -32536,10 +32518,10 @@ var PowerPointViewer = React14.forwardRef(
|
|
|
32536
32518
|
activeSlide,
|
|
32537
32519
|
selectedElement
|
|
32538
32520
|
} = state;
|
|
32539
|
-
const mobile =
|
|
32521
|
+
const mobile = chunkLXUMBK2O_js.useIsMobile({ containerRef });
|
|
32540
32522
|
const { isMobile, isTouchDevice, isVirtualKeyboardOpen } = mobile;
|
|
32541
|
-
const resizablePanels =
|
|
32542
|
-
const { gridSpacingPx, visibleSlideIndexes, slideSectionGroups, masterPseudoSlide } =
|
|
32523
|
+
const resizablePanels = chunkLXUMBK2O_js.useResizablePanels();
|
|
32524
|
+
const { gridSpacingPx, visibleSlideIndexes, slideSectionGroups, masterPseudoSlide } = chunkLXUMBK2O_js.useDerivedSlideState({
|
|
32543
32525
|
slides,
|
|
32544
32526
|
sections: state.sections,
|
|
32545
32527
|
customShows: state.customShows,
|
|
@@ -32561,11 +32543,11 @@ var PowerPointViewer = React14.forwardRef(
|
|
|
32561
32543
|
state.isDrawingRef
|
|
32562
32544
|
]
|
|
32563
32545
|
);
|
|
32564
|
-
const zoom =
|
|
32546
|
+
const zoom = chunkLXUMBK2O_js.useZoomViewport({
|
|
32565
32547
|
canvasSize,
|
|
32566
32548
|
selectedElements: state.selectedElements
|
|
32567
32549
|
});
|
|
32568
|
-
const history =
|
|
32550
|
+
const history = chunkLXUMBK2O_js.useEditorHistory({
|
|
32569
32551
|
slides,
|
|
32570
32552
|
canvasSize,
|
|
32571
32553
|
activeSlideIndex,
|
|
@@ -32587,7 +32569,7 @@ var PowerPointViewer = React14.forwardRef(
|
|
|
32587
32569
|
setEditTemplateMode: state.setEditTemplateMode,
|
|
32588
32570
|
setHeaderFooter: state.setHeaderFooter
|
|
32589
32571
|
});
|
|
32590
|
-
const { presentation, annotations, actionSoundHandlerRef } =
|
|
32572
|
+
const { presentation, annotations, actionSoundHandlerRef } = chunkLXUMBK2O_js.usePresentationSetup({
|
|
32591
32573
|
mode,
|
|
32592
32574
|
slides,
|
|
32593
32575
|
visibleSlideIndexes,
|
|
@@ -32601,7 +32583,7 @@ var PowerPointViewer = React14.forwardRef(
|
|
|
32601
32583
|
setSlides: state.setSlides,
|
|
32602
32584
|
history
|
|
32603
32585
|
});
|
|
32604
|
-
|
|
32586
|
+
chunkLXUMBK2O_js.useTouchGestures({
|
|
32605
32587
|
targetRef: zoom.canvasViewportRef,
|
|
32606
32588
|
currentScale: zoom.scale,
|
|
32607
32589
|
callbacks: {
|
|
@@ -32623,7 +32605,7 @@ var PowerPointViewer = React14.forwardRef(
|
|
|
32623
32605
|
},
|
|
32624
32606
|
enabled: isTouchDevice
|
|
32625
32607
|
});
|
|
32626
|
-
const dialogs =
|
|
32608
|
+
const dialogs = chunkLXUMBK2O_js.useViewerDialogs({
|
|
32627
32609
|
mode,
|
|
32628
32610
|
slides,
|
|
32629
32611
|
activeSlide,
|
|
@@ -32664,7 +32646,7 @@ var PowerPointViewer = React14.forwardRef(
|
|
|
32664
32646
|
zoom.handleZoomToFit();
|
|
32665
32647
|
zoom.canvasViewportRef.current?.scrollTo({ left: 0, top: 0 });
|
|
32666
32648
|
}, [mode]);
|
|
32667
|
-
const editorOps =
|
|
32649
|
+
const editorOps = chunkLXUMBK2O_js.useEditorOperations({
|
|
32668
32650
|
state,
|
|
32669
32651
|
history,
|
|
32670
32652
|
zoom,
|
|
@@ -32696,7 +32678,7 @@ var PowerPointViewer = React14.forwardRef(
|
|
|
32696
32678
|
autosaveStatus,
|
|
32697
32679
|
isEncryptedDialogOpen,
|
|
32698
32680
|
setIsEncryptedDialogOpen
|
|
32699
|
-
} =
|
|
32681
|
+
} = chunkLXUMBK2O_js.useViewerIntegration({
|
|
32700
32682
|
state,
|
|
32701
32683
|
zoom,
|
|
32702
32684
|
history,
|
|
@@ -33055,7 +33037,7 @@ function CollaborationDocumentSync({
|
|
|
33055
33037
|
}
|
|
33056
33038
|
return bytes instanceof Uint8Array ? bytes : new Uint8Array(bytes);
|
|
33057
33039
|
}, []);
|
|
33058
|
-
|
|
33040
|
+
chunkLXUMBK2O_js.useYjsDocumentSync({
|
|
33059
33041
|
doc: collab?.doc ?? null,
|
|
33060
33042
|
slides,
|
|
33061
33043
|
templateElementsBySlideId,
|
|
@@ -33073,13 +33055,13 @@ function CollaborationFollowLayer({
|
|
|
33073
33055
|
slideCount
|
|
33074
33056
|
}) {
|
|
33075
33057
|
const collab = useCollaboration();
|
|
33076
|
-
const { followedClientId, followUser } =
|
|
33058
|
+
const { followedClientId, followUser } = chunkLXUMBK2O_js.useFollowMode({
|
|
33077
33059
|
collab,
|
|
33078
33060
|
activeSlideIndex,
|
|
33079
33061
|
setActiveSlideIndex,
|
|
33080
33062
|
slideCount
|
|
33081
33063
|
});
|
|
33082
|
-
|
|
33064
|
+
chunkLXUMBK2O_js.useBroadcastFollower({
|
|
33083
33065
|
collab,
|
|
33084
33066
|
activeSlideIndex,
|
|
33085
33067
|
setActiveSlideIndex,
|