pptx-react-viewer 4.29.0 → 4.30.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 +60 -0
- package/README.md +37 -36
- package/dist/{AiChatPanel-6EIOUV7J.mjs → AiChatPanel-42FL4CPM.mjs} +1 -1
- package/dist/AiChatPanel-42FL4CPM.mjs.br +0 -0
- package/dist/AiChatPanel-42FL4CPM.mjs.gz +0 -0
- package/dist/{AiChatPanel-AK6X4NJD.js → AiChatPanel-6VWCT6NE.js} +9 -9
- package/dist/AiChatPanel-6VWCT6NE.js.br +0 -0
- package/dist/AiChatPanel-6VWCT6NE.js.gz +0 -0
- package/dist/{chunk-6YOFWVII.mjs → chunk-GXMGJ5A3.mjs} +7 -12
- package/dist/chunk-GXMGJ5A3.mjs.br +0 -0
- package/dist/chunk-GXMGJ5A3.mjs.gz +0 -0
- package/dist/{chunk-EW45F35P.mjs → chunk-KRXS36RB.mjs} +5 -11
- package/dist/chunk-KRXS36RB.mjs.br +0 -0
- package/dist/chunk-KRXS36RB.mjs.gz +0 -0
- package/dist/{chunk-K3EGXT6W.js → chunk-MFGD7XVJ.js} +248 -254
- package/dist/chunk-MFGD7XVJ.js.br +0 -0
- package/dist/chunk-MFGD7XVJ.js.gz +0 -0
- package/dist/{chunk-CTL42ZRR.js → chunk-RHNJ4IU2.js} +31 -40
- package/dist/chunk-RHNJ4IU2.js.br +0 -0
- package/dist/chunk-RHNJ4IU2.js.gz +0 -0
- package/dist/{chunk-7JMO6R6B.js → chunk-XKV2QDAO.js} +387 -392
- package/dist/chunk-XKV2QDAO.js.br +0 -0
- package/dist/chunk-XKV2QDAO.js.gz +0 -0
- package/dist/{chunk-VI575UU6.mjs → chunk-ZIBAN7RL.mjs} +32 -41
- package/dist/chunk-ZIBAN7RL.mjs.br +0 -0
- package/dist/chunk-ZIBAN7RL.mjs.gz +0 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +24 -24
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +3 -3
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/internals.js +81 -81
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/internals.mjs +2 -2
- package/dist/internals.mjs.br +0 -0
- package/dist/internals.mjs.gz +0 -0
- package/dist/viewer/index.d.ts +5 -0
- package/dist/viewer/index.js +19 -19
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/viewer/index.mjs +3 -3
- package/dist/viewer/index.mjs.br +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +3 -3
- package/dist/AiChatPanel-6EIOUV7J.mjs.br +0 -0
- package/dist/AiChatPanel-6EIOUV7J.mjs.gz +0 -0
- package/dist/AiChatPanel-AK6X4NJD.js.br +0 -0
- package/dist/AiChatPanel-AK6X4NJD.js.gz +0 -0
- package/dist/chunk-6YOFWVII.mjs.br +0 -0
- package/dist/chunk-6YOFWVII.mjs.gz +0 -0
- package/dist/chunk-7JMO6R6B.js.br +0 -0
- package/dist/chunk-7JMO6R6B.js.gz +0 -0
- package/dist/chunk-CTL42ZRR.js.br +0 -0
- package/dist/chunk-CTL42ZRR.js.gz +0 -0
- package/dist/chunk-EW45F35P.mjs.br +0 -0
- package/dist/chunk-EW45F35P.mjs.gz +0 -0
- package/dist/chunk-K3EGXT6W.js.br +0 -0
- package/dist/chunk-K3EGXT6W.js.gz +0 -0
- package/dist/chunk-VI575UU6.mjs.br +0 -0
- package/dist/chunk-VI575UU6.mjs.gz +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunkMFGD7XVJ_js = require('./chunk-MFGD7XVJ.js');
|
|
4
|
+
var chunkRHNJ4IU2_js = require('./chunk-RHNJ4IU2.js');
|
|
5
5
|
var pptx = require('ooxml-ui/pptx');
|
|
6
6
|
var React97 = require('react');
|
|
7
7
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -307,7 +307,7 @@ function SlideTemplatePreview({
|
|
|
307
307
|
transformOrigin: "top left"
|
|
308
308
|
},
|
|
309
309
|
children: previewSlide.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
310
|
-
|
|
310
|
+
chunkMFGD7XVJ_js.StaticElementRenderer,
|
|
311
311
|
{
|
|
312
312
|
element,
|
|
313
313
|
activeSlide: previewSlide,
|
|
@@ -376,7 +376,7 @@ function SlideTemplateGalleryDialog({
|
|
|
376
376
|
scheme
|
|
377
377
|
}) {
|
|
378
378
|
const { t } = reactI18next.useTranslation();
|
|
379
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
379
|
+
const { panelStyle, handlers: dragHandlers } = chunkMFGD7XVJ_js.useModalDismissDrag(onClose);
|
|
380
380
|
const [selected, setSelected] = React97.useState(null);
|
|
381
381
|
const dialogRef = React97.useRef(null);
|
|
382
382
|
useModalFocus(isOpen, dialogRef, onClose);
|
|
@@ -459,7 +459,7 @@ function SlideTemplateGalleryDialog({
|
|
|
459
459
|
onInsert(spec.id);
|
|
460
460
|
onClose();
|
|
461
461
|
},
|
|
462
|
-
className:
|
|
462
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
463
463
|
"flex flex-col items-center gap-1 p-2 rounded border transition-colors",
|
|
464
464
|
selected === spec.id ? "border-primary bg-primary/20" : "border-border hover:border-border hover:bg-muted/50"
|
|
465
465
|
),
|
|
@@ -723,7 +723,7 @@ function WebHomeControls({
|
|
|
723
723
|
function ShapeArrangeExtras(p) {
|
|
724
724
|
const commands = useShapeFormatContext();
|
|
725
725
|
const crop = commands?.crop;
|
|
726
|
-
const { isHidden } =
|
|
726
|
+
const { isHidden } = chunkMFGD7XVJ_js.useToolbarVisibility(p.hiddenActions);
|
|
727
727
|
const { onGroupElements, onUngroupElement, onUpdateElementStyle } = p;
|
|
728
728
|
const controls = React97.useMemo(
|
|
729
729
|
() => pptx.arrangeShapeHomeControls({
|
|
@@ -1056,7 +1056,7 @@ function TransitionsSection(p) {
|
|
|
1056
1056
|
case "soundPreview": {
|
|
1057
1057
|
const url = pptx.ribbonTransitionStockSoundUrl(transition);
|
|
1058
1058
|
if (url) {
|
|
1059
|
-
|
|
1059
|
+
chunkMFGD7XVJ_js.playAnimationSound(url);
|
|
1060
1060
|
}
|
|
1061
1061
|
break;
|
|
1062
1062
|
}
|
|
@@ -1215,7 +1215,7 @@ function AccountPage() {
|
|
|
1215
1215
|
return void 0;
|
|
1216
1216
|
});
|
|
1217
1217
|
};
|
|
1218
|
-
const version = "4.
|
|
1218
|
+
const version = "4.30.0" ;
|
|
1219
1219
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
|
|
1220
1220
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { className: cardClass, children: [
|
|
1221
1221
|
/* @__PURE__ */ jsxRuntime.jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
|
|
@@ -1255,7 +1255,7 @@ function AccountPage() {
|
|
|
1255
1255
|
"aria-label": color,
|
|
1256
1256
|
"aria-pressed": profile.avatarColor === color,
|
|
1257
1257
|
onClick: () => updateProfile({ avatarColor: color }),
|
|
1258
|
-
className:
|
|
1258
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
1259
1259
|
"size-7 rounded-full border-2 transition-transform",
|
|
1260
1260
|
profile.avatarColor === color ? "border-foreground scale-110" : "border-transparent hover:scale-105"
|
|
1261
1261
|
),
|
|
@@ -1478,7 +1478,7 @@ function FileSection(p) {
|
|
|
1478
1478
|
const page = offered(requestedPage) ? requestedPage : offered("home") ? "home" : nav.find((item) => item.id !== "save" && item.id !== "close")?.id ?? "home";
|
|
1479
1479
|
const [query, setQuery] = React97.useState("");
|
|
1480
1480
|
const [recent, setRecent] = React97.useState([]);
|
|
1481
|
-
const { isHidden } =
|
|
1481
|
+
const { isHidden } = chunkMFGD7XVJ_js.useToolbarVisibility(p.hiddenActions);
|
|
1482
1482
|
const exportHidden = isHidden("export");
|
|
1483
1483
|
React97.useEffect(() => {
|
|
1484
1484
|
void pptx.listBackstageRecentFiles(t, p.recentPresentationsCount).then(setRecent);
|
|
@@ -1708,7 +1708,7 @@ function RibbonMenu({
|
|
|
1708
1708
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1709
1709
|
"div",
|
|
1710
1710
|
{
|
|
1711
|
-
className:
|
|
1711
|
+
className: chunkRHNJ4IU2_js.cn("fixed z-50", className),
|
|
1712
1712
|
style: pos ? { left: pos.left, top: pos.top } : { visibility: "hidden" },
|
|
1713
1713
|
children
|
|
1714
1714
|
}
|
|
@@ -1734,7 +1734,7 @@ function LayoutGalleryMenu(p) {
|
|
|
1734
1734
|
type: "button",
|
|
1735
1735
|
"aria-current": isCurrent ? "true" : void 0,
|
|
1736
1736
|
title: isCurrent ? `${layout.name} (${t("pptx.layoutGallery.current")})` : layout.name,
|
|
1737
|
-
className:
|
|
1737
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
1738
1738
|
"relative flex min-w-0 flex-col items-center gap-1 rounded border-2 p-1 text-xs text-foreground transition-colors hover:bg-muted",
|
|
1739
1739
|
isCurrent ? "border-primary bg-primary/10" : "border-transparent"
|
|
1740
1740
|
),
|
|
@@ -1808,7 +1808,7 @@ function LayoutArtwork({
|
|
|
1808
1808
|
backgroundColor
|
|
1809
1809
|
};
|
|
1810
1810
|
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: (preview?.elements ?? []).slice(0, MAX_PREVIEW_ELEMENTS).map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1811
|
-
|
|
1811
|
+
chunkMFGD7XVJ_js.StaticElementRenderer,
|
|
1812
1812
|
{
|
|
1813
1813
|
element,
|
|
1814
1814
|
activeSlide: slide,
|
|
@@ -2370,7 +2370,7 @@ function CustomShowsControls({
|
|
|
2370
2370
|
{
|
|
2371
2371
|
type: "button",
|
|
2372
2372
|
onClick: onToggleCurrentSlideInActiveShow,
|
|
2373
|
-
className:
|
|
2373
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
2374
2374
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
2375
2375
|
isCurrentSlideInActiveShow ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
2376
2376
|
),
|
|
@@ -2425,7 +2425,7 @@ function SlideShowOptions({
|
|
|
2425
2425
|
}
|
|
2426
2426
|
function SubtitleSettingsControl() {
|
|
2427
2427
|
const { t } = reactI18next.useTranslation();
|
|
2428
|
-
const supplied = React97.useContext(
|
|
2428
|
+
const supplied = React97.useContext(chunkMFGD7XVJ_js.ViewerOptionsStoreContext);
|
|
2429
2429
|
const fallback = React97.useRef(null);
|
|
2430
2430
|
if (!supplied) {
|
|
2431
2431
|
fallback.current ??= pptx.createViewerOptionsStore({ persist: false });
|
|
@@ -2459,7 +2459,7 @@ function SubtitleSettingsControl() {
|
|
|
2459
2459
|
}
|
|
2460
2460
|
function SlideShowSection(p) {
|
|
2461
2461
|
const { t } = reactI18next.useTranslation();
|
|
2462
|
-
const { isHidden } =
|
|
2462
|
+
const { isHidden } = chunkMFGD7XVJ_js.useToolbarVisibility(p.hiddenActions);
|
|
2463
2463
|
const [showsOpen, setShowsOpen] = React97.useState(false);
|
|
2464
2464
|
const showsRef = React97.useRef(null);
|
|
2465
2465
|
React97.useEffect(() => {
|
|
@@ -2540,7 +2540,7 @@ function extractFontInfo(element, themeFonts) {
|
|
|
2540
2540
|
fontFamily: pptx.resolveDefaultFontFamily(placeholderType, themeFonts),
|
|
2541
2541
|
fontSize: "24"
|
|
2542
2542
|
};
|
|
2543
|
-
if (!element || !(0,
|
|
2543
|
+
if (!element || !(0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(element)) {
|
|
2544
2544
|
return defaults;
|
|
2545
2545
|
}
|
|
2546
2546
|
const segStyle = element.textSegments?.[0]?.style;
|
|
@@ -2561,7 +2561,7 @@ function getEffectiveTextStyle(element, tableEditorState) {
|
|
|
2561
2561
|
if (!element) {
|
|
2562
2562
|
return void 0;
|
|
2563
2563
|
}
|
|
2564
|
-
if ((0,
|
|
2564
|
+
if ((0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(element)) {
|
|
2565
2565
|
return element.textStyle;
|
|
2566
2566
|
}
|
|
2567
2567
|
if (element.type === "table" && tableEditorState && element.tableData) {
|
|
@@ -2574,7 +2574,7 @@ function isTextDecorationFlag(id) {
|
|
|
2574
2574
|
return pptx.TEXT_DECORATION_FLAGS.includes(id);
|
|
2575
2575
|
}
|
|
2576
2576
|
function textSectionFlags(element, tableEditorState, readSelection) {
|
|
2577
|
-
if (element && (0,
|
|
2577
|
+
if (element && (0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(element)) {
|
|
2578
2578
|
const result = readSelection ? pptx.getInlineEditorSelectionResult(element.textSegments) : null;
|
|
2579
2579
|
const current = result?.kind === "supported" && (!result.snapshot || result.snapshot.elementId === element.id) ? result : null;
|
|
2580
2580
|
return pptx.getSelectionTextStyleFlags(
|
|
@@ -2590,7 +2590,7 @@ function textSectionFlags(element, tableEditorState, readSelection) {
|
|
|
2590
2590
|
);
|
|
2591
2591
|
}
|
|
2592
2592
|
function textSectionBulletKind(element, tableEditorState) {
|
|
2593
|
-
if (element && (0,
|
|
2593
|
+
if (element && (0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(element)) {
|
|
2594
2594
|
const result = pptx.getInlineEditorSelectionResult(element.textSegments, { preserveCaret: true });
|
|
2595
2595
|
return result.kind === "supported" && (!result.snapshot || result.snapshot.elementId === element.id) ? pptx.selectionBulletKind(element, result.selection, result.snapshot?.textSegments) : pptx.elementBulletKind(element);
|
|
2596
2596
|
}
|
|
@@ -2827,7 +2827,7 @@ function subscribe(onChange) {
|
|
|
2827
2827
|
}
|
|
2828
2828
|
function useParagraphListKind(element) {
|
|
2829
2829
|
const read = React97.useCallback(() => {
|
|
2830
|
-
if (!element || !(0,
|
|
2830
|
+
if (!element || !(0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(element)) {
|
|
2831
2831
|
return "none";
|
|
2832
2832
|
}
|
|
2833
2833
|
const result = pptx.getInlineEditorSelectionResult(element.textSegments, { preserveCaret: true });
|
|
@@ -2850,7 +2850,7 @@ function TextSection(p) {
|
|
|
2850
2850
|
const hasSel = Boolean(p.selectedElement);
|
|
2851
2851
|
const canMut = hasSel && p.canEdit;
|
|
2852
2852
|
const { fontFamily, fontSize } = extractFontInfo(p.selectedElement, p.themeFonts);
|
|
2853
|
-
const isTextEl = hasSel && p.selectedElement !== null && (0,
|
|
2853
|
+
const isTextEl = hasSel && p.selectedElement !== null && (0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(p.selectedElement);
|
|
2854
2854
|
const isTable = hasSel && p.selectedElement?.type === "table";
|
|
2855
2855
|
const canFormat = isTextEl || isTable;
|
|
2856
2856
|
const effectiveTs = getEffectiveTextStyle(p.selectedElement, p.tableEditorState);
|
|
@@ -2860,15 +2860,15 @@ function TextSection(p) {
|
|
|
2860
2860
|
if (!p.canEdit || !canFormat || !p.selectedElement) {
|
|
2861
2861
|
return;
|
|
2862
2862
|
}
|
|
2863
|
-
if ((0,
|
|
2863
|
+
if ((0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(p.selectedElement)) {
|
|
2864
2864
|
p.onToggleBullets(kind);
|
|
2865
2865
|
return;
|
|
2866
2866
|
}
|
|
2867
2867
|
p.onUpdateTextStyle({ listType: effectiveTs?.listType === kind ? "none" : kind });
|
|
2868
2868
|
};
|
|
2869
|
-
const currentColor = isTextEl && p.selectedElement && (0,
|
|
2870
|
-
const currentColorThemeRef = isTextEl && p.selectedElement && (0,
|
|
2871
|
-
const currentHighlight = isTextEl && p.selectedElement && (0,
|
|
2869
|
+
const currentColor = isTextEl && p.selectedElement && (0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(p.selectedElement) ? p.selectedElement.textSegments?.[0]?.style?.color ?? p.selectedElement.textStyle?.color ?? "#000000" : effectiveTs?.color ?? "#000000";
|
|
2870
|
+
const currentColorThemeRef = isTextEl && p.selectedElement && (0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(p.selectedElement) ? p.selectedElement.textSegments?.[0]?.style?.colorRef ?? p.selectedElement.textStyle?.colorRef : void 0;
|
|
2871
|
+
const currentHighlight = isTextEl && p.selectedElement && (0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(p.selectedElement) ? p.selectedElement.textSegments?.[0]?.style?.highlightColor ?? p.selectedElement.textStyle?.highlightColor ?? "#ffff00" : "#ffff00";
|
|
2872
2872
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2873
2873
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-0.5", ...groupAttr("home.font"), children: [
|
|
2874
2874
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", "data-pptx-chrome": "font-controls", children: [
|
|
@@ -2883,7 +2883,7 @@ function TextSection(p) {
|
|
|
2883
2883
|
customFonts: p.customFontFamilies,
|
|
2884
2884
|
onFamily: (family) => p.onUpdateTextStyle({ fontFamily: family }),
|
|
2885
2885
|
onSize: (size) => p.onUpdateTextStyle({
|
|
2886
|
-
fontSize: p.selectedElement && (0,
|
|
2886
|
+
fontSize: p.selectedElement && (0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(p.selectedElement) ? pptx.textFontSizePtToPx(size) : size
|
|
2887
2887
|
})
|
|
2888
2888
|
}
|
|
2889
2889
|
),
|
|
@@ -2993,7 +2993,7 @@ function MobileSheet({
|
|
|
2993
2993
|
}) {
|
|
2994
2994
|
const sheetRef = React97.useRef(null);
|
|
2995
2995
|
const { t } = reactI18next.useTranslation();
|
|
2996
|
-
const { dragY, dragging, handlers } =
|
|
2996
|
+
const { dragY, dragging, handlers } = chunkMFGD7XVJ_js.useSheetDismissDrag(onClose);
|
|
2997
2997
|
useModalFocus(open, sheetRef, onClose);
|
|
2998
2998
|
if (!open) {
|
|
2999
2999
|
return null;
|
|
@@ -3017,7 +3017,7 @@ function MobileSheet({
|
|
|
3017
3017
|
"aria-modal": "true",
|
|
3018
3018
|
"aria-label": typeof title === "string" ? title : t("pptx.mobileSheet.ariaLabel"),
|
|
3019
3019
|
tabIndex: -1,
|
|
3020
|
-
className:
|
|
3020
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
3021
3021
|
"relative bg-background border-t border-border rounded-t-2xl shadow-2xl flex flex-col overflow-hidden",
|
|
3022
3022
|
"animate-in slide-in-from-bottom duration-200",
|
|
3023
3023
|
className
|
|
@@ -3081,7 +3081,7 @@ function MobileMenuSheet(props) {
|
|
|
3081
3081
|
const { t } = reactI18next.useTranslation();
|
|
3082
3082
|
const { open, onClose } = props;
|
|
3083
3083
|
const [active, setActive] = React97.useState("home");
|
|
3084
|
-
const { isTabVisible } =
|
|
3084
|
+
const { isTabVisible } = chunkMFGD7XVJ_js.useToolbarVisibility(props.hiddenActions);
|
|
3085
3085
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3086
3086
|
MobileSheet,
|
|
3087
3087
|
{
|
|
@@ -3095,7 +3095,7 @@ function MobileMenuSheet(props) {
|
|
|
3095
3095
|
{
|
|
3096
3096
|
type: "button",
|
|
3097
3097
|
onClick: () => setActive(active === key ? null : key),
|
|
3098
|
-
className:
|
|
3098
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
3099
3099
|
"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]",
|
|
3100
3100
|
active === key ? "bg-primary text-white border-primary" : "border-border text-muted-foreground hover:text-foreground hover:bg-accent/40"
|
|
3101
3101
|
),
|
|
@@ -3362,7 +3362,7 @@ function MobileToolbar(props) {
|
|
|
3362
3362
|
const { t } = reactI18next.useTranslation();
|
|
3363
3363
|
const { mode, canUndo, canRedo, onUndo, onRedo, onSetMode, onSaveAsPptx } = props;
|
|
3364
3364
|
const [menuOpen, setMenuOpen] = React97.useState(false);
|
|
3365
|
-
const { isHidden } =
|
|
3365
|
+
const { isHidden } = chunkMFGD7XVJ_js.useToolbarVisibility(props.hiddenActions);
|
|
3366
3366
|
const showEdit = mode === "edit" || mode === "master";
|
|
3367
3367
|
const hidden = [];
|
|
3368
3368
|
if (isHidden("undo")) {
|
|
@@ -3427,7 +3427,7 @@ function DrawingGroup(p) {
|
|
|
3427
3427
|
const { recentColors, pushColor } = useRecentColors();
|
|
3428
3428
|
const themeColors = useThemeColorMap();
|
|
3429
3429
|
const commands = useRibbonGalleryCommands();
|
|
3430
|
-
const style = p.selectedElement && (0,
|
|
3430
|
+
const style = p.selectedElement && (0, chunkRHNJ4IU2_js.dist_exports.hasShapeProperties)(p.selectedElement) ? p.selectedElement.shapeStyle : void 0;
|
|
3431
3431
|
const { onMoveLayer, onMoveLayerToEdge, onSetNewShapeType, onAddShape, onUpdateElementStyle } = p;
|
|
3432
3432
|
const hasSelection = Boolean(p.selectedElement);
|
|
3433
3433
|
const controls = React97.useMemo(
|
|
@@ -3530,7 +3530,7 @@ var TAB_BASE = "relative px-3.5 py-2 text-[12px] font-medium whitespace-nowrap t
|
|
|
3530
3530
|
var TAB_UNDERLINE = "after:absolute after:-bottom-px after:left-0 after:right-0 after:h-[2.5px] after:bg-primary";
|
|
3531
3531
|
function RibbonTabBar(p) {
|
|
3532
3532
|
const { t } = reactI18next.useTranslation();
|
|
3533
|
-
const viewerOptions =
|
|
3533
|
+
const viewerOptions = chunkMFGD7XVJ_js.useViewerOptionsContext();
|
|
3534
3534
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3535
3535
|
"div",
|
|
3536
3536
|
{
|
|
@@ -3538,7 +3538,7 @@ function RibbonTabBar(p) {
|
|
|
3538
3538
|
"data-pptx-chrome": "ribbon-tabs",
|
|
3539
3539
|
className: "flex items-center border-b border-border/60 px-1 max-md:overflow-x-auto max-md:scrollbar-none",
|
|
3540
3540
|
children: [
|
|
3541
|
-
|
|
3541
|
+
chunkRHNJ4IU2_js.TOOLBAR_SECTIONS.filter((s) => p.isTabVisible(s.id)).map((s) => {
|
|
3542
3542
|
const selected = p.activeSection === s.id;
|
|
3543
3543
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3544
3544
|
"button",
|
|
@@ -3548,7 +3548,7 @@ function RibbonTabBar(p) {
|
|
|
3548
3548
|
"aria-selected": selected,
|
|
3549
3549
|
title: pptx.resolveScreenTip(viewerOptions, t(s.labelKey)),
|
|
3550
3550
|
onClick: () => p.onSelectSection(s.id),
|
|
3551
|
-
className:
|
|
3551
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
3552
3552
|
TAB_BASE,
|
|
3553
3553
|
selected ? s.id === "file" ? "text-white bg-primary/80 rounded-sm" : `text-foreground ${TAB_UNDERLINE}` : s.id === "file" ? "text-primary hover:bg-primary/15 rounded-sm" : "text-muted-foreground hover:text-foreground hover:bg-accent/30"
|
|
3554
3554
|
),
|
|
@@ -3569,7 +3569,7 @@ function RibbonTabBar(p) {
|
|
|
3569
3569
|
...{ [pptx.RIBBON_CONTEXTUAL_TAB_ATTR]: id },
|
|
3570
3570
|
title: pptx.resolveScreenTip(viewerOptions, label),
|
|
3571
3571
|
onClick: () => p.onSelectContextual(id),
|
|
3572
|
-
className:
|
|
3572
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
3573
3573
|
TAB_BASE,
|
|
3574
3574
|
"text-primary",
|
|
3575
3575
|
selected ? TAB_UNDERLINE : "hover:bg-primary/10"
|
|
@@ -3587,9 +3587,9 @@ function RibbonTabBar(p) {
|
|
|
3587
3587
|
}
|
|
3588
3588
|
function TabRowActions(p) {
|
|
3589
3589
|
const { t } = reactI18next.useTranslation();
|
|
3590
|
-
const collab =
|
|
3590
|
+
const collab = chunkMFGD7XVJ_js.useCollaboration();
|
|
3591
3591
|
const isCollaborating = collab && collab.status === "connected";
|
|
3592
|
-
const { isHidden } =
|
|
3592
|
+
const { isHidden } = chunkMFGD7XVJ_js.useToolbarVisibility(p.hiddenActions);
|
|
3593
3593
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1 pr-1", children: [
|
|
3594
3594
|
p.onEnterRehearsalMode && !isHidden("record") && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3595
3595
|
"button",
|
|
@@ -3610,7 +3610,7 @@ function TabRowActions(p) {
|
|
|
3610
3610
|
{
|
|
3611
3611
|
type: "button",
|
|
3612
3612
|
onClick: p.onOpenShareDialog,
|
|
3613
|
-
className:
|
|
3613
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
3614
3614
|
"relative inline-flex items-center gap-1 px-2.5 py-1 rounded-sm text-[11px] font-medium transition-colors whitespace-nowrap",
|
|
3615
3615
|
isCollaborating ? "bg-green-600 hover:bg-green-500 text-white" : "bg-primary hover:bg-primary/90 text-white"
|
|
3616
3616
|
),
|
|
@@ -3626,7 +3626,7 @@ function TabRowActions(p) {
|
|
|
3626
3626
|
}
|
|
3627
3627
|
function TitleBarElement(p) {
|
|
3628
3628
|
const { t } = reactI18next.useTranslation();
|
|
3629
|
-
const options =
|
|
3629
|
+
const options = chunkMFGD7XVJ_js.useViewerOptionsContext();
|
|
3630
3630
|
const customization = useViewerCustomizationContext();
|
|
3631
3631
|
const ref = React97.useRef(null);
|
|
3632
3632
|
const stripVisible = options.quickAccess.visible && pptx.isPanelVisible(customization, "quickAccessToolbar");
|
|
@@ -3699,7 +3699,7 @@ function PresentDropdown({
|
|
|
3699
3699
|
{
|
|
3700
3700
|
type: "button",
|
|
3701
3701
|
onClick: onPresent,
|
|
3702
|
-
className:
|
|
3702
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
3703
3703
|
"px-2 py-1 transition-colors",
|
|
3704
3704
|
isActive ? "bg-primary text-white" : "hover:bg-accent text-foreground"
|
|
3705
3705
|
),
|
|
@@ -3712,7 +3712,7 @@ function PresentDropdown({
|
|
|
3712
3712
|
{
|
|
3713
3713
|
type: "button",
|
|
3714
3714
|
onClick: () => setOpen((prev) => !prev),
|
|
3715
|
-
className:
|
|
3715
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
3716
3716
|
"inline-flex items-center px-1 transition-colors border-l border-border",
|
|
3717
3717
|
open ? "bg-primary text-white" : "hover:bg-accent text-foreground"
|
|
3718
3718
|
),
|
|
@@ -3915,7 +3915,7 @@ function OverflowMenu(p) {
|
|
|
3915
3915
|
{
|
|
3916
3916
|
type: "button",
|
|
3917
3917
|
onClick: () => p.onSetOverflowMenuOpen(!p.isOverflowMenuOpen),
|
|
3918
|
-
className:
|
|
3918
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
3919
3919
|
"p-1.5 rounded transition-colors",
|
|
3920
3920
|
p.isOverflowMenuOpen ? "bg-primary/80 text-white" : "bg-muted hover:bg-accent"
|
|
3921
3921
|
),
|
|
@@ -3962,7 +3962,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
3962
3962
|
onToggleSidebar,
|
|
3963
3963
|
onToggleInspector
|
|
3964
3964
|
} = p;
|
|
3965
|
-
const collab =
|
|
3965
|
+
const collab = chunkMFGD7XVJ_js.useCollaboration();
|
|
3966
3966
|
const customization = useViewerCustomizationContext();
|
|
3967
3967
|
const showSlidesToggle = pptx.isPanelVisible(customization, "slidesPane");
|
|
3968
3968
|
const showInspectorToggle = pptx.isPanelVisible(customization, "inspector");
|
|
@@ -3981,7 +3981,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
3981
3981
|
{
|
|
3982
3982
|
type: "button",
|
|
3983
3983
|
onClick: onToggleSidebar,
|
|
3984
|
-
className:
|
|
3984
|
+
className: chunkRHNJ4IU2_js.cn(qab, !isSidebarCollapsed ? "text-foreground" : "text-muted-foreground"),
|
|
3985
3985
|
title: t("pptx.toolbar.toggleSlidesPanel"),
|
|
3986
3986
|
"aria-label": t("pptx.toolbar.toggleSlidesPanel"),
|
|
3987
3987
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelLeft, { className: ic })
|
|
@@ -3993,7 +3993,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
3993
3993
|
{
|
|
3994
3994
|
type: "button",
|
|
3995
3995
|
onClick: p.onToggleComments,
|
|
3996
|
-
className:
|
|
3996
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
3997
3997
|
qab,
|
|
3998
3998
|
"relative max-md:hidden",
|
|
3999
3999
|
p.isCommentsPanelOpen ? "text-foreground" : "text-muted-foreground"
|
|
@@ -4060,7 +4060,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
4060
4060
|
{
|
|
4061
4061
|
type: "button",
|
|
4062
4062
|
onClick: onToggleInspector,
|
|
4063
|
-
className:
|
|
4063
|
+
className: chunkRHNJ4IU2_js.cn(qab, isInspectorPaneOpen ? "text-foreground" : "text-muted-foreground"),
|
|
4064
4064
|
title: t("pptx.toolbar.toggleInspector"),
|
|
4065
4065
|
"aria-label": t("pptx.toolbar.toggleInspector"),
|
|
4066
4066
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelRight, { className: ic })
|
|
@@ -4071,7 +4071,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
4071
4071
|
{
|
|
4072
4072
|
type: "button",
|
|
4073
4073
|
onClick: p.onToggleAiPanel,
|
|
4074
|
-
className:
|
|
4074
|
+
className: chunkRHNJ4IU2_js.cn(qab, p.isAiPanelOpen ? "text-primary" : "text-muted-foreground"),
|
|
4075
4075
|
title: t("pptx.toolbar.toggleAiAssistant"),
|
|
4076
4076
|
"aria-label": t("pptx.toolbar.toggleAiAssistant"),
|
|
4077
4077
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSparkles, { className: ic })
|
|
@@ -4082,7 +4082,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
4082
4082
|
{
|
|
4083
4083
|
type: "button",
|
|
4084
4084
|
onClick: p.onOpenSettings ?? p.onToggleShortcuts,
|
|
4085
|
-
className:
|
|
4085
|
+
className: chunkRHNJ4IU2_js.cn(qab, "text-muted-foreground"),
|
|
4086
4086
|
title: t("pptx.toolbar.settingsShortcuts"),
|
|
4087
4087
|
"aria-label": t("pptx.toolbar.settings"),
|
|
4088
4088
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSettings, { className: ics })
|
|
@@ -4279,8 +4279,8 @@ function ToolbarLateTabs({
|
|
|
4279
4279
|
function Toolbar(p) {
|
|
4280
4280
|
const { mode, isNarrowViewport, isCompactToolbarOpen, toolbarSection, onSetToolbarSection } = p;
|
|
4281
4281
|
const { t } = reactI18next.useTranslation();
|
|
4282
|
-
const { isTabVisible } =
|
|
4283
|
-
const viewerOptions =
|
|
4282
|
+
const { isTabVisible } = chunkMFGD7XVJ_js.useToolbarVisibility(p.hiddenActions);
|
|
4283
|
+
const viewerOptions = chunkMFGD7XVJ_js.useViewerOptionsContext();
|
|
4284
4284
|
const customization = useViewerCustomizationContext();
|
|
4285
4285
|
const belowInput = React97.useMemo(
|
|
4286
4286
|
() => ({
|
|
@@ -4362,7 +4362,7 @@ function Toolbar(p) {
|
|
|
4362
4362
|
{
|
|
4363
4363
|
type: "button",
|
|
4364
4364
|
onClick: p.onToggleCompactToolbar,
|
|
4365
|
-
className:
|
|
4365
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
4366
4366
|
"px-2 py-1 rounded text-[11px] transition-colors mr-1",
|
|
4367
4367
|
isCompactToolbarOpen ? "bg-primary/80 text-white" : "text-muted-foreground hover:text-foreground"
|
|
4368
4368
|
),
|
|
@@ -4388,7 +4388,7 @@ function Toolbar(p) {
|
|
|
4388
4388
|
{
|
|
4389
4389
|
ref: attachOverflow,
|
|
4390
4390
|
"data-pptx-chrome": "ribbon-content",
|
|
4391
|
-
className:
|
|
4391
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
4392
4392
|
// Plain controls stay compact; labelled RibbonGroups opt into stretching.
|
|
4393
4393
|
// `RibbonGroupScope` wraps controls in a `display: contents` div, so its
|
|
4394
4394
|
// children are this row's flex items too and must not shrink (a shrunk
|
|
@@ -5241,7 +5241,7 @@ function DrawingOverlaySvg({
|
|
|
5241
5241
|
onPointerDown,
|
|
5242
5242
|
onPointerMove,
|
|
5243
5243
|
onPointerUp,
|
|
5244
|
-
children: isStrokeActive && liveStrokeView ?
|
|
5244
|
+
children: isStrokeActive && liveStrokeView ? chunkMFGD7XVJ_js.renderStrokeView(liveStrokeView, true, void 0, "ink-live-preview") : isStrokeActive && liveStrokeD && /* @__PURE__ */ jsxRuntime.jsx(
|
|
5245
5245
|
"path",
|
|
5246
5246
|
{
|
|
5247
5247
|
d: liveStrokeD,
|
|
@@ -5256,7 +5256,7 @@ function DrawingOverlaySvg({
|
|
|
5256
5256
|
}
|
|
5257
5257
|
);
|
|
5258
5258
|
}
|
|
5259
|
-
function GridOverlay({ canvasSize, gridSpacingPx =
|
|
5259
|
+
function GridOverlay({ canvasSize, gridSpacingPx = chunkRHNJ4IU2_js.GRID_SIZE, visible }) {
|
|
5260
5260
|
const spacing = Math.max(gridSpacingPx, 2);
|
|
5261
5261
|
const patternId = React97.useMemo(() => `grid-dot-pattern-${Math.random().toString(36).slice(2, 8)}`, []);
|
|
5262
5262
|
if (!visible) {
|
|
@@ -5820,7 +5820,7 @@ function PictureCropOverlay({
|
|
|
5820
5820
|
};
|
|
5821
5821
|
};
|
|
5822
5822
|
const { ghost, frame, handles } = overlay;
|
|
5823
|
-
const src =
|
|
5823
|
+
const src = chunkMFGD7XVJ_js.imgSrc(element);
|
|
5824
5824
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5825
5825
|
"div",
|
|
5826
5826
|
{
|
|
@@ -6233,10 +6233,10 @@ function SelectionHandleOverlay({
|
|
|
6233
6233
|
position: "absolute",
|
|
6234
6234
|
left: element.x,
|
|
6235
6235
|
top: element.y,
|
|
6236
|
-
width: Math.max(element.width,
|
|
6237
|
-
height: Math.max(element.height,
|
|
6238
|
-
["--pptx-selection-width"]: `${Math.max(element.width,
|
|
6239
|
-
["--pptx-selection-height"]: `${Math.max(element.height,
|
|
6236
|
+
width: Math.max(element.width, chunkRHNJ4IU2_js.MIN_ELEMENT_SIZE),
|
|
6237
|
+
height: Math.max(element.height, chunkRHNJ4IU2_js.MIN_ELEMENT_SIZE),
|
|
6238
|
+
["--pptx-selection-width"]: `${Math.max(element.width, chunkRHNJ4IU2_js.MIN_ELEMENT_SIZE)}px`,
|
|
6239
|
+
["--pptx-selection-height"]: `${Math.max(element.height, chunkRHNJ4IU2_js.MIN_ELEMENT_SIZE)}px`,
|
|
6240
6240
|
// Every slide element carries an explicit numeric `zIndex` (see
|
|
6241
6241
|
// `getContainerStyle`), so a sibling with no z-index at all paints
|
|
6242
6242
|
// at the CSS "z-index: 0" level regardless of DOM order: any
|
|
@@ -6248,7 +6248,7 @@ function SelectionHandleOverlay({
|
|
|
6248
6248
|
// (marquee z-50, connector overlay z-55/56) to match, well clear of
|
|
6249
6249
|
// any realistic per-slide element count.
|
|
6250
6250
|
zIndex: 58,
|
|
6251
|
-
transform:
|
|
6251
|
+
transform: chunkRHNJ4IU2_js.getElementTransform(element),
|
|
6252
6252
|
transformOrigin: "center",
|
|
6253
6253
|
// Transparent everywhere a handle button is not, so a click that
|
|
6254
6254
|
// misses every handle still reaches the shape (or whatever is
|
|
@@ -6260,14 +6260,14 @@ function SelectionHandleOverlay({
|
|
|
6260
6260
|
onDoubleClick: (e) => onDoubleClick(element.id, e),
|
|
6261
6261
|
onContextMenu: (e) => onContextMenu(element.id, e),
|
|
6262
6262
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6263
|
-
|
|
6263
|
+
chunkMFGD7XVJ_js.ResizeHandles,
|
|
6264
6264
|
{
|
|
6265
6265
|
elementId: element.id,
|
|
6266
6266
|
adjustmentHandles,
|
|
6267
6267
|
onResizePointerDown,
|
|
6268
6268
|
onAdjustmentPointerDown,
|
|
6269
6269
|
rotation: element.rotation,
|
|
6270
|
-
nonRotationTransform:
|
|
6270
|
+
nonRotationTransform: chunkRHNJ4IU2_js.getElementTransformWithoutRotation(element),
|
|
6271
6271
|
onRotate: allow.rotatable ? onRotate : void 0,
|
|
6272
6272
|
forcePointerEvents: true
|
|
6273
6273
|
}
|
|
@@ -6970,7 +6970,7 @@ function SlideCanvas(props) {
|
|
|
6970
6970
|
props.registerInlineEditReader
|
|
6971
6971
|
]
|
|
6972
6972
|
);
|
|
6973
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6973
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkMFGD7XVJ_js.InlineCollaborationContext.Provider, { value, children: /* @__PURE__ */ jsxRuntime.jsx(SlideCanvasContent, { ...props }) });
|
|
6974
6974
|
}
|
|
6975
6975
|
function SlideCanvasContent({
|
|
6976
6976
|
imagePaste,
|
|
@@ -7237,7 +7237,7 @@ function SlideCanvasContent({
|
|
|
7237
7237
|
onPointerMove: handleStagePointerMove,
|
|
7238
7238
|
onPointerUp: handleStagePointerUp,
|
|
7239
7239
|
children: [
|
|
7240
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7240
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMFGD7XVJ_js.SlideBackgroundImageLayer, { slide: activeSlide }),
|
|
7241
7241
|
presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
|
|
7242
7242
|
/* @__PURE__ */ jsxRuntime.jsx(GridOverlay, { canvasSize, gridSpacingPx, visible: showGrid }),
|
|
7243
7243
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -7249,7 +7249,7 @@ function SlideCanvasContent({
|
|
|
7249
7249
|
}
|
|
7250
7250
|
),
|
|
7251
7251
|
templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
7252
|
-
|
|
7252
|
+
chunkMFGD7XVJ_js.ElementRenderer,
|
|
7253
7253
|
{
|
|
7254
7254
|
element,
|
|
7255
7255
|
activeSlide,
|
|
@@ -7271,7 +7271,7 @@ function SlideCanvasContent({
|
|
|
7271
7271
|
),
|
|
7272
7272
|
renderInk: false,
|
|
7273
7273
|
renderGroups: true,
|
|
7274
|
-
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ?
|
|
7274
|
+
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunkRHNJ4IU2_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
|
|
7275
7275
|
onResizePointerDown: stableResizePointerDown,
|
|
7276
7276
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
7277
7277
|
onRotate: stableRotate,
|
|
@@ -7293,7 +7293,7 @@ function SlideCanvasContent({
|
|
|
7293
7293
|
`tpl-${element.id}`
|
|
7294
7294
|
)),
|
|
7295
7295
|
activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
7296
|
-
|
|
7296
|
+
chunkMFGD7XVJ_js.ElementRenderer,
|
|
7297
7297
|
{
|
|
7298
7298
|
element,
|
|
7299
7299
|
activeSlide,
|
|
@@ -7315,7 +7315,7 @@ function SlideCanvasContent({
|
|
|
7315
7315
|
),
|
|
7316
7316
|
renderInk: true,
|
|
7317
7317
|
renderGroups: true,
|
|
7318
|
-
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ?
|
|
7318
|
+
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunkRHNJ4IU2_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
|
|
7319
7319
|
onResizePointerDown: stableResizePointerDown,
|
|
7320
7320
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
7321
7321
|
onRotate: stableRotate,
|
|
@@ -7359,7 +7359,7 @@ function SlideCanvasContent({
|
|
|
7359
7359
|
editingMember && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
7360
7360
|
/* @__PURE__ */ jsxRuntime.jsx("style", { children: `[data-element-id="${cssAttr(editingMember.parentId)}"] [data-element-id="${cssAttr(editingMember.member.id)}"]{visibility:hidden}` }),
|
|
7361
7361
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7362
|
-
|
|
7362
|
+
chunkMFGD7XVJ_js.ElementRenderer,
|
|
7363
7363
|
{
|
|
7364
7364
|
element: editingMember.member,
|
|
7365
7365
|
activeSlide,
|
|
@@ -7394,11 +7394,11 @@ function SlideCanvasContent({
|
|
|
7394
7394
|
`group-member-edit-${editingMember.member.id}`
|
|
7395
7395
|
)
|
|
7396
7396
|
] }),
|
|
7397
|
-
selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !
|
|
7397
|
+
selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !chunkRHNJ4IU2_js.isConnectorOrLineElement(selectedElement) && outlineAuthoring?.editPointsElementId !== selectedElement.id && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7398
7398
|
SelectionHandleOverlay,
|
|
7399
7399
|
{
|
|
7400
7400
|
element: selectedElement,
|
|
7401
|
-
adjustmentHandles:
|
|
7401
|
+
adjustmentHandles: chunkRHNJ4IU2_js.getShapeAdjustmentHandleDescriptors(selectedElement),
|
|
7402
7402
|
onResizePointerDown: stableResizePointerDown,
|
|
7403
7403
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
7404
7404
|
onRotate: stableRotate,
|
|
@@ -7512,7 +7512,7 @@ function LoadingState({ className }) {
|
|
|
7512
7512
|
role: "status",
|
|
7513
7513
|
"aria-live": "polite",
|
|
7514
7514
|
"aria-atomic": "true",
|
|
7515
|
-
className:
|
|
7515
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
7516
7516
|
"h-full w-full flex items-center justify-center text-muted-foreground",
|
|
7517
7517
|
className
|
|
7518
7518
|
),
|
|
@@ -7535,7 +7535,7 @@ function ErrorState({ className, error }) {
|
|
|
7535
7535
|
{
|
|
7536
7536
|
role: "alert",
|
|
7537
7537
|
"aria-live": "assertive",
|
|
7538
|
-
className:
|
|
7538
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
7539
7539
|
"h-full w-full flex items-center justify-center p-6 text-center text-red-400",
|
|
7540
7540
|
className
|
|
7541
7541
|
),
|
|
@@ -7566,7 +7566,7 @@ function ShortcutPanel({ isOpen, onClose }) {
|
|
|
7566
7566
|
}
|
|
7567
7567
|
)
|
|
7568
7568
|
] }),
|
|
7569
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children:
|
|
7569
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children: chunkRHNJ4IU2_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7570
7570
|
"div",
|
|
7571
7571
|
{
|
|
7572
7572
|
className: "flex items-center justify-between gap-3 rounded bg-muted/80 px-2 py-1.5",
|
|
@@ -7626,14 +7626,14 @@ function AccessibilityPanel({
|
|
|
7626
7626
|
"aria-label": t("pptx.accessibility.reduceMotion"),
|
|
7627
7627
|
"aria-checked": reducedMotion ?? false,
|
|
7628
7628
|
onClick: onToggleReducedMotion,
|
|
7629
|
-
className:
|
|
7629
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
7630
7630
|
"relative inline-flex h-5 w-9 items-center rounded-full transition-colors",
|
|
7631
7631
|
reducedMotion ? "bg-primary" : "bg-muted-foreground/30"
|
|
7632
7632
|
),
|
|
7633
7633
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7634
7634
|
"span",
|
|
7635
7635
|
{
|
|
7636
|
-
className:
|
|
7636
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
7637
7637
|
"inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform",
|
|
7638
7638
|
reducedMotion ? "translate-x-4" : "translate-x-0.5"
|
|
7639
7639
|
)
|
|
@@ -7652,7 +7652,7 @@ function AccessibilityPanel({
|
|
|
7652
7652
|
"div",
|
|
7653
7653
|
{
|
|
7654
7654
|
role: "listitem",
|
|
7655
|
-
className:
|
|
7655
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
7656
7656
|
"flex items-start gap-2 rounded px-2 py-1.5 text-xs",
|
|
7657
7657
|
/* Severity-based background and text colouring */
|
|
7658
7658
|
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"
|
|
@@ -7812,7 +7812,7 @@ function ResizeHandle({
|
|
|
7812
7812
|
{
|
|
7813
7813
|
role: "separator",
|
|
7814
7814
|
"aria-orientation": direction,
|
|
7815
|
-
className:
|
|
7815
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
7816
7816
|
// Outer container: generous hit area for easy clicking.
|
|
7817
7817
|
// The visible indicator is rendered via the inner pseudo-element (::after).
|
|
7818
7818
|
"relative flex-shrink-0 z-20 group",
|
|
@@ -7823,7 +7823,7 @@ function ResizeHandle({
|
|
|
7823
7823
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7824
7824
|
"div",
|
|
7825
7825
|
{
|
|
7826
|
-
className:
|
|
7826
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
7827
7827
|
"absolute transition-colors",
|
|
7828
7828
|
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"
|
|
7829
7829
|
)
|
|
@@ -7842,14 +7842,14 @@ function SlideThumbnailImpl({
|
|
|
7842
7842
|
}) {
|
|
7843
7843
|
const safeCanvasWidth = Math.max(canvasSize.width, 1);
|
|
7844
7844
|
const safeCanvasHeight = Math.max(canvasSize.height, 1);
|
|
7845
|
-
const width = previewWidth ??
|
|
7845
|
+
const width = previewWidth ?? chunkRHNJ4IU2_js.SLIDE_NAV_THUMBNAIL_WIDTH;
|
|
7846
7846
|
const scale = width / safeCanvasWidth;
|
|
7847
7847
|
const previewHeight = pptx.editorThumbnailHeight(safeCanvasWidth, safeCanvasHeight, width);
|
|
7848
7848
|
const previewElements = pptx.buildPreviewElements(slide, templateElements);
|
|
7849
7849
|
const slideFieldContext = pptx.deriveSlideFieldContext(fieldContext, slide);
|
|
7850
7850
|
const { t } = reactI18next.useTranslation();
|
|
7851
7851
|
const transitionLabel = slide.transition ? (() => {
|
|
7852
|
-
const opt =
|
|
7852
|
+
const opt = chunkRHNJ4IU2_js.SLIDE_TRANSITION_OPTIONS.find((o) => o.value === slide.transition?.type);
|
|
7853
7853
|
return opt ? t(opt.i18nKey) : slide.transition.type;
|
|
7854
7854
|
})() : void 0;
|
|
7855
7855
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -7874,7 +7874,7 @@ function SlideThumbnailImpl({
|
|
|
7874
7874
|
transformOrigin: "top left"
|
|
7875
7875
|
},
|
|
7876
7876
|
children: [
|
|
7877
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7877
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMFGD7XVJ_js.SlideBackgroundImageLayer, { slide }),
|
|
7878
7878
|
slide.transition && slide.transition.type !== "none" && slide.transition.type !== "cut" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7879
7879
|
"div",
|
|
7880
7880
|
{
|
|
@@ -7884,7 +7884,7 @@ function SlideThumbnailImpl({
|
|
|
7884
7884
|
}
|
|
7885
7885
|
),
|
|
7886
7886
|
previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
7887
|
-
|
|
7887
|
+
chunkMFGD7XVJ_js.StaticElementRenderer,
|
|
7888
7888
|
{
|
|
7889
7889
|
element,
|
|
7890
7890
|
activeSlide: slide,
|
|
@@ -8440,7 +8440,7 @@ function SectionHeader({
|
|
|
8440
8440
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8441
8441
|
lu.LuChevronDown,
|
|
8442
8442
|
{
|
|
8443
|
-
className:
|
|
8443
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
8444
8444
|
"h-3 w-3 flex-shrink-0 transition-transform",
|
|
8445
8445
|
isCollapsed ? "-rotate-90" : "rotate-0"
|
|
8446
8446
|
)
|
|
@@ -8591,7 +8591,7 @@ function LazyThumbnailInner({
|
|
|
8591
8591
|
}
|
|
8592
8592
|
var LazyThumbnail = React97__default.default.memo(LazyThumbnailInner);
|
|
8593
8593
|
function declaredSectionFacts(groups, sectionId) {
|
|
8594
|
-
const declared = groups.filter((group) => group.id !==
|
|
8594
|
+
const declared = groups.filter((group) => group.id !== chunkRHNJ4IU2_js.DEFAULT_SECTION_GROUP_ID && group.id !== chunkRHNJ4IU2_js.UNGROUPED_SECTION_ID).map((group) => group.id);
|
|
8595
8595
|
return {
|
|
8596
8596
|
isDeclared: declared.includes(sectionId),
|
|
8597
8597
|
index: declared.indexOf(sectionId),
|
|
@@ -8676,7 +8676,7 @@ function SlideItemInner({
|
|
|
8676
8676
|
"data-pptx-chrome": "slide-row",
|
|
8677
8677
|
"aria-describedby": cue.labelId,
|
|
8678
8678
|
"data-pptx-slide-hidden": cue.marker,
|
|
8679
|
-
className:
|
|
8679
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
8680
8680
|
"group relative flex w-full items-center gap-1 cursor-pointer border-0 bg-transparent py-0.5 px-1 text-left transition-all",
|
|
8681
8681
|
isActive && "bg-accent/40 before:absolute before:left-0 before:top-1 before:bottom-1 before:w-[3px] before:bg-primary before:rounded-r",
|
|
8682
8682
|
isSelected && !isActive && "bg-accent/20 ring-1 ring-inset ring-primary/50",
|
|
@@ -8698,7 +8698,7 @@ function SlideItemInner({
|
|
|
8698
8698
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8699
8699
|
"span",
|
|
8700
8700
|
{
|
|
8701
|
-
className:
|
|
8701
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
8702
8702
|
"text-[10px] tabular-nums text-right select-none w-full",
|
|
8703
8703
|
isActive ? "text-primary font-medium" : "text-muted-foreground"
|
|
8704
8704
|
),
|
|
@@ -8721,7 +8721,7 @@ function SlideItemInner({
|
|
|
8721
8721
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
8722
8722
|
"div",
|
|
8723
8723
|
{
|
|
8724
|
-
className:
|
|
8724
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
8725
8725
|
"relative shrink-0 overflow-hidden border transition-colors bg-white",
|
|
8726
8726
|
isActive ? "border-primary/60" : "border-transparent group-hover:border-border/40"
|
|
8727
8727
|
),
|
|
@@ -8920,7 +8920,7 @@ function SlidesPaneSidebar({
|
|
|
8920
8920
|
tableStyleContext
|
|
8921
8921
|
}) {
|
|
8922
8922
|
const { t } = reactI18next.useTranslation();
|
|
8923
|
-
const collab =
|
|
8923
|
+
const collab = chunkMFGD7XVJ_js.useCollaboration();
|
|
8924
8924
|
const slideRefs = React97.useRef(/* @__PURE__ */ new Map());
|
|
8925
8925
|
const renameInputRef = React97.useRef(null);
|
|
8926
8926
|
const slidePresenceMap = React97.useMemo(() => {
|
|
@@ -8945,7 +8945,7 @@ function SlidesPaneSidebar({
|
|
|
8945
8945
|
() => estimateSlideItemHeight(canvasSize.width, canvasSize.height, previewWidth),
|
|
8946
8946
|
[canvasSize.width, canvasSize.height, previewWidth]
|
|
8947
8947
|
);
|
|
8948
|
-
const showSectionHeaders = sectionGroups.some((group) => group.id !==
|
|
8948
|
+
const showSectionHeaders = sectionGroups.some((group) => group.id !== chunkRHNJ4IU2_js.DEFAULT_SECTION_GROUP_ID);
|
|
8949
8949
|
const {
|
|
8950
8950
|
collapsedSections,
|
|
8951
8951
|
renamingSectionId,
|
|
@@ -9015,7 +9015,7 @@ function SlidesPaneSidebar({
|
|
|
9015
9015
|
[sectionGroups, showSectionHeaders, effectiveCollapsed]
|
|
9016
9016
|
);
|
|
9017
9017
|
const shouldVirtualize = slides.length >= VIRTUALIZATION_THRESHOLD;
|
|
9018
|
-
const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } =
|
|
9018
|
+
const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunkMFGD7XVJ_js.useVirtualizedSlides({
|
|
9019
9019
|
totalItems: shouldVirtualize ? flatItems.length : 0,
|
|
9020
9020
|
itemHeight: estimatedItemHeight
|
|
9021
9021
|
});
|
|
@@ -9272,7 +9272,7 @@ function HandoutMasterPanel({
|
|
|
9272
9272
|
{
|
|
9273
9273
|
type: "button",
|
|
9274
9274
|
"aria-pressed": slidesPerPage === count,
|
|
9275
|
-
className:
|
|
9275
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
9276
9276
|
"px-2 py-1.5 rounded text-[11px] font-medium transition-colors",
|
|
9277
9277
|
slidesPerPage === count ? "bg-primary text-white" : "bg-accent/50 text-muted-foreground hover:bg-accent/70 hover:text-foreground"
|
|
9278
9278
|
),
|
|
@@ -9390,7 +9390,7 @@ function SlideMastersList({
|
|
|
9390
9390
|
ref: isMasterActive ? activeRef : void 0,
|
|
9391
9391
|
"aria-pressed": isMasterActive,
|
|
9392
9392
|
"aria-label": master.name || t("pptx.master.master"),
|
|
9393
|
-
className:
|
|
9393
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
9394
9394
|
"group relative block w-full cursor-pointer rounded-lg border-2 p-1 text-left transition-all",
|
|
9395
9395
|
isMasterActive ? "border-amber-500 bg-amber-500/10" : "border-border bg-background/40 hover:border-border"
|
|
9396
9396
|
),
|
|
@@ -9407,7 +9407,7 @@ function SlideMastersList({
|
|
|
9407
9407
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 px-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9408
9408
|
"span",
|
|
9409
9409
|
{
|
|
9410
|
-
className:
|
|
9410
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
9411
9411
|
"text-[10px] font-medium",
|
|
9412
9412
|
isMasterActive ? "text-amber-400" : "text-muted-foreground"
|
|
9413
9413
|
),
|
|
@@ -9426,7 +9426,7 @@ function SlideMastersList({
|
|
|
9426
9426
|
ref: isLayoutActive ? activeRef : void 0,
|
|
9427
9427
|
"aria-pressed": isLayoutActive,
|
|
9428
9428
|
"aria-label": layout.name || t("pptx.master.layout"),
|
|
9429
|
-
className:
|
|
9429
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
9430
9430
|
"group relative block w-full cursor-pointer rounded-md border-2 p-0.5 text-left transition-all",
|
|
9431
9431
|
isLayoutActive ? "border-primary bg-primary/10" : "border-border bg-background/40 hover:border-border"
|
|
9432
9432
|
),
|
|
@@ -9443,7 +9443,7 @@ function SlideMastersList({
|
|
|
9443
9443
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5 px-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9444
9444
|
"span",
|
|
9445
9445
|
{
|
|
9446
|
-
className:
|
|
9446
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
9447
9447
|
"text-[9px]",
|
|
9448
9448
|
isLayoutActive ? "text-primary" : "text-muted-foreground"
|
|
9449
9449
|
),
|
|
@@ -9535,7 +9535,7 @@ function MasterViewSidebar({
|
|
|
9535
9535
|
type: "button",
|
|
9536
9536
|
role: "tab",
|
|
9537
9537
|
"aria-selected": masterViewTab === tab.key,
|
|
9538
|
-
className:
|
|
9538
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
9539
9539
|
"flex-1 px-1 py-1.5 text-[10px] font-medium transition-colors border-b-2",
|
|
9540
9540
|
masterViewTab === tab.key ? "border-amber-500 text-amber-400" : "border-transparent text-muted-foreground hover:text-foreground"
|
|
9541
9541
|
),
|
|
@@ -10038,7 +10038,7 @@ function SectionBlock({
|
|
|
10038
10038
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10039
10039
|
lu.LuChevronDown,
|
|
10040
10040
|
{
|
|
10041
|
-
className:
|
|
10041
|
+
className: chunkRHNJ4IU2_js.cn("h-3 w-3 transition-transform", collapsed ? "-rotate-90" : "rotate-0")
|
|
10042
10042
|
}
|
|
10043
10043
|
),
|
|
10044
10044
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-left", children: section.label }),
|
|
@@ -10087,7 +10087,7 @@ function SlideCardImpl({
|
|
|
10087
10087
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10088
10088
|
"div",
|
|
10089
10089
|
{
|
|
10090
|
-
className:
|
|
10090
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
10091
10091
|
"group relative cursor-pointer rounded-lg border-2 p-1 transition-all",
|
|
10092
10092
|
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",
|
|
10093
10093
|
slide.hidden && "opacity-40"
|
|
@@ -10110,7 +10110,7 @@ function SlideCardImpl({
|
|
|
10110
10110
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10111
10111
|
"span",
|
|
10112
10112
|
{
|
|
10113
|
-
className:
|
|
10113
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
10114
10114
|
"text-[11px] font-medium px-0.5",
|
|
10115
10115
|
isSelected ? "text-primary" : isActive ? "text-primary/70" : "text-muted-foreground"
|
|
10116
10116
|
),
|
|
@@ -10852,7 +10852,7 @@ function ReadingViewStage({
|
|
|
10852
10852
|
"div",
|
|
10853
10853
|
{
|
|
10854
10854
|
className: "absolute inset-0",
|
|
10855
|
-
style: { backgroundColor:
|
|
10855
|
+
style: { backgroundColor: chunkRHNJ4IU2_js.normalizeHexColor(slide.backgroundColor, "#ffffff") }
|
|
10856
10856
|
}
|
|
10857
10857
|
),
|
|
10858
10858
|
slide.backgroundImage && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -10871,7 +10871,7 @@ function ReadingViewStage({
|
|
|
10871
10871
|
className: "absolute left-0 top-0 origin-top-left",
|
|
10872
10872
|
style: { width, height, transform: `scale(${scale})` },
|
|
10873
10873
|
children: elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
10874
|
-
|
|
10874
|
+
chunkMFGD7XVJ_js.StaticElementRenderer,
|
|
10875
10875
|
{
|
|
10876
10876
|
element,
|
|
10877
10877
|
activeSlide: slide,
|
|
@@ -11083,7 +11083,7 @@ function renderRichNotesSegments(segments) {
|
|
|
11083
11083
|
if (segment.style.fontFamily) {
|
|
11084
11084
|
style.fontFamily = segment.style.fontFamily;
|
|
11085
11085
|
}
|
|
11086
|
-
if (segment.style.hyperlink &&
|
|
11086
|
+
if (segment.style.hyperlink && chunkRHNJ4IU2_js.isUrlSafe(segment.style.hyperlink)) {
|
|
11087
11087
|
const safeHref = segment.style.hyperlink;
|
|
11088
11088
|
style.color = "#4a9eff";
|
|
11089
11089
|
style.textDecoration = "underline";
|
|
@@ -11096,7 +11096,7 @@ function renderRichNotesSegments(segments) {
|
|
|
11096
11096
|
style,
|
|
11097
11097
|
onClick: (e) => {
|
|
11098
11098
|
e.preventDefault();
|
|
11099
|
-
|
|
11099
|
+
chunkRHNJ4IU2_js.safeOpenUrl(safeHref);
|
|
11100
11100
|
},
|
|
11101
11101
|
children: segment.text
|
|
11102
11102
|
},
|
|
@@ -11445,7 +11445,7 @@ function useSlideNotes({
|
|
|
11445
11445
|
const href = target.getAttribute("data-hyperlink") || target.getAttribute("href");
|
|
11446
11446
|
if (href && (e.ctrlKey || e.metaKey)) {
|
|
11447
11447
|
e.preventDefault();
|
|
11448
|
-
|
|
11448
|
+
chunkRHNJ4IU2_js.safeOpenUrl(href);
|
|
11449
11449
|
}
|
|
11450
11450
|
}, []);
|
|
11451
11451
|
return {
|
|
@@ -11526,7 +11526,7 @@ function SlideNotesPanel({
|
|
|
11526
11526
|
});
|
|
11527
11527
|
const hasNotes = draft.trim().length > 0;
|
|
11528
11528
|
const slideLabel = activeSlide ? t("pptx.notes.slideN", { n: activeSlide.slideNumber }) : t("pptx.notes.noSlide");
|
|
11529
|
-
const { dragY, handlers: dragHandlers } =
|
|
11529
|
+
const { dragY, handlers: dragHandlers } = chunkMFGD7XVJ_js.useSheetDismissDrag(onToggle);
|
|
11530
11530
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
11531
11531
|
isExpanded && /* @__PURE__ */ jsxRuntime.jsx(
|
|
11532
11532
|
"button",
|
|
@@ -11542,7 +11542,7 @@ function SlideNotesPanel({
|
|
|
11542
11542
|
{
|
|
11543
11543
|
ref: rootRef,
|
|
11544
11544
|
"data-pptx-chrome": "notes",
|
|
11545
|
-
className:
|
|
11545
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
11546
11546
|
"flex flex-col border-t border-border/60 bg-background select-none",
|
|
11547
11547
|
// On mobile, hide the entire notes strip when collapsed: the
|
|
11548
11548
|
// MobileBottomBar's Notes button is the entry point instead.
|
|
@@ -11906,7 +11906,7 @@ function SlideDiffRow({
|
|
|
11906
11906
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
11907
11907
|
"div",
|
|
11908
11908
|
{
|
|
11909
|
-
className:
|
|
11909
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
11910
11910
|
"rounded-lg border transition-colors",
|
|
11911
11911
|
isResolved ? "border-border/60 bg-card/40 opacity-60" : "border-border bg-background/70"
|
|
11912
11912
|
),
|
|
@@ -11920,7 +11920,7 @@ function SlideDiffRow({
|
|
|
11920
11920
|
children: [
|
|
11921
11921
|
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" }),
|
|
11922
11922
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-foreground", children: t("pptx.compare.slideNumber", { number: slideNumber }) }),
|
|
11923
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
11923
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkRHNJ4IU2_js.cn("rounded-full px-2 py-0.5 text-[10px] font-medium", statusColor), children: statusLabel }),
|
|
11924
11924
|
diff.changes.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-muted-foreground", children: [
|
|
11925
11925
|
diff.changes.length,
|
|
11926
11926
|
" ",
|
|
@@ -11930,7 +11930,7 @@ function SlideDiffRow({
|
|
|
11930
11930
|
isResolved && /* @__PURE__ */ jsxRuntime.jsx(
|
|
11931
11931
|
"span",
|
|
11932
11932
|
{
|
|
11933
|
-
className:
|
|
11933
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
11934
11934
|
"text-[10px] font-medium",
|
|
11935
11935
|
accepted ? "text-green-400" : "text-muted-foreground"
|
|
11936
11936
|
),
|
|
@@ -11958,7 +11958,7 @@ function SlideDiffRow({
|
|
|
11958
11958
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
11959
11959
|
"div",
|
|
11960
11960
|
{
|
|
11961
|
-
className:
|
|
11961
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
11962
11962
|
"rounded border overflow-hidden",
|
|
11963
11963
|
diff.status === "added" ? "border-green-700/60" : diff.status === "changed" ? "border-amber-700/60" : "border-border"
|
|
11964
11964
|
),
|
|
@@ -12663,7 +12663,7 @@ function DocumentPropertiesDialog({
|
|
|
12663
12663
|
const handleClose = React97.useCallback(() => {
|
|
12664
12664
|
onClose();
|
|
12665
12665
|
}, [onClose]);
|
|
12666
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
12666
|
+
const { panelStyle, handlers: dragHandlers } = chunkMFGD7XVJ_js.useModalDismissDrag(handleClose);
|
|
12667
12667
|
if (!isOpen) {
|
|
12668
12668
|
return null;
|
|
12669
12669
|
}
|
|
@@ -13260,7 +13260,7 @@ function PresentationSubtitleBar({
|
|
|
13260
13260
|
}) {
|
|
13261
13261
|
const { t } = reactI18next.useTranslation();
|
|
13262
13262
|
const language = pptx.subtitleRecognitionLanguage(
|
|
13263
|
-
pptx.subtitleSettingsFromOptions(
|
|
13263
|
+
pptx.subtitleSettingsFromOptions(chunkMFGD7XVJ_js.useViewerOptionsContext()),
|
|
13264
13264
|
typeof navigator === "undefined" ? "en-US" : navigator.language
|
|
13265
13265
|
);
|
|
13266
13266
|
const [captionText, setCaptionText] = React97.useState("");
|
|
@@ -13428,7 +13428,7 @@ function ScaledSlidePreviewImpl({
|
|
|
13428
13428
|
{
|
|
13429
13429
|
className: "absolute inset-0",
|
|
13430
13430
|
style: {
|
|
13431
|
-
backgroundColor:
|
|
13431
|
+
backgroundColor: chunkRHNJ4IU2_js.normalizeHexColor(slide.backgroundColor, "#ffffff")
|
|
13432
13432
|
}
|
|
13433
13433
|
}
|
|
13434
13434
|
),
|
|
@@ -13453,7 +13453,7 @@ function ScaledSlidePreviewImpl({
|
|
|
13453
13453
|
transformOrigin: "top left"
|
|
13454
13454
|
},
|
|
13455
13455
|
children: previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
13456
|
-
|
|
13456
|
+
chunkMFGD7XVJ_js.StaticElementRenderer,
|
|
13457
13457
|
{
|
|
13458
13458
|
element,
|
|
13459
13459
|
activeSlide: slide,
|
|
@@ -14170,7 +14170,7 @@ function getElementDisplayName(element, index) {
|
|
|
14170
14170
|
if (element.name && element.name.trim().length > 0) {
|
|
14171
14171
|
return element.name.trim();
|
|
14172
14172
|
}
|
|
14173
|
-
if ((0,
|
|
14173
|
+
if ((0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(element) && element.text && element.text.trim().length > 0) {
|
|
14174
14174
|
return element.text.trim().slice(0, 32);
|
|
14175
14175
|
}
|
|
14176
14176
|
const label = TYPE_LABELS[element.type] ?? "Object";
|
|
@@ -14343,7 +14343,7 @@ function SelectionPane({
|
|
|
14343
14343
|
setDragIndex(null);
|
|
14344
14344
|
setDragOverIndex(null);
|
|
14345
14345
|
},
|
|
14346
|
-
className:
|
|
14346
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
14347
14347
|
"flex items-center gap-1.5 px-2 py-1 text-xs cursor-pointer transition-colors",
|
|
14348
14348
|
isSelected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground",
|
|
14349
14349
|
dragOverIndex === realIndex ? "border-t-2 border-primary" : ""
|
|
@@ -14397,13 +14397,13 @@ function SelectionPane({
|
|
|
14397
14397
|
}
|
|
14398
14398
|
var INPUT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
|
|
14399
14399
|
var SELECT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
|
|
14400
|
-
var ENTRANCE_PRESETS =
|
|
14400
|
+
var ENTRANCE_PRESETS = chunkRHNJ4IU2_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14401
14401
|
(o) => o.value === "fadeIn" || o.value === "flyIn" || o.value === "zoomIn"
|
|
14402
14402
|
);
|
|
14403
|
-
var EXIT_PRESETS =
|
|
14403
|
+
var EXIT_PRESETS = chunkRHNJ4IU2_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14404
14404
|
(o) => o.value === "fadeOut" || o.value === "flyOut" || o.value === "zoomOut"
|
|
14405
14405
|
);
|
|
14406
|
-
var EMPHASIS_PRESETS =
|
|
14406
|
+
var EMPHASIS_PRESETS = chunkRHNJ4IU2_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14407
14407
|
(o) => o.value === "spin" || o.value === "pulse" || o.value === "colorWave" || o.value === "bounce" || o.value === "flash" || o.value === "growShrink" || o.value === "teeter"
|
|
14408
14408
|
);
|
|
14409
14409
|
var TIMING_CURVE_OPTIONS = [
|
|
@@ -14569,7 +14569,7 @@ function AnimationTimelineSection({
|
|
|
14569
14569
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-6 rounded bg-muted/50 border border-border overflow-hidden", children: timelineBarData.map((bar) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
14570
14570
|
"div",
|
|
14571
14571
|
{
|
|
14572
|
-
className:
|
|
14572
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
14573
14573
|
"absolute top-0.5 bottom-0.5 rounded-sm transition-colors",
|
|
14574
14574
|
animationTypeColor(bar.anim),
|
|
14575
14575
|
bar.anim.elementId === selectedElementId && "ring-1 ring-primary"
|
|
@@ -14598,7 +14598,7 @@ function AnimationTimelineSection({
|
|
|
14598
14598
|
onDragLeave: handleDragLeave,
|
|
14599
14599
|
onDrop: (e) => handleDrop(index, e),
|
|
14600
14600
|
title: t("pptx.animation.nativeEffectHint"),
|
|
14601
|
-
className:
|
|
14601
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
14602
14602
|
"flex items-center gap-1 px-1 py-0.5 rounded text-[10px] italic",
|
|
14603
14603
|
"bg-muted/20 text-muted-foreground/70",
|
|
14604
14604
|
isDragOver && "border-t-2 border-primary"
|
|
@@ -14637,7 +14637,7 @@ function AnimationTimelineSection({
|
|
|
14637
14637
|
onDragEnd: handleDragEnd,
|
|
14638
14638
|
onMouseEnter: () => handleAnimationHover(anim),
|
|
14639
14639
|
onMouseLeave: handleAnimationHoverEnd,
|
|
14640
|
-
className:
|
|
14640
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
14641
14641
|
"flex items-center gap-1 px-1 py-0.5 rounded text-[10px] cursor-grab transition-colors",
|
|
14642
14642
|
isSelected ? "bg-primary/30 text-primary" : "bg-muted/50 text-muted-foreground",
|
|
14643
14643
|
isDragging && "opacity-40",
|
|
@@ -14769,7 +14769,7 @@ function EffectSoundRow({
|
|
|
14769
14769
|
}
|
|
14770
14770
|
const asset = pptx.getEffectSoundAsset(soundState.catalogueId);
|
|
14771
14771
|
if (asset) {
|
|
14772
|
-
|
|
14772
|
+
chunkMFGD7XVJ_js.playAnimationSound(asset.dataUrl);
|
|
14773
14773
|
}
|
|
14774
14774
|
};
|
|
14775
14775
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -14944,7 +14944,7 @@ function useAnimationPreview({
|
|
|
14944
14944
|
}) {
|
|
14945
14945
|
const handleAnimationHover = React97.useCallback((anim) => {
|
|
14946
14946
|
if (anim.motionPath) {
|
|
14947
|
-
|
|
14947
|
+
chunkRHNJ4IU2_js.startMotionPathPreview(anim.elementId, anim.motionPath, {
|
|
14948
14948
|
durationMs: anim.durationMs,
|
|
14949
14949
|
delayMs: anim.delayMs,
|
|
14950
14950
|
timingCurve: anim.timingCurve
|
|
@@ -14955,19 +14955,19 @@ function useAnimationPreview({
|
|
|
14955
14955
|
if (!preset || preset === "none") {
|
|
14956
14956
|
return;
|
|
14957
14957
|
}
|
|
14958
|
-
|
|
14958
|
+
chunkRHNJ4IU2_js.startPreviewAnimation(anim.elementId, preset, {
|
|
14959
14959
|
direction: anim.direction,
|
|
14960
14960
|
durationMs: anim.durationMs ?? 500,
|
|
14961
14961
|
timingCurve: anim.timingCurve
|
|
14962
14962
|
});
|
|
14963
14963
|
}, []);
|
|
14964
|
-
const handleAnimationHoverEnd = React97.useCallback(() =>
|
|
14964
|
+
const handleAnimationHoverEnd = React97.useCallback(() => chunkRHNJ4IU2_js.stopPreviewAnimation(), []);
|
|
14965
14965
|
const handlePreviewClick = React97.useCallback(() => {
|
|
14966
14966
|
if (!selectedElementAnimation) {
|
|
14967
14967
|
return;
|
|
14968
14968
|
}
|
|
14969
14969
|
if (selectedElementAnimation.motionPath) {
|
|
14970
|
-
|
|
14970
|
+
chunkRHNJ4IU2_js.startMotionPathPreview(selectedElementId, selectedElementAnimation.motionPath, {
|
|
14971
14971
|
durationMs: selectedElementAnimation.durationMs,
|
|
14972
14972
|
delayMs: selectedElementAnimation.delayMs,
|
|
14973
14973
|
timingCurve: selectedElementAnimation.timingCurve
|
|
@@ -14978,7 +14978,7 @@ function useAnimationPreview({
|
|
|
14978
14978
|
if (!preset || preset === "none") {
|
|
14979
14979
|
return;
|
|
14980
14980
|
}
|
|
14981
|
-
|
|
14981
|
+
chunkRHNJ4IU2_js.startPreviewAnimation(selectedElementId, preset, {
|
|
14982
14982
|
direction: selectedElementAnimation.direction,
|
|
14983
14983
|
durationMs: selectedElementAnimation.durationMs ?? 500,
|
|
14984
14984
|
timingCurve: selectedElementAnimation.timingCurve
|
|
@@ -15212,8 +15212,8 @@ function useAnimationHandlers({
|
|
|
15212
15212
|
if (!el) {
|
|
15213
15213
|
return anim.elementId.slice(0, 8);
|
|
15214
15214
|
}
|
|
15215
|
-
const text = (0,
|
|
15216
|
-
return text ||
|
|
15215
|
+
const text = (0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(el) ? el.text : void 0;
|
|
15216
|
+
return text || chunkRHNJ4IU2_js.getElementLabel(el);
|
|
15217
15217
|
},
|
|
15218
15218
|
[activeSlide.elements]
|
|
15219
15219
|
);
|
|
@@ -15223,8 +15223,8 @@ function useAnimationHandlers({
|
|
|
15223
15223
|
if (!el) {
|
|
15224
15224
|
return id.slice(0, 8);
|
|
15225
15225
|
}
|
|
15226
|
-
const text = (0,
|
|
15227
|
-
return text ||
|
|
15226
|
+
const text = (0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(el) ? el.text : void 0;
|
|
15227
|
+
return text || chunkRHNJ4IU2_js.getElementLabel(el);
|
|
15228
15228
|
}).join(", "),
|
|
15229
15229
|
[activeSlide.elements]
|
|
15230
15230
|
);
|
|
@@ -15281,7 +15281,7 @@ function AnimationPanel({
|
|
|
15281
15281
|
onUpdateSlide
|
|
15282
15282
|
}) {
|
|
15283
15283
|
const { t } = reactI18next.useTranslation();
|
|
15284
|
-
const { viewportWidth } =
|
|
15284
|
+
const { viewportWidth } = chunkMFGD7XVJ_js.useIsMobile();
|
|
15285
15285
|
const directionBtnPx = Math.max(28, pptx.getDensePanelTouchTargetPx(viewportWidth));
|
|
15286
15286
|
const fieldStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
|
|
15287
15287
|
const handlers = useAnimationHandlers({
|
|
@@ -15409,7 +15409,7 @@ function AnimationPanel({
|
|
|
15409
15409
|
type: "button",
|
|
15410
15410
|
disabled: !canEdit,
|
|
15411
15411
|
style: { minWidth: directionBtnPx, minHeight: directionBtnPx },
|
|
15412
|
-
className:
|
|
15412
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
15413
15413
|
"flex items-center justify-center rounded border transition-colors",
|
|
15414
15414
|
isActive ? "border-primary bg-primary/20 text-primary" : "border-border bg-muted text-muted-foreground hover:bg-accent"
|
|
15415
15415
|
),
|
|
@@ -15487,7 +15487,7 @@ function AnimationPanel({
|
|
|
15487
15487
|
style: fieldStyle,
|
|
15488
15488
|
children: [
|
|
15489
15489
|
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: t("pptx.animation.trigger.selectShape") }),
|
|
15490
|
-
activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children:
|
|
15490
|
+
activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children: chunkRHNJ4IU2_js.getElementLabel(el) }, el.id))
|
|
15491
15491
|
]
|
|
15492
15492
|
}
|
|
15493
15493
|
)
|
|
@@ -15635,7 +15635,7 @@ function ActionTargetFields({
|
|
|
15635
15635
|
type: "text",
|
|
15636
15636
|
disabled: !canEdit,
|
|
15637
15637
|
"aria-label": t(urlLabelKey),
|
|
15638
|
-
className:
|
|
15638
|
+
className: chunkRHNJ4IU2_js.cn(INPUT2, "w-full"),
|
|
15639
15639
|
placeholder: "https://...",
|
|
15640
15640
|
value: url ?? "",
|
|
15641
15641
|
onChange: (e) => onChange({ url: e.target.value })
|
|
@@ -15649,7 +15649,7 @@ function ActionTargetFields({
|
|
|
15649
15649
|
type: "number",
|
|
15650
15650
|
disabled: !canEdit,
|
|
15651
15651
|
"aria-label": t("pptx.action.gotoSlide"),
|
|
15652
|
-
className:
|
|
15652
|
+
className: chunkRHNJ4IU2_js.cn(INPUT2, "w-full"),
|
|
15653
15653
|
placeholder: t("pptx.action.slideNumberPlaceholder"),
|
|
15654
15654
|
min: 1,
|
|
15655
15655
|
max: slideCount,
|
|
@@ -15671,7 +15671,7 @@ function ActionTargetFields({
|
|
|
15671
15671
|
"data-testid": "pptx-action-custom-show",
|
|
15672
15672
|
disabled: !canEdit,
|
|
15673
15673
|
"aria-label": t("pptx.hyperlink.customShowLabel"),
|
|
15674
|
-
className:
|
|
15674
|
+
className: chunkRHNJ4IU2_js.cn(INPUT2, "w-full"),
|
|
15675
15675
|
value: customShowId ?? "",
|
|
15676
15676
|
onChange: (e) => onChange({ customShowId: e.target.value, returnAfter }),
|
|
15677
15677
|
children: [
|
|
@@ -15704,11 +15704,11 @@ function ActionSettingsPanel({
|
|
|
15704
15704
|
onUpdateElement
|
|
15705
15705
|
}) {
|
|
15706
15706
|
const { t } = reactI18next.useTranslation();
|
|
15707
|
-
const clickAction = selectedElement.actionClick ? (0,
|
|
15708
|
-
const hoverAction = selectedElement.actionHover ? (0,
|
|
15707
|
+
const clickAction = selectedElement.actionClick ? (0, chunkRHNJ4IU2_js.dist_exports.pptxActionToElementAction)(selectedElement.actionClick, "click") : void 0;
|
|
15708
|
+
const hoverAction = selectedElement.actionHover ? (0, chunkRHNJ4IU2_js.dist_exports.pptxActionToElementAction)(selectedElement.actionHover, "hover") : void 0;
|
|
15709
15709
|
const updateAction = (trigger, type, patch) => {
|
|
15710
15710
|
const ea = { trigger, type, ...patch };
|
|
15711
|
-
const pa = (0,
|
|
15711
|
+
const pa = (0, chunkRHNJ4IU2_js.dist_exports.elementActionToPptxAction)(ea);
|
|
15712
15712
|
if (trigger === "click") {
|
|
15713
15713
|
onUpdateElement({ actionClick: pa });
|
|
15714
15714
|
} else {
|
|
@@ -15793,7 +15793,7 @@ function ActionTriggerSection({
|
|
|
15793
15793
|
{
|
|
15794
15794
|
disabled: !canEdit,
|
|
15795
15795
|
"aria-label": label,
|
|
15796
|
-
className:
|
|
15796
|
+
className: chunkRHNJ4IU2_js.cn(INPUT2, "w-full"),
|
|
15797
15797
|
value: effectiveType,
|
|
15798
15798
|
onChange: (e) => changeType(e.target.value),
|
|
15799
15799
|
children: pptx.ELEMENT_ACTION_TYPE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.labelKey) }, o.value))
|
|
@@ -16181,7 +16181,7 @@ function ChartDataGrid({
|
|
|
16181
16181
|
}) {
|
|
16182
16182
|
const { t } = reactI18next.useTranslation();
|
|
16183
16183
|
const highlightRef = React97.useRef(null);
|
|
16184
|
-
const { viewportWidth } =
|
|
16184
|
+
const { viewportWidth } = chunkMFGD7XVJ_js.useIsMobile();
|
|
16185
16185
|
const gridPlan = pptx.getDenseGridLayoutPlan(viewportWidth);
|
|
16186
16186
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
16187
16187
|
const rowHeaderClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10 bg-card" : "";
|
|
@@ -17538,8 +17538,8 @@ function ChartUserShapeOptions({
|
|
|
17538
17538
|
}
|
|
17539
17539
|
function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
|
|
17540
17540
|
const chartData = selectedElement.chartData;
|
|
17541
|
-
const followDataPoint =
|
|
17542
|
-
const { selection: partSelection } =
|
|
17541
|
+
const followDataPoint = chunkMFGD7XVJ_js.useViewerOptionsContext().advanced.chartPropertiesFollowDataPoint;
|
|
17542
|
+
const { selection: partSelection } = chunkMFGD7XVJ_js.useChartPartSelection();
|
|
17543
17543
|
const canvasPart = partSelection?.elementId === selectedElement.id ? partSelection.part : null;
|
|
17544
17544
|
const title = chartData?.title;
|
|
17545
17545
|
const chartType = chartData?.chartType;
|
|
@@ -17753,40 +17753,40 @@ function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
|
|
|
17753
17753
|
[chartData, selectedElement, replaceChartData]
|
|
17754
17754
|
);
|
|
17755
17755
|
const setAxisLogScale = React97.useCallback(
|
|
17756
|
-
(axisType, opts) => applyChartOp((el) => (0,
|
|
17756
|
+
(axisType, opts) => applyChartOp((el) => (0, chunkRHNJ4IU2_js.dist_exports.setChartAxisLogScale)(el, axisType, opts)),
|
|
17757
17757
|
[applyChartOp]
|
|
17758
17758
|
);
|
|
17759
17759
|
const setAxisTitleStyle = React97.useCallback(
|
|
17760
|
-
(axisType, edit) => applyChartOp((el) => (0,
|
|
17760
|
+
(axisType, edit) => applyChartOp((el) => (0, chunkRHNJ4IU2_js.dist_exports.setChartAxisTitleStyle)(el, axisType, edit)),
|
|
17761
17761
|
[applyChartOp]
|
|
17762
17762
|
);
|
|
17763
17763
|
const setGridlineStyle = React97.useCallback(
|
|
17764
|
-
(axisType, which, edit) => applyChartOp((el) => (0,
|
|
17764
|
+
(axisType, which, edit) => applyChartOp((el) => (0, chunkRHNJ4IU2_js.dist_exports.setChartAxisGridlineStyle)(el, axisType, which, edit)),
|
|
17765
17765
|
[applyChartOp]
|
|
17766
17766
|
);
|
|
17767
17767
|
const setSeriesMarker = React97.useCallback(
|
|
17768
|
-
(index, marker) => applyChartOp((el) => (0,
|
|
17768
|
+
(index, marker) => applyChartOp((el) => (0, chunkRHNJ4IU2_js.dist_exports.setChartSeriesMarker)(el, index, marker)),
|
|
17769
17769
|
[applyChartOp]
|
|
17770
17770
|
);
|
|
17771
17771
|
const setSeriesType = React97.useCallback(
|
|
17772
|
-
(index, seriesType) => applyChartOp((el) => (0,
|
|
17772
|
+
(index, seriesType) => applyChartOp((el) => (0, chunkRHNJ4IU2_js.dist_exports.setChartSeriesChartType)(el, index, seriesType)),
|
|
17773
17773
|
[applyChartOp]
|
|
17774
17774
|
);
|
|
17775
17775
|
const setPointFill = React97.useCallback(
|
|
17776
|
-
(seriesIndex, pointIndex, color) => applyChartOp((el) => (0,
|
|
17776
|
+
(seriesIndex, pointIndex, color) => applyChartOp((el) => (0, chunkRHNJ4IU2_js.dist_exports.setChartDataPointFill)(el, seriesIndex, pointIndex, color)),
|
|
17777
17777
|
[applyChartOp]
|
|
17778
17778
|
);
|
|
17779
17779
|
const setPointExplosion = React97.useCallback(
|
|
17780
|
-
(seriesIndex, pointIndex, explosion) => applyChartOp((el) => (0,
|
|
17780
|
+
(seriesIndex, pointIndex, explosion) => applyChartOp((el) => (0, chunkRHNJ4IU2_js.dist_exports.setChartDataPointExplosion)(el, seriesIndex, pointIndex, explosion)),
|
|
17781
17781
|
[applyChartOp]
|
|
17782
17782
|
);
|
|
17783
17783
|
const setPointMarker = React97.useCallback(
|
|
17784
|
-
(seriesIndex, pointIndex, marker) => applyChartOp((el) => (0,
|
|
17784
|
+
(seriesIndex, pointIndex, marker) => applyChartOp((el) => (0, chunkRHNJ4IU2_js.dist_exports.setChartDataPointMarker)(el, seriesIndex, pointIndex, marker)),
|
|
17785
17785
|
[applyChartOp]
|
|
17786
17786
|
);
|
|
17787
17787
|
const setPointLabel = React97.useCallback(
|
|
17788
17788
|
(seriesIndex, pointIndex, text) => applyChartOp(
|
|
17789
|
-
(el) => (0,
|
|
17789
|
+
(el) => (0, chunkRHNJ4IU2_js.dist_exports.setChartDataPointLabel)(el, seriesIndex, pointIndex, text !== null ? { text } : null)
|
|
17790
17790
|
),
|
|
17791
17791
|
[applyChartOp]
|
|
17792
17792
|
);
|
|
@@ -18054,17 +18054,17 @@ function OleEditorDialog({
|
|
|
18054
18054
|
const kind = descriptor.contentTab.kind;
|
|
18055
18055
|
const load = async () => {
|
|
18056
18056
|
if (kind === "sheet") {
|
|
18057
|
-
const value = await (0,
|
|
18057
|
+
const value = await (0, chunkRHNJ4IU2_js.dist_exports.getOleSheetGrid)(element);
|
|
18058
18058
|
if (!cancelled) {
|
|
18059
18059
|
setGrid(value);
|
|
18060
18060
|
}
|
|
18061
18061
|
} else if (kind === "document") {
|
|
18062
|
-
const value = await (0,
|
|
18062
|
+
const value = await (0, chunkRHNJ4IU2_js.dist_exports.getOleDocumentParagraphs)(element);
|
|
18063
18063
|
if (!cancelled) {
|
|
18064
18064
|
setParagraphs(value);
|
|
18065
18065
|
}
|
|
18066
18066
|
} else if (kind === "deck") {
|
|
18067
|
-
const value = await (0,
|
|
18067
|
+
const value = await (0, chunkRHNJ4IU2_js.dist_exports.getOleNestedDeckDetail)(element);
|
|
18068
18068
|
if (!cancelled) {
|
|
18069
18069
|
setDeckSlides(value);
|
|
18070
18070
|
}
|
|
@@ -18090,9 +18090,9 @@ function OleEditorDialog({
|
|
|
18090
18090
|
const handleCellEdit = React97.useCallback(
|
|
18091
18091
|
async (row, col, value) => {
|
|
18092
18092
|
try {
|
|
18093
|
-
const updated = await (0,
|
|
18093
|
+
const updated = await (0, chunkRHNJ4IU2_js.dist_exports.applyOleSheetCellEdit)(element, { row, col, value });
|
|
18094
18094
|
commit(updated);
|
|
18095
|
-
const refreshed = await (0,
|
|
18095
|
+
const refreshed = await (0, chunkRHNJ4IU2_js.dist_exports.getOleSheetGrid)(updated);
|
|
18096
18096
|
if (mountedRef.current) {
|
|
18097
18097
|
setGrid(refreshed);
|
|
18098
18098
|
}
|
|
@@ -18107,9 +18107,9 @@ function OleEditorDialog({
|
|
|
18107
18107
|
const handleParagraphEdit = React97.useCallback(
|
|
18108
18108
|
async (index, text) => {
|
|
18109
18109
|
try {
|
|
18110
|
-
const updated = await (0,
|
|
18110
|
+
const updated = await (0, chunkRHNJ4IU2_js.dist_exports.applyOleDocumentParagraphEdit)(element, index, text);
|
|
18111
18111
|
commit(updated);
|
|
18112
|
-
const refreshed = await (0,
|
|
18112
|
+
const refreshed = await (0, chunkRHNJ4IU2_js.dist_exports.getOleDocumentParagraphs)(updated);
|
|
18113
18113
|
if (mountedRef.current) {
|
|
18114
18114
|
setParagraphs(refreshed);
|
|
18115
18115
|
}
|
|
@@ -18124,14 +18124,14 @@ function OleEditorDialog({
|
|
|
18124
18124
|
const handleDeckElementEdit = React97.useCallback(
|
|
18125
18125
|
async (slideIndex, deckElementId, text) => {
|
|
18126
18126
|
try {
|
|
18127
|
-
const updated = await (0,
|
|
18127
|
+
const updated = await (0, chunkRHNJ4IU2_js.dist_exports.applyOleNestedDeckElementTextEdit)(
|
|
18128
18128
|
element,
|
|
18129
18129
|
slideIndex,
|
|
18130
18130
|
deckElementId,
|
|
18131
18131
|
text
|
|
18132
18132
|
);
|
|
18133
18133
|
commit(updated);
|
|
18134
|
-
const refreshed = await (0,
|
|
18134
|
+
const refreshed = await (0, chunkRHNJ4IU2_js.dist_exports.getOleNestedDeckDetail)(updated);
|
|
18135
18135
|
if (mountedRef.current) {
|
|
18136
18136
|
setDeckSlides(refreshed);
|
|
18137
18137
|
}
|
|
@@ -18147,7 +18147,7 @@ function OleEditorDialog({
|
|
|
18147
18147
|
async (file) => {
|
|
18148
18148
|
try {
|
|
18149
18149
|
const bytes = new Uint8Array(await file.arrayBuffer());
|
|
18150
|
-
const updated = await (0,
|
|
18150
|
+
const updated = await (0, chunkRHNJ4IU2_js.dist_exports.replaceOleFile)(element, bytes, file.name);
|
|
18151
18151
|
commit(updated);
|
|
18152
18152
|
if (mountedRef.current) {
|
|
18153
18153
|
onClose();
|
|
@@ -18296,7 +18296,7 @@ function ConnectorArrowsSection({
|
|
|
18296
18296
|
},
|
|
18297
18297
|
disabled: !canEdit,
|
|
18298
18298
|
className: SELECT_CLS2,
|
|
18299
|
-
children:
|
|
18299
|
+
children: chunkRHNJ4IU2_js.CONNECTOR_ARROW_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18300
18300
|
}
|
|
18301
18301
|
)
|
|
18302
18302
|
] }, end);
|
|
@@ -18320,7 +18320,7 @@ function ConnectorArrowsSection({
|
|
|
18320
18320
|
},
|
|
18321
18321
|
disabled: !canEdit,
|
|
18322
18322
|
className: SELECT_CLS2,
|
|
18323
|
-
children:
|
|
18323
|
+
children: chunkRHNJ4IU2_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18324
18324
|
}
|
|
18325
18325
|
)
|
|
18326
18326
|
] }),
|
|
@@ -18339,7 +18339,7 @@ function ConnectorArrowsSection({
|
|
|
18339
18339
|
},
|
|
18340
18340
|
disabled: !canEdit,
|
|
18341
18341
|
className: SELECT_CLS2,
|
|
18342
|
-
children:
|
|
18342
|
+
children: chunkRHNJ4IU2_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18343
18343
|
}
|
|
18344
18344
|
)
|
|
18345
18345
|
] })
|
|
@@ -18419,7 +18419,7 @@ function OlePropertiesPanel({
|
|
|
18419
18419
|
] }),
|
|
18420
18420
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
18421
18421
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.ole.type") }),
|
|
18422
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground truncate", children: (0,
|
|
18422
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground truncate", children: (0, chunkRHNJ4IU2_js.dist_exports.getOleObjectTypeLabel)(ole.oleObjectType) })
|
|
18423
18423
|
] }),
|
|
18424
18424
|
ole.fileName && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
18425
18425
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.ole.fileName") }),
|
|
@@ -18430,7 +18430,7 @@ function OlePropertiesPanel({
|
|
|
18430
18430
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
18431
18431
|
"span",
|
|
18432
18432
|
{
|
|
18433
|
-
className:
|
|
18433
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
18434
18434
|
"inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium",
|
|
18435
18435
|
ole.isLinked ? "bg-blue-500/20 text-blue-400" : "bg-green-500/20 text-green-400"
|
|
18436
18436
|
),
|
|
@@ -18498,7 +18498,7 @@ function LayerOrderButtons({
|
|
|
18498
18498
|
"button",
|
|
18499
18499
|
{
|
|
18500
18500
|
type: "button",
|
|
18501
|
-
className:
|
|
18501
|
+
className: chunkRHNJ4IU2_js.cn("flex-1", BTN2),
|
|
18502
18502
|
disabled: !canEdit,
|
|
18503
18503
|
onClick: () => onMoveLayer("forward"),
|
|
18504
18504
|
children: "\u2191 Forward"
|
|
@@ -18508,7 +18508,7 @@ function LayerOrderButtons({
|
|
|
18508
18508
|
"button",
|
|
18509
18509
|
{
|
|
18510
18510
|
type: "button",
|
|
18511
|
-
className:
|
|
18511
|
+
className: chunkRHNJ4IU2_js.cn("flex-1", BTN2),
|
|
18512
18512
|
disabled: !canEdit,
|
|
18513
18513
|
onClick: () => onMoveLayer("backward"),
|
|
18514
18514
|
children: "\u2193 Backward"
|
|
@@ -18532,7 +18532,7 @@ function ArtisticEffectsGallery({
|
|
|
18532
18532
|
{
|
|
18533
18533
|
type: "button",
|
|
18534
18534
|
disabled: !canEdit,
|
|
18535
|
-
className:
|
|
18535
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
18536
18536
|
"flex flex-col items-center gap-0.5 rounded border p-0.5 hover:bg-accent/50",
|
|
18537
18537
|
isActive ? "border-primary bg-primary/10" : "border-border"
|
|
18538
18538
|
),
|
|
@@ -18594,7 +18594,7 @@ function ColorChangeSection({
|
|
|
18594
18594
|
DebouncedColorInput,
|
|
18595
18595
|
{
|
|
18596
18596
|
disabled: !canEdit,
|
|
18597
|
-
value:
|
|
18597
|
+
value: chunkRHNJ4IU2_js.normalizeHexColor(cc.clrFrom, "#ffffff"),
|
|
18598
18598
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
18599
18599
|
onCommit: (hex) => updateEffects({
|
|
18600
18600
|
clrChange: {
|
|
@@ -18612,7 +18612,7 @@ function ColorChangeSection({
|
|
|
18612
18612
|
DebouncedColorInput,
|
|
18613
18613
|
{
|
|
18614
18614
|
disabled: !canEdit || Boolean(cc.clrToTransparent),
|
|
18615
|
-
value:
|
|
18615
|
+
value: chunkRHNJ4IU2_js.normalizeHexColor(cc.clrTo, "#000000"),
|
|
18616
18616
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
18617
18617
|
onCommit: (hex) => updateEffects({
|
|
18618
18618
|
clrChange: {
|
|
@@ -18672,7 +18672,7 @@ function ColorWashSection({
|
|
|
18672
18672
|
DebouncedColorInput,
|
|
18673
18673
|
{
|
|
18674
18674
|
disabled: !canEdit,
|
|
18675
|
-
value:
|
|
18675
|
+
value: chunkRHNJ4IU2_js.normalizeHexColor(wash.color, "#0066cc"),
|
|
18676
18676
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
18677
18677
|
onCommit: (hex) => updateEffects({
|
|
18678
18678
|
colorWash: { color: hex, opacity: wash.opacity ?? 40 }
|
|
@@ -18775,8 +18775,8 @@ function DuotonePanel({
|
|
|
18775
18775
|
}
|
|
18776
18776
|
});
|
|
18777
18777
|
}, [effects, onUpdateElement]);
|
|
18778
|
-
const shadowColor =
|
|
18779
|
-
const highlightColor =
|
|
18778
|
+
const shadowColor = chunkRHNJ4IU2_js.normalizeHexColor(effects?.duotone?.color1, "#000000");
|
|
18779
|
+
const highlightColor = chunkRHNJ4IU2_js.normalizeHexColor(effects?.duotone?.color2, "#ffffff");
|
|
18780
18780
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px]", children: [
|
|
18781
18781
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground font-medium", children: t("pptx.image.duotone") }),
|
|
18782
18782
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
@@ -18807,7 +18807,7 @@ function DuotonePanel({
|
|
|
18807
18807
|
] }),
|
|
18808
18808
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
18809
18809
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground text-[10px]", children: t("pptx.image.duotonePresets") }),
|
|
18810
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children:
|
|
18810
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: chunkMFGD7XVJ_js.DUOTONE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
18811
18811
|
"button",
|
|
18812
18812
|
{
|
|
18813
18813
|
type: "button",
|
|
@@ -18945,7 +18945,7 @@ function ImageCropSection({
|
|
|
18945
18945
|
onUpdateElement
|
|
18946
18946
|
}) {
|
|
18947
18947
|
const { t } = reactI18next.useTranslation();
|
|
18948
|
-
if (!(0,
|
|
18948
|
+
if (!(0, chunkRHNJ4IU2_js.dist_exports.isImageLikeElement)(selectedElement)) {
|
|
18949
18949
|
return null;
|
|
18950
18950
|
}
|
|
18951
18951
|
const croppable = pptx.cropResetState(selectedElement, canEdit, true).enabled;
|
|
@@ -18962,7 +18962,7 @@ function ImageCropSection({
|
|
|
18962
18962
|
max: MAX_CROP_PERCENT,
|
|
18963
18963
|
disabled: !croppable,
|
|
18964
18964
|
className: "accent-primary",
|
|
18965
|
-
value: Math.round(
|
|
18965
|
+
value: Math.round(chunkRHNJ4IU2_js.clampCropValue(selectedElement[key]) * 100),
|
|
18966
18966
|
onChange: (e) => onUpdateElement({
|
|
18967
18967
|
[key]: Number(e.target.value) / 100
|
|
18968
18968
|
})
|
|
@@ -19026,7 +19026,7 @@ function ImagePropertiesPanel({
|
|
|
19026
19026
|
{
|
|
19027
19027
|
rows: 2,
|
|
19028
19028
|
disabled: !canEdit,
|
|
19029
|
-
className:
|
|
19029
|
+
className: chunkRHNJ4IU2_js.cn(INPUT2, "resize-none text-[11px]"),
|
|
19030
19030
|
value: selectedElement.altText ?? "",
|
|
19031
19031
|
onChange: (e) => onUpdateElement({
|
|
19032
19032
|
altText: e.target.value
|
|
@@ -19966,7 +19966,7 @@ function AccessibilityTextSection({
|
|
|
19966
19966
|
rows: 2,
|
|
19967
19967
|
disabled: !canEdit,
|
|
19968
19968
|
placeholder: t("pptx.elementAccessibility.altTextPlaceholder"),
|
|
19969
|
-
className:
|
|
19969
|
+
className: chunkRHNJ4IU2_js.cn(INPUT2, "resize-none text-[11px]"),
|
|
19970
19970
|
value: fields.altText,
|
|
19971
19971
|
onChange: (e) => onUpdateElement({ altText: e.target.value })
|
|
19972
19972
|
}
|
|
@@ -19980,7 +19980,7 @@ function AccessibilityTextSection({
|
|
|
19980
19980
|
type: "text",
|
|
19981
19981
|
disabled: !canEdit,
|
|
19982
19982
|
placeholder: t("pptx.elementAccessibility.titlePlaceholder"),
|
|
19983
|
-
className:
|
|
19983
|
+
className: chunkRHNJ4IU2_js.cn(INPUT2, "text-[11px]"),
|
|
19984
19984
|
value: fields.title,
|
|
19985
19985
|
onChange: (e) => onUpdateElement({ title: e.target.value })
|
|
19986
19986
|
}
|
|
@@ -20096,7 +20096,7 @@ var SHADOW_EFFECT_CONFIGS = [
|
|
|
20096
20096
|
angle = (Math.atan2(offsetY, offsetX) * 180 / Math.PI + 360) % 360;
|
|
20097
20097
|
}
|
|
20098
20098
|
return {
|
|
20099
|
-
shadowColor:
|
|
20099
|
+
shadowColor: chunkRHNJ4IU2_js.normalizeHexColor(s?.shadowColor, "#000000"),
|
|
20100
20100
|
shadowOpacity: s?.shadowOpacity ?? 0.35,
|
|
20101
20101
|
shadowBlur: s?.shadowBlur ?? 6,
|
|
20102
20102
|
shadowAngle: angle,
|
|
@@ -20112,7 +20112,7 @@ var SHADOW_EFFECT_CONFIGS = [
|
|
|
20112
20112
|
key: "sc",
|
|
20113
20113
|
label: "Shadow Color",
|
|
20114
20114
|
type: "color",
|
|
20115
|
-
read: (s) =>
|
|
20115
|
+
read: (s) => chunkRHNJ4IU2_js.normalizeHexColor(s?.shadowColor, "#000000"),
|
|
20116
20116
|
write: (v) => ({ shadowColor: String(v) })
|
|
20117
20117
|
},
|
|
20118
20118
|
{
|
|
@@ -20248,7 +20248,7 @@ var SHADOW_EFFECT_CONFIGS = [
|
|
|
20248
20248
|
label: "Inner Shadow",
|
|
20249
20249
|
isOn: (s) => Boolean(s?.innerShadowColor) && s?.innerShadowColor !== "transparent",
|
|
20250
20250
|
onEnable: (s) => ({
|
|
20251
|
-
innerShadowColor:
|
|
20251
|
+
innerShadowColor: chunkRHNJ4IU2_js.normalizeHexColor(s?.innerShadowColor, "#000000"),
|
|
20252
20252
|
innerShadowOpacity: s?.innerShadowOpacity ?? 0.5,
|
|
20253
20253
|
innerShadowBlur: s?.innerShadowBlur ?? 5,
|
|
20254
20254
|
innerShadowOffsetX: s?.innerShadowOffsetX ?? 0,
|
|
@@ -20260,7 +20260,7 @@ var SHADOW_EFFECT_CONFIGS = [
|
|
|
20260
20260
|
key: "isc",
|
|
20261
20261
|
label: "Color",
|
|
20262
20262
|
type: "color",
|
|
20263
|
-
read: (s) =>
|
|
20263
|
+
read: (s) => chunkRHNJ4IU2_js.normalizeHexColor(s?.innerShadowColor, "#000000"),
|
|
20264
20264
|
write: (v) => ({ innerShadowColor: String(v) })
|
|
20265
20265
|
},
|
|
20266
20266
|
{
|
|
@@ -20770,7 +20770,7 @@ function ColorPickerRow({
|
|
|
20770
20770
|
pushColor(color);
|
|
20771
20771
|
};
|
|
20772
20772
|
const handleEyedropper = async () => {
|
|
20773
|
-
const color = await
|
|
20773
|
+
const color = await chunkRHNJ4IU2_js.openNativeEyeDropper();
|
|
20774
20774
|
if (color) {
|
|
20775
20775
|
commit(color);
|
|
20776
20776
|
}
|
|
@@ -20853,9 +20853,9 @@ function GradientStopRow({
|
|
|
20853
20853
|
"input",
|
|
20854
20854
|
{
|
|
20855
20855
|
type: "color",
|
|
20856
|
-
value:
|
|
20856
|
+
value: chunkRHNJ4IU2_js.normalizeHexColor(stop2.color, "#3b82f6"),
|
|
20857
20857
|
onChange: (e) => {
|
|
20858
|
-
const hex =
|
|
20858
|
+
const hex = chunkRHNJ4IU2_js.normalizeHexColor(e.target.value, "#3b82f6");
|
|
20859
20859
|
patchStop({ color: hex, colorRef: void 0 });
|
|
20860
20860
|
pushColor(hex);
|
|
20861
20861
|
},
|
|
@@ -20980,7 +20980,7 @@ function FillAdvancedControls({
|
|
|
20980
20980
|
onClick: () => onUpdateGradientStops([
|
|
20981
20981
|
...gradientStops,
|
|
20982
20982
|
{
|
|
20983
|
-
color:
|
|
20983
|
+
color: chunkRHNJ4IU2_js.normalizeHexColor(style?.fillColor, chunkRHNJ4IU2_js.DEFAULT_FILL_COLOR),
|
|
20984
20984
|
position: 50,
|
|
20985
20985
|
opacity: 1
|
|
20986
20986
|
}
|
|
@@ -20994,9 +20994,9 @@ function FillAdvancedControls({
|
|
|
20994
20994
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${COL2} flex flex-col gap-2`, children: [
|
|
20995
20995
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: "Pattern" }),
|
|
20996
20996
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-8 gap-1 max-h-48 overflow-y-auto rounded border border-border p-2", children: PATTERN_PRESET_OPTIONS.map((opt) => {
|
|
20997
|
-
const fgColor =
|
|
20998
|
-
const bgColor =
|
|
20999
|
-
const svgPattern =
|
|
20997
|
+
const fgColor = chunkRHNJ4IU2_js.normalizeHexColor(style?.fillColor, chunkRHNJ4IU2_js.DEFAULT_FILL_COLOR);
|
|
20998
|
+
const bgColor = chunkRHNJ4IU2_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff");
|
|
20999
|
+
const svgPattern = chunkRHNJ4IU2_js.getPatternSvg(opt.value, fgColor, bgColor);
|
|
21000
21000
|
const isSelected = (style.fillPatternPreset || "pct20") === opt.value;
|
|
21001
21001
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
21002
21002
|
"button",
|
|
@@ -21029,7 +21029,7 @@ function FillAdvancedControls({
|
|
|
21029
21029
|
{
|
|
21030
21030
|
label: t("pptx.fillAdvanced.foregroundColor"),
|
|
21031
21031
|
prefix: "pattern-fg",
|
|
21032
|
-
value:
|
|
21032
|
+
value: chunkRHNJ4IU2_js.normalizeHexColor(style?.fillColor, chunkRHNJ4IU2_js.DEFAULT_FILL_COLOR),
|
|
21033
21033
|
disabled: isLine,
|
|
21034
21034
|
onChange: (color) => onUpdateShapeStyle({ fillMode: "pattern", fillColor: color })
|
|
21035
21035
|
}
|
|
@@ -21039,7 +21039,7 @@ function FillAdvancedControls({
|
|
|
21039
21039
|
{
|
|
21040
21040
|
label: t("pptx.fillAdvanced.backgroundColor"),
|
|
21041
21041
|
prefix: "pattern-bg",
|
|
21042
|
-
value:
|
|
21042
|
+
value: chunkRHNJ4IU2_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff"),
|
|
21043
21043
|
disabled: isLine,
|
|
21044
21044
|
onChange: (color) => onUpdateShapeStyle({
|
|
21045
21045
|
fillMode: "pattern",
|
|
@@ -21106,11 +21106,11 @@ function QuickStylesGallery({
|
|
|
21106
21106
|
onUpdateShapeStyle
|
|
21107
21107
|
}) {
|
|
21108
21108
|
const { t } = reactI18next.useTranslation();
|
|
21109
|
-
const { viewportWidth } =
|
|
21109
|
+
const { viewportWidth } = chunkMFGD7XVJ_js.useIsMobile();
|
|
21110
21110
|
const swatchMinHeight = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
21111
21111
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
21112
21112
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: t("pptx.shape.quickStyles") }),
|
|
21113
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-6 gap-1", children:
|
|
21113
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-6 gap-1", children: chunkRHNJ4IU2_js.SHAPE_QUICK_STYLES.map((qs, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
21114
21114
|
"button",
|
|
21115
21115
|
{
|
|
21116
21116
|
type: "button",
|
|
@@ -21137,7 +21137,7 @@ function StrokeEffectsSection({
|
|
|
21137
21137
|
{
|
|
21138
21138
|
label: t("pptx.inspector.stroke"),
|
|
21139
21139
|
prefix: "stroke",
|
|
21140
|
-
value:
|
|
21140
|
+
value: chunkRHNJ4IU2_js.normalizeHexColor(style?.strokeColor, chunkRHNJ4IU2_js.DEFAULT_STROKE_COLOR),
|
|
21141
21141
|
selectedRef: style?.strokeColorRef,
|
|
21142
21142
|
onChange: onSetStrokeColor
|
|
21143
21143
|
}
|
|
@@ -21200,7 +21200,7 @@ function StrokeEffectsSection({
|
|
|
21200
21200
|
strokeDash: e.target.value
|
|
21201
21201
|
}),
|
|
21202
21202
|
className: SEL,
|
|
21203
|
-
children:
|
|
21203
|
+
children: chunkRHNJ4IU2_js.STROKE_DASH_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
21204
21204
|
}
|
|
21205
21205
|
)
|
|
21206
21206
|
] }),
|
|
@@ -21290,10 +21290,10 @@ function FillStrokeProperties({
|
|
|
21290
21290
|
return;
|
|
21291
21291
|
}
|
|
21292
21292
|
if (nextMode === "gradient") {
|
|
21293
|
-
const existing =
|
|
21293
|
+
const existing = chunkRHNJ4IU2_js.sanitizeGradientStops(style?.fillGradientStops);
|
|
21294
21294
|
const stops = existing.length >= 2 ? existing : [
|
|
21295
21295
|
{
|
|
21296
|
-
color:
|
|
21296
|
+
color: chunkRHNJ4IU2_js.normalizeHexColor(style?.fillColor, chunkRHNJ4IU2_js.DEFAULT_FILL_COLOR),
|
|
21297
21297
|
position: 0,
|
|
21298
21298
|
opacity: 1
|
|
21299
21299
|
},
|
|
@@ -21318,7 +21318,7 @@ function FillStrokeProperties({
|
|
|
21318
21318
|
onUpdateShapeStyle({ fillMode: "solid" });
|
|
21319
21319
|
};
|
|
21320
21320
|
const gradientStops = selectedGradientStops.length > 0 ? selectedGradientStops : [
|
|
21321
|
-
{ color:
|
|
21321
|
+
{ color: chunkRHNJ4IU2_js.DEFAULT_FILL_COLOR, position: 0 },
|
|
21322
21322
|
{ color: "#ffffff", position: 100 }
|
|
21323
21323
|
];
|
|
21324
21324
|
const showGradient = style?.fillMode === "gradient" || selectedGradientStops.length > 0;
|
|
@@ -21345,7 +21345,7 @@ function FillStrokeProperties({
|
|
|
21345
21345
|
{
|
|
21346
21346
|
label: t("pptx.fill.fill"),
|
|
21347
21347
|
prefix: "fill",
|
|
21348
|
-
value:
|
|
21348
|
+
value: chunkRHNJ4IU2_js.normalizeHexColor(style?.fillColor, chunkRHNJ4IU2_js.DEFAULT_FILL_COLOR),
|
|
21349
21349
|
selectedRef: style?.fillColorRef,
|
|
21350
21350
|
disabled: line,
|
|
21351
21351
|
onChange: onSetFillColor
|
|
@@ -21429,7 +21429,7 @@ function Text3DProperties({
|
|
|
21429
21429
|
"input",
|
|
21430
21430
|
{
|
|
21431
21431
|
type: "color",
|
|
21432
|
-
value:
|
|
21432
|
+
value: chunkRHNJ4IU2_js.normalizeHexColor(t3d?.extrusionColor, "#888888"),
|
|
21433
21433
|
onChange: (e) => {
|
|
21434
21434
|
update3d({ extrusionColor: e.target.value });
|
|
21435
21435
|
pushColor(e.target.value);
|
|
@@ -21620,7 +21620,7 @@ function AdvancedTextFormatting({
|
|
|
21620
21620
|
"input",
|
|
21621
21621
|
{
|
|
21622
21622
|
type: "color",
|
|
21623
|
-
value:
|
|
21623
|
+
value: chunkRHNJ4IU2_js.normalizeHexColor(ts?.highlightColor, "#ffff00"),
|
|
21624
21624
|
onChange: (e) => {
|
|
21625
21625
|
onUpdateTextStyle({ highlightColor: e.target.value });
|
|
21626
21626
|
pushColor(e.target.value);
|
|
@@ -21924,7 +21924,7 @@ function TextEffectsPanel({
|
|
|
21924
21924
|
"input",
|
|
21925
21925
|
{
|
|
21926
21926
|
type: "color",
|
|
21927
|
-
value:
|
|
21927
|
+
value: chunkRHNJ4IU2_js.normalizeHexColor(ts?.textShadowColor, "#000000"),
|
|
21928
21928
|
onChange: (e) => {
|
|
21929
21929
|
onUpdateTextStyle({ textShadowColor: e.target.value });
|
|
21930
21930
|
pushColor(e.target.value);
|
|
@@ -22031,7 +22031,7 @@ function TextEffectsPanel({
|
|
|
22031
22031
|
"input",
|
|
22032
22032
|
{
|
|
22033
22033
|
type: "color",
|
|
22034
|
-
value:
|
|
22034
|
+
value: chunkRHNJ4IU2_js.normalizeHexColor(ts?.textGlowColor, "#ffff00"),
|
|
22035
22035
|
onChange: (e) => {
|
|
22036
22036
|
onUpdateTextStyle({ textGlowColor: e.target.value });
|
|
22037
22037
|
pushColor(e.target.value);
|
|
@@ -22130,7 +22130,7 @@ function TextAdvancedSections({
|
|
|
22130
22130
|
canEdit,
|
|
22131
22131
|
onUpdateTextStyle
|
|
22132
22132
|
}) {
|
|
22133
|
-
if (!(0,
|
|
22133
|
+
if (!(0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(selectedElement)) {
|
|
22134
22134
|
return null;
|
|
22135
22135
|
}
|
|
22136
22136
|
const ts = selectedElement.textStyle;
|
|
@@ -22159,22 +22159,22 @@ function ShapeTextPanels({
|
|
|
22159
22159
|
}) {
|
|
22160
22160
|
const { t } = reactI18next.useTranslation();
|
|
22161
22161
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
22162
|
-
(0,
|
|
22162
|
+
(0, chunkRHNJ4IU2_js.dist_exports.hasShapeProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
22163
22163
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.shape.type", "Shape Type") }),
|
|
22164
22164
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22165
22165
|
WebSelect,
|
|
22166
22166
|
{
|
|
22167
22167
|
value: selectedElement.shapeType || "rect",
|
|
22168
22168
|
disabled: !canEdit,
|
|
22169
|
-
className:
|
|
22169
|
+
className: chunkRHNJ4IU2_js.cn(INPUT2, "w-full"),
|
|
22170
22170
|
onChange: (e) => onUpdateElement({
|
|
22171
22171
|
shapeType: e.target.value
|
|
22172
22172
|
}),
|
|
22173
|
-
children:
|
|
22173
|
+
children: chunkRHNJ4IU2_js.SHAPE_PRESETS.filter((p) => p.type !== "connector").map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.type, children: t(p.i18nKey) }, p.type))
|
|
22174
22174
|
}
|
|
22175
22175
|
)
|
|
22176
22176
|
] }),
|
|
22177
|
-
(0,
|
|
22177
|
+
(0, chunkRHNJ4IU2_js.dist_exports.hasShapeProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, "data-pptx-fill-stroke": true, "data-pptx-inspector-section": "fill-stroke", children: [
|
|
22178
22178
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.shape.fillStroke", "Fill & Stroke") }),
|
|
22179
22179
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22180
22180
|
FillStrokeProperties,
|
|
@@ -22182,7 +22182,7 @@ function ShapeTextPanels({
|
|
|
22182
22182
|
selectedElement,
|
|
22183
22183
|
selectedShapeStyle: selectedElement.shapeStyle,
|
|
22184
22184
|
selectedShapeType: selectedElement.shapeType,
|
|
22185
|
-
selectedGradientStops:
|
|
22185
|
+
selectedGradientStops: chunkRHNJ4IU2_js.sanitizeGradientStops(
|
|
22186
22186
|
selectedElement.shapeStyle?.fillGradientStops
|
|
22187
22187
|
),
|
|
22188
22188
|
canEdit,
|
|
@@ -22192,7 +22192,7 @@ function ShapeTextPanels({
|
|
|
22192
22192
|
}
|
|
22193
22193
|
)
|
|
22194
22194
|
] }),
|
|
22195
|
-
(0,
|
|
22195
|
+
(0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, "data-pptx-text-card": true, children: [
|
|
22196
22196
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.text.title", "Text") }),
|
|
22197
22197
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-1.5 text-[11px]", children: [
|
|
22198
22198
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -22218,7 +22218,7 @@ function ShapeTextPanels({
|
|
|
22218
22218
|
{
|
|
22219
22219
|
disabled: !canEdit,
|
|
22220
22220
|
ariaLabel: "Text Color",
|
|
22221
|
-
value:
|
|
22221
|
+
value: chunkRHNJ4IU2_js.normalizeHexColor(selectedElement.textStyle?.color, "#000000"),
|
|
22222
22222
|
className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
|
|
22223
22223
|
onCommit: (hex) => onUpdateTextStyle({ color: hex, colorRef: void 0 })
|
|
22224
22224
|
}
|
|
@@ -22310,7 +22310,7 @@ function TextFormatToggle({
|
|
|
22310
22310
|
{
|
|
22311
22311
|
type: "button",
|
|
22312
22312
|
disabled,
|
|
22313
|
-
className:
|
|
22313
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
22314
22314
|
"px-2 py-1 rounded text-[11px] transition-colors max-md:min-w-[44px]! max-md:min-h-[44px]!",
|
|
22315
22315
|
italic && "italic",
|
|
22316
22316
|
underline && "underline",
|
|
@@ -22468,7 +22468,7 @@ var THUMB_COMPONENTS = {
|
|
|
22468
22468
|
chevron: ChevronThumb,
|
|
22469
22469
|
bending: BendingThumb
|
|
22470
22470
|
};
|
|
22471
|
-
var LAYOUT_DESCRIPTORS =
|
|
22471
|
+
var LAYOUT_DESCRIPTORS = chunkRHNJ4IU2_js.dist_exports.SWITCHABLE_LAYOUT_TYPES.map((type) => ({
|
|
22472
22472
|
type,
|
|
22473
22473
|
i18nKey: `pptx.smartart.category.${type}`
|
|
22474
22474
|
}));
|
|
@@ -22496,7 +22496,7 @@ function SmartArtLayoutSwitcher({
|
|
|
22496
22496
|
type: "button",
|
|
22497
22497
|
"data-testid": `smartart-layout-${type}`,
|
|
22498
22498
|
disabled: !canEdit,
|
|
22499
|
-
className:
|
|
22499
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
22500
22500
|
"flex flex-col items-center gap-0.5 rounded border p-1.5 transition-colors",
|
|
22501
22501
|
"text-[9px] leading-tight",
|
|
22502
22502
|
isActive ? "border-primary bg-primary/15 text-primary" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
@@ -22575,7 +22575,7 @@ function SmartArtNodeStyleControls({
|
|
|
22575
22575
|
disabled: !canEdit,
|
|
22576
22576
|
"aria-label": `Bold ${label}`,
|
|
22577
22577
|
"aria-pressed": bold,
|
|
22578
|
-
className:
|
|
22578
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
22579
22579
|
EMPHASIS_BTN,
|
|
22580
22580
|
"font-bold",
|
|
22581
22581
|
bold ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground"
|
|
@@ -22591,7 +22591,7 @@ function SmartArtNodeStyleControls({
|
|
|
22591
22591
|
disabled: !canEdit,
|
|
22592
22592
|
"aria-label": `Italic ${label}`,
|
|
22593
22593
|
"aria-pressed": italic,
|
|
22594
|
-
className:
|
|
22594
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
22595
22595
|
EMPHASIS_BTN,
|
|
22596
22596
|
"italic",
|
|
22597
22597
|
italic ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground"
|
|
@@ -22630,7 +22630,7 @@ function SmartArtNodeRow({
|
|
|
22630
22630
|
"div",
|
|
22631
22631
|
{
|
|
22632
22632
|
role: "listitem",
|
|
22633
|
-
className:
|
|
22633
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
22634
22634
|
"rounded border bg-background/60 p-1.5",
|
|
22635
22635
|
isChild ? "border-border/60 ml-4" : "border-border"
|
|
22636
22636
|
),
|
|
@@ -22645,7 +22645,7 @@ function SmartArtNodeRow({
|
|
|
22645
22645
|
"data-testid": "smartart-node-text",
|
|
22646
22646
|
disabled: !canEdit,
|
|
22647
22647
|
"aria-label": label,
|
|
22648
|
-
className:
|
|
22648
|
+
className: chunkRHNJ4IU2_js.cn(INPUT2, "flex-1 text-[11px] py-0.5"),
|
|
22649
22649
|
value: text,
|
|
22650
22650
|
onChange: (e) => onChangeText(nodeId, e.target.value),
|
|
22651
22651
|
onKeyDown: (e) => onKeyDown(e, nodeId),
|
|
@@ -22694,7 +22694,7 @@ function SmartArtNodeRow({
|
|
|
22694
22694
|
{
|
|
22695
22695
|
type: "button",
|
|
22696
22696
|
disabled: !canEdit || removeDisabled,
|
|
22697
|
-
className:
|
|
22697
|
+
className: chunkRHNJ4IU2_js.cn(MINI_BTN, "hover:text-red-400"),
|
|
22698
22698
|
onClick: () => onRemove(nodeId),
|
|
22699
22699
|
"aria-label": `Remove ${label}`,
|
|
22700
22700
|
title: removeDisabled ? t("pptx.smartArt.layoutMinimum") : t("pptx.smartArt.remove"),
|
|
@@ -22737,7 +22737,7 @@ function SmartArtStyleControls({
|
|
|
22737
22737
|
disabled: !canEdit,
|
|
22738
22738
|
"data-testid": "smartart-color-scheme",
|
|
22739
22739
|
"aria-label": t("pptx.smartart.colorScheme"),
|
|
22740
|
-
className:
|
|
22740
|
+
className: chunkRHNJ4IU2_js.cn(INPUT2, "w-full"),
|
|
22741
22741
|
value: colorScheme,
|
|
22742
22742
|
onChange: (e) => onChangeColorScheme(e.target.value),
|
|
22743
22743
|
children: colorSchemes.map((cs) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: cs, children: pptx.schemaLabel(pptx.SMARTART_COLOR_SCHEME_LABEL_KEYS, cs, translate) }, cs))
|
|
@@ -22752,7 +22752,7 @@ function SmartArtStyleControls({
|
|
|
22752
22752
|
type: "button",
|
|
22753
22753
|
disabled: !canEdit,
|
|
22754
22754
|
"aria-pressed": style === s,
|
|
22755
|
-
className:
|
|
22755
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
22756
22756
|
"flex-1 px-2 py-1 text-[10px] rounded border transition-colors",
|
|
22757
22757
|
style === s ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground hover:bg-muted"
|
|
22758
22758
|
),
|
|
@@ -22798,7 +22798,7 @@ function SmartArtPropertiesPanel({
|
|
|
22798
22798
|
const reflowed = box ? pptx.rebuildDrawingShapesIfCleared(
|
|
22799
22799
|
newData,
|
|
22800
22800
|
newData.layout,
|
|
22801
|
-
|
|
22801
|
+
chunkMFGD7XVJ_js.resolveSmartArtDataPalette(newData),
|
|
22802
22802
|
newData.style ?? "flat",
|
|
22803
22803
|
"inspector",
|
|
22804
22804
|
box
|
|
@@ -22809,10 +22809,10 @@ function SmartArtPropertiesPanel({
|
|
|
22809
22809
|
applySmartArtData({ ...smartArtData, ...patch });
|
|
22810
22810
|
};
|
|
22811
22811
|
const handleUpdateNodeText = (nodeId, text) => {
|
|
22812
|
-
applySmartArtData((0,
|
|
22812
|
+
applySmartArtData((0, chunkRHNJ4IU2_js.dist_exports.updateSmartArtNodeText)(smartArtData, nodeId, text));
|
|
22813
22813
|
};
|
|
22814
22814
|
const handleChangeNodeStyle = (nodeId, patch) => {
|
|
22815
|
-
const next = (0,
|
|
22815
|
+
const next = (0, chunkRHNJ4IU2_js.dist_exports.setSmartArtNodeStyle)(smartArtData, nodeId, patch);
|
|
22816
22816
|
if (next !== smartArtData) {
|
|
22817
22817
|
applySmartArtData(next);
|
|
22818
22818
|
}
|
|
@@ -22821,17 +22821,17 @@ function SmartArtPropertiesPanel({
|
|
|
22821
22821
|
if (!pptx.canAddTopLevelNode(layout, topLevelCount)) {
|
|
22822
22822
|
return;
|
|
22823
22823
|
}
|
|
22824
|
-
applySmartArtData((0,
|
|
22824
|
+
applySmartArtData((0, chunkRHNJ4IU2_js.dist_exports.addSmartArtNodeAsChild)(smartArtData));
|
|
22825
22825
|
};
|
|
22826
22826
|
const addSubItem = (parentId) => {
|
|
22827
|
-
applySmartArtData((0,
|
|
22827
|
+
applySmartArtData((0, chunkRHNJ4IU2_js.dist_exports.addSmartArtNodeAsChild)(smartArtData, parentId, "Sub-item"));
|
|
22828
22828
|
};
|
|
22829
22829
|
const removeNode = (nodeId) => {
|
|
22830
22830
|
const isTopLevel = !nodes.find((n) => n.id === nodeId)?.parentId;
|
|
22831
22831
|
if (isTopLevel && !pptx.canRemoveTopLevelNode(layout, topLevelCount)) {
|
|
22832
22832
|
return;
|
|
22833
22833
|
}
|
|
22834
|
-
applySmartArtData((0,
|
|
22834
|
+
applySmartArtData((0, chunkRHNJ4IU2_js.dist_exports.removeSmartArtNode)(smartArtData, nodeId));
|
|
22835
22835
|
};
|
|
22836
22836
|
const moveNode = (nodeId, direction) => {
|
|
22837
22837
|
const next = pptx.reorder(smartArtData, nodeId, direction);
|
|
@@ -22987,7 +22987,7 @@ function TableDataGrid({
|
|
|
22987
22987
|
}) {
|
|
22988
22988
|
const { t } = reactI18next.useTranslation();
|
|
22989
22989
|
const grid = pptx.buildTableDataGrid(tableElement);
|
|
22990
|
-
const { viewportWidth } =
|
|
22990
|
+
const { viewportWidth } = chunkMFGD7XVJ_js.useIsMobile();
|
|
22991
22991
|
const gridPlan = pptx.getDenseGridLayoutPlan(viewportWidth);
|
|
22992
22992
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
22993
22993
|
const stickyGutterClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10" : "";
|
|
@@ -23399,7 +23399,7 @@ function TableCellColorField({
|
|
|
23399
23399
|
disabled,
|
|
23400
23400
|
onCommit
|
|
23401
23401
|
}) {
|
|
23402
|
-
const hex =
|
|
23402
|
+
const hex = chunkRHNJ4IU2_js.normalizeHexColor(value, fallback);
|
|
23403
23403
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
23404
23404
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: label }),
|
|
23405
23405
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -23444,12 +23444,7 @@ function TableCellFormattingPanel({
|
|
|
23444
23444
|
}
|
|
23445
23445
|
return {
|
|
23446
23446
|
...row,
|
|
23447
|
-
cells: row.cells.map((c, ci) =>
|
|
23448
|
-
if (ci !== columnIndex) {
|
|
23449
|
-
return c;
|
|
23450
|
-
}
|
|
23451
|
-
return { ...c, style: { ...cs, ...updates } };
|
|
23452
|
-
})
|
|
23447
|
+
cells: row.cells.map((c, ci) => ci === columnIndex ? pptx.withCellStyle(c, updates) : c)
|
|
23453
23448
|
};
|
|
23454
23449
|
});
|
|
23455
23450
|
onUpdateTableData({ rows: newRows });
|
|
@@ -23515,7 +23510,7 @@ function TableCellFormattingPanel({
|
|
|
23515
23510
|
{
|
|
23516
23511
|
type: "button",
|
|
23517
23512
|
disabled: !canEdit,
|
|
23518
|
-
className:
|
|
23513
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
23519
23514
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
23520
23515
|
cls,
|
|
23521
23516
|
cs[key] ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
@@ -23534,7 +23529,7 @@ function TableCellFormattingPanel({
|
|
|
23534
23529
|
{
|
|
23535
23530
|
type: "button",
|
|
23536
23531
|
disabled: !canEdit,
|
|
23537
|
-
className:
|
|
23532
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
23538
23533
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
23539
23534
|
cs.align === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
23540
23535
|
),
|
|
@@ -23552,7 +23547,7 @@ function TableCellFormattingPanel({
|
|
|
23552
23547
|
{
|
|
23553
23548
|
type: "button",
|
|
23554
23549
|
disabled: !canEdit,
|
|
23555
|
-
className:
|
|
23550
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
23556
23551
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
23557
23552
|
cs.vAlign === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
23558
23553
|
),
|
|
@@ -23575,7 +23570,7 @@ function TableCellFormattingPanel({
|
|
|
23575
23570
|
DebouncedColorInput,
|
|
23576
23571
|
{
|
|
23577
23572
|
disabled: !canEdit,
|
|
23578
|
-
value:
|
|
23573
|
+
value: chunkRHNJ4IU2_js.normalizeHexColor(cs[colorKey], "#374151"),
|
|
23579
23574
|
className: "w-7 h-6 rounded border border-border bg-transparent cursor-pointer shrink-0",
|
|
23580
23575
|
onCommit: (hex) => updateCellStyle({ [colorKey]: hex })
|
|
23581
23576
|
}
|
|
@@ -23585,7 +23580,7 @@ function TableCellFormattingPanel({
|
|
|
23585
23580
|
{
|
|
23586
23581
|
type: "number",
|
|
23587
23582
|
disabled: !canEdit,
|
|
23588
|
-
className:
|
|
23583
|
+
className: chunkRHNJ4IU2_js.cn(INPUT2, "w-14"),
|
|
23589
23584
|
min: 0,
|
|
23590
23585
|
max: 10,
|
|
23591
23586
|
value: cs[widthKey] ?? 1,
|
|
@@ -23601,7 +23596,7 @@ function TableCellFormattingPanel({
|
|
|
23601
23596
|
{
|
|
23602
23597
|
type: "button",
|
|
23603
23598
|
disabled: !canEdit,
|
|
23604
|
-
className:
|
|
23599
|
+
className: chunkRHNJ4IU2_js.cn(BTN2, "text-center"),
|
|
23605
23600
|
onClick: () => {
|
|
23606
23601
|
const newRows = pptx.computeMergeCellRight(td, rowIndex, columnIndex);
|
|
23607
23602
|
if (newRows) {
|
|
@@ -23616,7 +23611,7 @@ function TableCellFormattingPanel({
|
|
|
23616
23611
|
{
|
|
23617
23612
|
type: "button",
|
|
23618
23613
|
disabled: !canEdit,
|
|
23619
|
-
className:
|
|
23614
|
+
className: chunkRHNJ4IU2_js.cn(BTN2, "text-center"),
|
|
23620
23615
|
onClick: () => {
|
|
23621
23616
|
const newRows = pptx.computeMergeCellDown(td, rowIndex, columnIndex);
|
|
23622
23617
|
if (newRows) {
|
|
@@ -23631,7 +23626,7 @@ function TableCellFormattingPanel({
|
|
|
23631
23626
|
{
|
|
23632
23627
|
type: "button",
|
|
23633
23628
|
disabled: !canEdit,
|
|
23634
|
-
className:
|
|
23629
|
+
className: chunkRHNJ4IU2_js.cn(BTN2, "text-center"),
|
|
23635
23630
|
onClick: () => {
|
|
23636
23631
|
const newRows = pptx.computeSplitCell(td, rowIndex, columnIndex);
|
|
23637
23632
|
if (newRows) {
|
|
@@ -23817,7 +23812,7 @@ function TableStyleEditor({
|
|
|
23817
23812
|
const { t } = reactI18next.useTranslation();
|
|
23818
23813
|
const themeColorMap = useThemeColorMap();
|
|
23819
23814
|
const [activeStyleId, setActiveStyleId] = React97.useState(
|
|
23820
|
-
styleId ? (0,
|
|
23815
|
+
styleId ? (0, chunkRHNJ4IU2_js.dist_exports.normalizeTableStyleGuid)(styleId) : ""
|
|
23821
23816
|
);
|
|
23822
23817
|
const [selectedPart, setSelectedPart] = React97.useState("wholeTbl");
|
|
23823
23818
|
const entry = activeStyleId ? styleMap?.[activeStyleId] : void 0;
|
|
@@ -23838,8 +23833,8 @@ function TableStyleEditor({
|
|
|
23838
23833
|
return;
|
|
23839
23834
|
}
|
|
23840
23835
|
const nextMap = { ...styleMap ?? {} };
|
|
23841
|
-
const created = (0,
|
|
23842
|
-
(0,
|
|
23836
|
+
const created = (0, chunkRHNJ4IU2_js.dist_exports.createTableStyleEntry)(nextMap, { styleName: name, basedOn: entry });
|
|
23837
|
+
(0, chunkRHNJ4IU2_js.dist_exports.addTableStyleToMap)(nextMap, created);
|
|
23843
23838
|
onStyleMapChange(nextMap);
|
|
23844
23839
|
setActiveStyleId(created.styleId);
|
|
23845
23840
|
onAssignStyle?.(created.styleId);
|
|
@@ -23849,7 +23844,7 @@ function TableStyleEditor({
|
|
|
23849
23844
|
return;
|
|
23850
23845
|
}
|
|
23851
23846
|
const nextMap = { ...styleMap };
|
|
23852
|
-
(0,
|
|
23847
|
+
(0, chunkRHNJ4IU2_js.dist_exports.deleteTableStyleFromMap)(nextMap, entry.styleId);
|
|
23853
23848
|
onStyleMapChange(nextMap);
|
|
23854
23849
|
onDeleteStyle(entry.styleId);
|
|
23855
23850
|
onClose();
|
|
@@ -23903,7 +23898,7 @@ function TablePropertiesPanel({
|
|
|
23903
23898
|
const updateMergeRows = (rows) => {
|
|
23904
23899
|
const tableData = { ...td, rows };
|
|
23905
23900
|
const updates = { tableData };
|
|
23906
|
-
const rawXml = (0,
|
|
23901
|
+
const rawXml = (0, chunkRHNJ4IU2_js.dist_exports.updateMergeAttrsInRawXml)(tableElement, tableData);
|
|
23907
23902
|
if (rawXml) {
|
|
23908
23903
|
updates.rawXml = rawXml;
|
|
23909
23904
|
}
|
|
@@ -23969,7 +23964,7 @@ function TablePropertiesPanel({
|
|
|
23969
23964
|
] }),
|
|
23970
23965
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
23971
23966
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.table.stylePresets") }),
|
|
23972
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children:
|
|
23967
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children: chunkRHNJ4IU2_js.TABLE_STYLE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
23973
23968
|
"button",
|
|
23974
23969
|
{
|
|
23975
23970
|
type: "button",
|
|
@@ -24197,7 +24192,7 @@ function ElementInspectorBody({
|
|
|
24197
24192
|
box: { width: selectedElement.width, height: selectedElement.height }
|
|
24198
24193
|
}
|
|
24199
24194
|
),
|
|
24200
|
-
(0,
|
|
24195
|
+
(0, chunkRHNJ4IU2_js.dist_exports.isImageLikeElement)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
24201
24196
|
ImagePropertiesPanel,
|
|
24202
24197
|
{
|
|
24203
24198
|
selectedElement,
|
|
@@ -24362,7 +24357,7 @@ function CommentMentionTextarea({
|
|
|
24362
24357
|
"data-testid": "pptx-comment-mention-option",
|
|
24363
24358
|
role: "option",
|
|
24364
24359
|
"aria-selected": index === safeHighlighted,
|
|
24365
|
-
className:
|
|
24360
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
24366
24361
|
"block w-full px-2 py-1 text-left text-[11px] hover:bg-accent",
|
|
24367
24362
|
index === safeHighlighted && "bg-accent"
|
|
24368
24363
|
),
|
|
@@ -24485,7 +24480,7 @@ function InspectorCommentRow({
|
|
|
24485
24480
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
24486
24481
|
"div",
|
|
24487
24482
|
{
|
|
24488
|
-
className:
|
|
24483
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
24489
24484
|
"rounded border border-border bg-card p-2",
|
|
24490
24485
|
depth > 0 && "ml-3 border-l-2 border-l-primary/40"
|
|
24491
24486
|
),
|
|
@@ -24498,7 +24493,7 @@ function InspectorCommentRow({
|
|
|
24498
24493
|
t("pptx.comments.resolved")
|
|
24499
24494
|
] })
|
|
24500
24495
|
] }),
|
|
24501
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children:
|
|
24496
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children: chunkRHNJ4IU2_js.formatCommentTimestamp(comment.createdAt) })
|
|
24502
24497
|
] }),
|
|
24503
24498
|
comment.elementId && (targetElement ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
24504
24499
|
"button",
|
|
@@ -24506,12 +24501,12 @@ function InspectorCommentRow({
|
|
|
24506
24501
|
type: "button",
|
|
24507
24502
|
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",
|
|
24508
24503
|
title: t("pptx.comments.commentingOn", {
|
|
24509
|
-
element:
|
|
24504
|
+
element: chunkRHNJ4IU2_js.getElementLabel(targetElement)
|
|
24510
24505
|
}),
|
|
24511
24506
|
onClick: () => onSelectElement(targetElement.id),
|
|
24512
24507
|
children: [
|
|
24513
24508
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
|
|
24514
|
-
|
|
24509
|
+
chunkRHNJ4IU2_js.getElementLabel(targetElement)
|
|
24515
24510
|
]
|
|
24516
24511
|
}
|
|
24517
24512
|
) : /* @__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") })),
|
|
@@ -24580,7 +24575,7 @@ function InspectorCommentRow({
|
|
|
24580
24575
|
"button",
|
|
24581
24576
|
{
|
|
24582
24577
|
type: "button",
|
|
24583
|
-
className:
|
|
24578
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
24584
24579
|
"inline-flex items-center justify-center p-1.5 border-l border-border transition-colors",
|
|
24585
24580
|
comment.resolved ? "bg-green-900/40 text-green-300 hover:bg-green-900/60" : "hover:bg-accent text-foreground hover:text-foreground"
|
|
24586
24581
|
),
|
|
@@ -24723,7 +24718,7 @@ function InspectorCommentsSection({
|
|
|
24723
24718
|
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: [
|
|
24724
24719
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
|
|
24725
24720
|
t("pptx.comments.commentingOn", {
|
|
24726
|
-
element:
|
|
24721
|
+
element: chunkRHNJ4IU2_js.getElementLabel(selectedElement)
|
|
24727
24722
|
})
|
|
24728
24723
|
] }),
|
|
24729
24724
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -24734,7 +24729,7 @@ function InspectorCommentsSection({
|
|
|
24734
24729
|
authors: commentAuthors,
|
|
24735
24730
|
rows: 2,
|
|
24736
24731
|
placeholder: selectedElement ? t("pptx.comments.addOnElement", {
|
|
24737
|
-
element:
|
|
24732
|
+
element: chunkRHNJ4IU2_js.getElementLabel(selectedElement)
|
|
24738
24733
|
}) : t("pptx.comments.addPlaceholder"),
|
|
24739
24734
|
className: "w-full bg-muted border border-border rounded px-2 py-1 text-xs resize-y outline-none focus:border-primary",
|
|
24740
24735
|
onChange: onSetCommentDraft,
|
|
@@ -24747,7 +24742,7 @@ function InspectorCommentsSection({
|
|
|
24747
24742
|
type: "button",
|
|
24748
24743
|
onClick: onAddComment,
|
|
24749
24744
|
disabled: !commentDraft.trim(),
|
|
24750
|
-
className:
|
|
24745
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
24751
24746
|
"w-full inline-flex items-center justify-center gap-1 rounded px-2 py-1 text-[11px] font-medium transition-colors max-md:min-h-[44px]!",
|
|
24752
24747
|
commentDraft.trim() ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
|
|
24753
24748
|
),
|
|
@@ -24761,7 +24756,7 @@ function InspectorCommentsSection({
|
|
|
24761
24756
|
] });
|
|
24762
24757
|
}
|
|
24763
24758
|
function elementLabel(element) {
|
|
24764
|
-
const text = (0,
|
|
24759
|
+
const text = (0, chunkRHNJ4IU2_js.dist_exports.hasTextProperties)(element) ? (element.text || "").slice(0, 24) : void 0;
|
|
24765
24760
|
return text || element.type;
|
|
24766
24761
|
}
|
|
24767
24762
|
function InspectorElementsTab({
|
|
@@ -24788,13 +24783,13 @@ function InspectorElementsTab({
|
|
|
24788
24783
|
};
|
|
24789
24784
|
if (!activeSlide) {
|
|
24790
24785
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
24791
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
24786
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkRHNJ4IU2_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
|
|
24792
24787
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground italic", children: t("pptx.inspector.noSlideSelected") })
|
|
24793
24788
|
] });
|
|
24794
24789
|
}
|
|
24795
24790
|
const elements = activeSlide.elements || [];
|
|
24796
24791
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", "data-pptx-elements-tab": true, children: [
|
|
24797
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
24792
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkRHNJ4IU2_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
|
|
24798
24793
|
[...elements].reverse().map((el, reversedIndex) => {
|
|
24799
24794
|
const index = elements.length - 1 - reversedIndex;
|
|
24800
24795
|
const selected = selectedElementId === el.id || selectedElementIds.includes(el.id);
|
|
@@ -24802,7 +24797,7 @@ function InspectorElementsTab({
|
|
|
24802
24797
|
"div",
|
|
24803
24798
|
{
|
|
24804
24799
|
title: `${el.type} - ${el.id}`,
|
|
24805
|
-
className:
|
|
24800
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
24806
24801
|
"flex items-center gap-2 px-2 py-1 rounded cursor-pointer transition-colors",
|
|
24807
24802
|
selected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground"
|
|
24808
24803
|
),
|
|
@@ -24839,7 +24834,7 @@ function InspectorPaneHeader({
|
|
|
24839
24834
|
onClose
|
|
24840
24835
|
}) {
|
|
24841
24836
|
const { t } = reactI18next.useTranslation();
|
|
24842
|
-
const { viewportWidth } =
|
|
24837
|
+
const { viewportWidth } = chunkMFGD7XVJ_js.useIsMobile();
|
|
24843
24838
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
24844
24839
|
const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
24845
24840
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -24862,7 +24857,7 @@ function InspectorPaneHeader({
|
|
|
24862
24857
|
type: "button",
|
|
24863
24858
|
title: t(labelKey),
|
|
24864
24859
|
style: touchBtnStyle,
|
|
24865
|
-
className:
|
|
24860
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
24866
24861
|
"flex items-center justify-center gap-1 px-2 py-1 rounded text-[11px] transition-colors",
|
|
24867
24862
|
activeTab === key ? "bg-primary text-white" : "text-muted-foreground hover:text-foreground hover:bg-accent"
|
|
24868
24863
|
),
|
|
@@ -24976,7 +24971,7 @@ function CustomPropertiesBlock({
|
|
|
24976
24971
|
"button",
|
|
24977
24972
|
{
|
|
24978
24973
|
type: "button",
|
|
24979
|
-
className:
|
|
24974
|
+
className: chunkRHNJ4IU2_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
|
|
24980
24975
|
onClick: () => onUpdate(customProperties.filter((_, i) => i !== index)),
|
|
24981
24976
|
children: "\xD7"
|
|
24982
24977
|
}
|
|
@@ -25304,7 +25299,7 @@ function PresentationSettingsCard({
|
|
|
25304
25299
|
min: 1,
|
|
25305
25300
|
max: 16,
|
|
25306
25301
|
disabled: !canEdit,
|
|
25307
|
-
className:
|
|
25302
|
+
className: chunkRHNJ4IU2_js.cn(INPUT2, "w-20"),
|
|
25308
25303
|
value: pptx.printPropertiesSlidesPerPage(presentationProperties.printProperties),
|
|
25309
25304
|
onChange: (e) => onUpdate({
|
|
25310
25305
|
printProperties: pptx.withSlidesPerPage(
|
|
@@ -25392,14 +25387,14 @@ function SlideThemeOverridePanel({
|
|
|
25392
25387
|
const translate = React97.useCallback((key) => t(key), [t]);
|
|
25393
25388
|
const override = activeSlide?.clrMapOverride;
|
|
25394
25389
|
const isOverrideActive = override !== void 0;
|
|
25395
|
-
const targetSlotOptions = React97.useMemo(() => [...
|
|
25390
|
+
const targetSlotOptions = React97.useMemo(() => [...chunkRHNJ4IU2_js.dist_exports.THEME_COLOR_SCHEME_KEYS], []);
|
|
25396
25391
|
const commitOverride = React97.useCallback(
|
|
25397
25392
|
(nextOverride) => {
|
|
25398
25393
|
if (!activeSlide || !theme?.colorScheme) {
|
|
25399
25394
|
onUpdateSlide({ clrMapOverride: nextOverride });
|
|
25400
25395
|
return;
|
|
25401
25396
|
}
|
|
25402
|
-
const nextSlide = (0,
|
|
25397
|
+
const nextSlide = (0, chunkRHNJ4IU2_js.dist_exports.applyThemeOverrideToSlide)(activeSlide, theme.colorScheme, nextOverride);
|
|
25403
25398
|
onUpdateSlide({
|
|
25404
25399
|
clrMapOverride: nextSlide.clrMapOverride,
|
|
25405
25400
|
backgroundColor: nextSlide.backgroundColor,
|
|
@@ -25412,8 +25407,8 @@ function SlideThemeOverridePanel({
|
|
|
25412
25407
|
(enabled) => {
|
|
25413
25408
|
if (enabled) {
|
|
25414
25409
|
const defaultMap = {};
|
|
25415
|
-
for (const key of
|
|
25416
|
-
defaultMap[key] =
|
|
25410
|
+
for (const key of chunkRHNJ4IU2_js.dist_exports.COLOR_MAP_ALIAS_KEYS) {
|
|
25411
|
+
defaultMap[key] = chunkRHNJ4IU2_js.dist_exports.DEFAULT_COLOR_MAP[key];
|
|
25417
25412
|
}
|
|
25418
25413
|
commitOverride(defaultMap);
|
|
25419
25414
|
} else {
|
|
@@ -25426,9 +25421,9 @@ function SlideThemeOverridePanel({
|
|
|
25426
25421
|
(alias, targetSlot) => {
|
|
25427
25422
|
const current = override ?? {};
|
|
25428
25423
|
const next = { ...current, [alias]: targetSlot };
|
|
25429
|
-
for (const key of
|
|
25424
|
+
for (const key of chunkRHNJ4IU2_js.dist_exports.COLOR_MAP_ALIAS_KEYS) {
|
|
25430
25425
|
if (!next[key]) {
|
|
25431
|
-
next[key] =
|
|
25426
|
+
next[key] = chunkRHNJ4IU2_js.dist_exports.DEFAULT_COLOR_MAP[key];
|
|
25432
25427
|
}
|
|
25433
25428
|
}
|
|
25434
25429
|
commitOverride(next);
|
|
@@ -25460,8 +25455,8 @@ function SlideThemeOverridePanel({
|
|
|
25460
25455
|
),
|
|
25461
25456
|
t("pptx.themeOverride.enableOverride")
|
|
25462
25457
|
] }),
|
|
25463
|
-
isOverrideActive && override && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-1.5", children:
|
|
25464
|
-
const currentTarget = override[alias] ??
|
|
25458
|
+
isOverrideActive && override && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-1.5", children: chunkRHNJ4IU2_js.dist_exports.COLOR_MAP_ALIAS_KEYS.map((alias) => {
|
|
25459
|
+
const currentTarget = override[alias] ?? chunkRHNJ4IU2_js.dist_exports.DEFAULT_COLOR_MAP[alias];
|
|
25465
25460
|
const resolvedHex = resolveSlotColor(currentTarget);
|
|
25466
25461
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
25467
25462
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-24 truncate text-muted-foreground", title: ALIAS_LABELS[alias], children: ALIAS_LABELS[alias] }),
|
|
@@ -25540,7 +25535,7 @@ function TransitionPreview({
|
|
|
25540
25535
|
const { t } = reactI18next.useTranslation();
|
|
25541
25536
|
const durationMs = transition.durationMs ?? 500;
|
|
25542
25537
|
const animations = React97.useMemo(
|
|
25543
|
-
() =>
|
|
25538
|
+
() => chunkMFGD7XVJ_js.getSlideTransitionAnimations(
|
|
25544
25539
|
transition.type,
|
|
25545
25540
|
durationMs,
|
|
25546
25541
|
transition.direction,
|
|
@@ -25609,7 +25604,7 @@ function TransitionPreview({
|
|
|
25609
25604
|
]
|
|
25610
25605
|
}
|
|
25611
25606
|
),
|
|
25612
|
-
/* @__PURE__ */ jsxRuntime.jsx("style", { children:
|
|
25607
|
+
/* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkMFGD7XVJ_js.SLIDE_TRANSITION_KEYFRAMES })
|
|
25613
25608
|
] });
|
|
25614
25609
|
}
|
|
25615
25610
|
var DEFAULT_DURATION_MS = 320;
|
|
@@ -25626,13 +25621,13 @@ function SlideTransitionSection({
|
|
|
25626
25621
|
return null;
|
|
25627
25622
|
}
|
|
25628
25623
|
const transitionType = activeSlide.transition?.type ?? "none";
|
|
25629
|
-
const validDirections =
|
|
25624
|
+
const validDirections = chunkRHNJ4IU2_js.dist_exports.TRANSITION_VALID_DIRECTIONS[transitionType];
|
|
25630
25625
|
const hasDirections = validDirections !== void 0 && validDirections.length > 0;
|
|
25631
25626
|
const usesOrientation = pptx.TRANSITION_ORIENTATION_TYPES.has(transitionType);
|
|
25632
25627
|
const isWheel = transitionType === "wheel";
|
|
25633
25628
|
const isMorph = transitionType === "morph";
|
|
25634
|
-
const patternOptions =
|
|
25635
|
-
const hasThruBlk =
|
|
25629
|
+
const patternOptions = chunkRHNJ4IU2_js.dist_exports.TRANSITION_PATTERN_OPTIONS[transitionType];
|
|
25630
|
+
const hasThruBlk = chunkRHNJ4IU2_js.dist_exports.TRANSITION_THRUBLK_TYPES.has(transitionType);
|
|
25636
25631
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
25637
25632
|
"div",
|
|
25638
25633
|
{
|
|
@@ -25652,7 +25647,7 @@ function SlideTransitionSection({
|
|
|
25652
25647
|
type: e.target.value
|
|
25653
25648
|
}),
|
|
25654
25649
|
className: "bg-muted border border-border rounded px-2 py-1 max-md:min-h-[44px]!",
|
|
25655
|
-
children:
|
|
25650
|
+
children: chunkRHNJ4IU2_js.SLIDE_TRANSITION_OPTIONS.map((option) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: option.value, children: t(option.i18nKey) }, option.value))
|
|
25656
25651
|
}
|
|
25657
25652
|
)
|
|
25658
25653
|
] }),
|
|
@@ -25868,7 +25863,7 @@ function TagsSection({
|
|
|
25868
25863
|
"button",
|
|
25869
25864
|
{
|
|
25870
25865
|
type: "button",
|
|
25871
|
-
className:
|
|
25866
|
+
className: chunkRHNJ4IU2_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
|
|
25872
25867
|
title: t("pptx.tags.deleteTag"),
|
|
25873
25868
|
onClick: () => deleteTag(tag.colIdx, tag.tagIdx),
|
|
25874
25869
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuTrash2, { className: "w-3 h-3" })
|
|
@@ -25997,7 +25992,7 @@ function PresentationPropertiesPanel({
|
|
|
25997
25992
|
canEdit
|
|
25998
25993
|
}
|
|
25999
25994
|
),
|
|
26000
|
-
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
25995
|
+
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkRHNJ4IU2_js.cn(CARD2, "space-y-1"), children: [
|
|
26001
25996
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: "Slide" }),
|
|
26002
25997
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[11px] text-muted-foreground", children: [
|
|
26003
25998
|
activeSlide.elements?.length ?? 0,
|
|
@@ -26018,14 +26013,14 @@ function SlideBackgroundPanel({
|
|
|
26018
26013
|
const { t } = reactI18next.useTranslation();
|
|
26019
26014
|
const bgImageInputRef = React97.useRef(null);
|
|
26020
26015
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
26021
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
26016
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkRHNJ4IU2_js.cn(CARD2, "space-y-2"), children: [
|
|
26022
26017
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.viewer.background") }),
|
|
26023
26018
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
26024
26019
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-10 shrink-0", children: t("pptx.slideBackground.colour") }),
|
|
26025
26020
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26026
26021
|
DebouncedColorInput,
|
|
26027
26022
|
{
|
|
26028
|
-
value:
|
|
26023
|
+
value: chunkRHNJ4IU2_js.normalizeHexColor(activeSlide.backgroundColor, "#ffffff"),
|
|
26029
26024
|
disabled: !canEdit,
|
|
26030
26025
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
26031
26026
|
onCommit: (hex) => onUpdateSlide({ backgroundColor: hex })
|
|
@@ -26064,7 +26059,7 @@ function SlideBackgroundPanel({
|
|
|
26064
26059
|
"button",
|
|
26065
26060
|
{
|
|
26066
26061
|
type: "button",
|
|
26067
|
-
className:
|
|
26062
|
+
className: chunkRHNJ4IU2_js.cn(BTN2, "flex-1 text-center"),
|
|
26068
26063
|
disabled: !canEdit,
|
|
26069
26064
|
onClick: () => bgImageInputRef.current?.click(),
|
|
26070
26065
|
children: activeSlide.backgroundImage ? t("pptx.slideBackground.replaceImage") : t("pptx.slideBackground.chooseImage")
|
|
@@ -26097,7 +26092,7 @@ function SlideBackgroundPanel({
|
|
|
26097
26092
|
"button",
|
|
26098
26093
|
{
|
|
26099
26094
|
type: "button",
|
|
26100
|
-
className:
|
|
26095
|
+
className: chunkRHNJ4IU2_js.cn(BTN2, "w-full text-center text-red-400 hover:text-red-300"),
|
|
26101
26096
|
disabled: !pptx.slideBackgroundClearState(activeSlide, canEdit).enabled,
|
|
26102
26097
|
onClick: () => onUpdateSlide(pptx.slideBackgroundClearPatch()),
|
|
26103
26098
|
children: t("pptx.slideBackground.clearBackground")
|
|
@@ -26141,14 +26136,14 @@ function TemplateBackgroundCard({
|
|
|
26141
26136
|
t("pptx.master.layout"),
|
|
26142
26137
|
t("pptx.master.master")
|
|
26143
26138
|
);
|
|
26144
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
26139
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkRHNJ4IU2_js.cn(CARD2, "space-y-2"), children: [
|
|
26145
26140
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.slideBackground.templateBackgroundsHeading") }),
|
|
26146
26141
|
rows.layout && /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
26147
26142
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-14 shrink-0 truncate", title: rows.layout.title, children: t("pptx.master.layout") }),
|
|
26148
26143
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26149
26144
|
DebouncedColorInput,
|
|
26150
26145
|
{
|
|
26151
|
-
value:
|
|
26146
|
+
value: chunkRHNJ4IU2_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.layout.path), "#ffffff"),
|
|
26152
26147
|
disabled: !canEdit,
|
|
26153
26148
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
26154
26149
|
onCommit: (hex) => onSetTemplateBackground(rows.layout.path, hex)
|
|
@@ -26161,7 +26156,7 @@ function TemplateBackgroundCard({
|
|
|
26161
26156
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26162
26157
|
DebouncedColorInput,
|
|
26163
26158
|
{
|
|
26164
|
-
value:
|
|
26159
|
+
value: chunkRHNJ4IU2_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.master.path), "#ffffff"),
|
|
26165
26160
|
disabled: !canEdit,
|
|
26166
26161
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
26167
26162
|
onCommit: (hex) => onSetTemplateBackground(rows.master.path, hex)
|
|
@@ -26272,7 +26267,7 @@ function InspectorPane(props) {
|
|
|
26272
26267
|
} = props;
|
|
26273
26268
|
const hasSelection = selectedElement !== null;
|
|
26274
26269
|
const { t } = reactI18next.useTranslation();
|
|
26275
|
-
const { dragY, handlers: dragHandlers } =
|
|
26270
|
+
const { dragY, handlers: dragHandlers } = chunkMFGD7XVJ_js.useSheetDismissDrag(onClose);
|
|
26276
26271
|
const {
|
|
26277
26272
|
animationPanelHeight,
|
|
26278
26273
|
effectiveThemeOptions,
|
|
@@ -26294,7 +26289,7 @@ function InspectorPane(props) {
|
|
|
26294
26289
|
"div",
|
|
26295
26290
|
{
|
|
26296
26291
|
"data-pptx-chrome": "inspector",
|
|
26297
|
-
className:
|
|
26292
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
26298
26293
|
// Shared styles
|
|
26299
26294
|
"bg-background flex flex-col text-xs text-foreground shadow-xl",
|
|
26300
26295
|
// Mobile: absolute bottom sheet overlay sized via dvh so it
|
|
@@ -26685,7 +26680,7 @@ function PresentationTouchControls({
|
|
|
26685
26680
|
hideNavigation = false
|
|
26686
26681
|
}) {
|
|
26687
26682
|
const { t } = reactI18next.useTranslation();
|
|
26688
|
-
const { isTouchDevice } =
|
|
26683
|
+
const { isTouchDevice } = chunkMFGD7XVJ_js.useIsMobile();
|
|
26689
26684
|
if (!isTouchDevice) {
|
|
26690
26685
|
return null;
|
|
26691
26686
|
}
|
|
@@ -26990,13 +26985,13 @@ function PrintPreview({
|
|
|
26990
26985
|
}) {
|
|
26991
26986
|
const { t } = reactI18next.useTranslation();
|
|
26992
26987
|
const pages = React97.useMemo(
|
|
26993
|
-
() =>
|
|
26988
|
+
() => chunkRHNJ4IU2_js.computeHandoutLayout(slideIndices, slidesPerPage, orientation),
|
|
26994
26989
|
[slideIndices, slidesPerPage, orientation]
|
|
26995
26990
|
);
|
|
26996
|
-
const printable = React97.useMemo(() =>
|
|
26991
|
+
const printable = React97.useMemo(() => chunkRHNJ4IU2_js.getPrintableArea(orientation), [orientation]);
|
|
26997
26992
|
const visiblePages = pages.slice(0, maxPages);
|
|
26998
26993
|
const isThreePerPage = slidesPerPage === 3;
|
|
26999
|
-
const noteLineCount =
|
|
26994
|
+
const noteLineCount = chunkRHNJ4IU2_js.generateNoteLineCount();
|
|
27000
26995
|
const scaledW = printable.width * PREVIEW_SCALE3;
|
|
27001
26996
|
const scaledH = printable.height * PREVIEW_SCALE3;
|
|
27002
26997
|
const noteAreaFraction = 0.5;
|
|
@@ -27331,11 +27326,11 @@ function PrintDialog({
|
|
|
27331
27326
|
defaultFrameSlides
|
|
27332
27327
|
}) {
|
|
27333
27328
|
const { t } = reactI18next.useTranslation();
|
|
27334
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
27335
|
-
const { viewportWidth } =
|
|
27329
|
+
const { panelStyle, handlers: dragHandlers } = chunkMFGD7XVJ_js.useModalDismissDrag(onClose);
|
|
27330
|
+
const { viewportWidth } = chunkMFGD7XVJ_js.useIsMobile();
|
|
27336
27331
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
27337
27332
|
const closeBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
27338
|
-
const printOptionDefaults = pptx.resolveDefaultPrintSettings(
|
|
27333
|
+
const printOptionDefaults = pptx.resolveDefaultPrintSettings(chunkMFGD7XVJ_js.useViewerOptionsContext());
|
|
27339
27334
|
const [printWhat, setPrintWhat] = React97.useState(printOptionDefaults?.printWhat ?? "slides");
|
|
27340
27335
|
const [orientation, setOrientation] = React97.useState("landscape");
|
|
27341
27336
|
const [colorMode, setColorMode] = React97.useState(
|
|
@@ -27838,14 +27833,14 @@ function BroadcastDialog({
|
|
|
27838
27833
|
defaultServerUrl
|
|
27839
27834
|
}) {
|
|
27840
27835
|
const { t } = reactI18next.useTranslation();
|
|
27841
|
-
const collab =
|
|
27836
|
+
const collab = chunkMFGD7XVJ_js.useCollaboration();
|
|
27842
27837
|
const isBroadcasting = collab !== null && collab.status !== "disconnected" && collab.status !== "error" && collab.config.role === "owner";
|
|
27843
27838
|
const [roomId, setRoomId] = React97.useState("");
|
|
27844
27839
|
const [userName, setUserName] = React97.useState("");
|
|
27845
27840
|
const [serverUrl, setServerUrl] = React97.useState("");
|
|
27846
27841
|
const [copied, setCopied] = React97.useState(false);
|
|
27847
27842
|
const dialogRef = React97.useRef(null);
|
|
27848
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
27843
|
+
const { panelStyle, handlers: dragHandlers } = chunkMFGD7XVJ_js.useModalDismissDrag(onClose);
|
|
27849
27844
|
useModalFocus(open, dialogRef, onClose);
|
|
27850
27845
|
React97.useEffect(() => {
|
|
27851
27846
|
if (open && !isBroadcasting) {
|
|
@@ -28148,7 +28143,7 @@ function ActiveSessionView({
|
|
|
28148
28143
|
onCopyRoomId,
|
|
28149
28144
|
onStopCollaboration
|
|
28150
28145
|
}) {
|
|
28151
|
-
const { t } = reactI18next.useTranslation(), viewerOptions =
|
|
28146
|
+
const { t } = reactI18next.useTranslation(), viewerOptions = chunkMFGD7XVJ_js.useViewerOptionsContext(), statusColor = collab.status === "connected" ? "text-green-400" : collab.status === "connecting" ? "text-yellow-400" : "text-red-400", statusIcon = collab.status === "connected" || collab.status === "connecting" ? /* @__PURE__ */ jsxRuntime.jsx(lu.LuWifi, { className: "w-4 h-4" }) : /* @__PURE__ */ jsxRuntime.jsx(lu.LuWifiOff, { className: "w-4 h-4" }), sessionUsers = pptx.buildActiveSessionUsers({
|
|
28152
28147
|
localUserName: activeCollaboration?.userName ?? collab.config.userName,
|
|
28153
28148
|
localUserInitials: viewerOptions.general.userInitials,
|
|
28154
28149
|
localUserColor: collab.config.userColor,
|
|
@@ -28247,7 +28242,7 @@ function StartSessionForm({
|
|
|
28247
28242
|
onRetry
|
|
28248
28243
|
}) {
|
|
28249
28244
|
const { t } = reactI18next.useTranslation();
|
|
28250
|
-
const { viewportWidth } =
|
|
28245
|
+
const { viewportWidth } = chunkMFGD7XVJ_js.useIsMobile();
|
|
28251
28246
|
const tabBtnStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
|
|
28252
28247
|
const inputReadOnlyClass = preconfigured ? " opacity-70 cursor-not-allowed" : "";
|
|
28253
28248
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
@@ -28381,7 +28376,7 @@ function ShareDialog({
|
|
|
28381
28376
|
defaultUserName,
|
|
28382
28377
|
defaultServerUrl
|
|
28383
28378
|
}) {
|
|
28384
|
-
const collab =
|
|
28379
|
+
const collab = chunkMFGD7XVJ_js.useCollaboration();
|
|
28385
28380
|
const isActive = collab !== null && collab.status !== "disconnected" && collab.status !== "error";
|
|
28386
28381
|
const { t } = reactI18next.useTranslation();
|
|
28387
28382
|
const [roomId, setRoomId] = React97.useState(defaultRoomId ?? "");
|
|
@@ -28391,9 +28386,9 @@ function ShareDialog({
|
|
|
28391
28386
|
const [invitation, setInvitation] = React97.useState("");
|
|
28392
28387
|
const [copied, setCopied] = React97.useState(false);
|
|
28393
28388
|
const dialogRef = React97.useRef(null);
|
|
28394
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
28389
|
+
const { panelStyle, handlers: dragHandlers } = chunkMFGD7XVJ_js.useModalDismissDrag(onClose);
|
|
28395
28390
|
useModalFocus(open, dialogRef, onClose);
|
|
28396
|
-
const { viewportWidth, viewportHeight } =
|
|
28391
|
+
const { viewportWidth, viewportHeight } = chunkMFGD7XVJ_js.useIsMobile();
|
|
28397
28392
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
28398
28393
|
const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
28399
28394
|
const stickyFooterClass = pptx.shouldStickyActionRow(viewportWidth, viewportHeight) ? "sticky bottom-0 bg-popover" : "";
|
|
@@ -28676,12 +28671,12 @@ function HyperlinkEditDialog({
|
|
|
28676
28671
|
onCancel
|
|
28677
28672
|
}) {
|
|
28678
28673
|
const { t } = reactI18next.useTranslation();
|
|
28679
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
28674
|
+
const { panelStyle, handlers: dragHandlers } = chunkMFGD7XVJ_js.useModalDismissDrag(onCancel);
|
|
28680
28675
|
const inputRef = React97.useRef(null);
|
|
28681
|
-
const detectedType =
|
|
28682
|
-
const emailParts =
|
|
28683
|
-
const detectedSlide =
|
|
28684
|
-
const detectedVerb = initialAction ?
|
|
28676
|
+
const detectedType = chunkMFGD7XVJ_js.detectTargetType(initialUrl, initialAction);
|
|
28677
|
+
const emailParts = chunkMFGD7XVJ_js.parseEmailUrl(initialUrl || "");
|
|
28678
|
+
const detectedSlide = chunkMFGD7XVJ_js.parseSlideFromUrl(initialUrl, initialAction);
|
|
28679
|
+
const detectedVerb = initialAction ? chunkMFGD7XVJ_js.ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
|
|
28685
28680
|
const [targetType, setTargetType] = React97.useState(detectedType);
|
|
28686
28681
|
const [url, setUrl] = React97.useState(
|
|
28687
28682
|
detectedType === "email" || detectedType === "slide" || detectedType === "action" ? "" : initialUrl || ""
|
|
@@ -28712,7 +28707,7 @@ function HyperlinkEditDialog({
|
|
|
28712
28707
|
actionVerb
|
|
28713
28708
|
});
|
|
28714
28709
|
};
|
|
28715
|
-
const tabCls = (active) =>
|
|
28710
|
+
const tabCls = (active) => chunkRHNJ4IU2_js.cn(
|
|
28716
28711
|
"px-3 py-1.5 text-xs rounded-t border-b-2 transition-colors",
|
|
28717
28712
|
active ? "border-primary text-primary font-medium" : "border-transparent text-muted-foreground hover:text-foreground hover:border-border"
|
|
28718
28713
|
);
|
|
@@ -28949,7 +28944,7 @@ function ViewerBottomPanels({
|
|
|
28949
28944
|
notesStyle,
|
|
28950
28945
|
onNotesHeightChange
|
|
28951
28946
|
}) {
|
|
28952
|
-
const { isHidden } =
|
|
28947
|
+
const { isHidden } = chunkMFGD7XVJ_js.useToolbarVisibility(hiddenActions);
|
|
28953
28948
|
const customization = useViewerCustomizationContext();
|
|
28954
28949
|
const showNotes = pptx.isPanelVisible(customization, "notes");
|
|
28955
28950
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
@@ -29295,7 +29290,7 @@ function ViewerToolbarSection(props) {
|
|
|
29295
29290
|
[activeSlide, propertyHandlers]
|
|
29296
29291
|
);
|
|
29297
29292
|
const scopedLayoutOptions = React97__default.default.useMemo(
|
|
29298
|
-
() =>
|
|
29293
|
+
() => chunkMFGD7XVJ_js.scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
|
|
29299
29294
|
[s.layoutOptions, activeSlide]
|
|
29300
29295
|
);
|
|
29301
29296
|
const handleResetSlide = React97.useCallback(() => {
|
|
@@ -29699,7 +29694,7 @@ function ViewerToolbarSection(props) {
|
|
|
29699
29694
|
isCommentsPanelOpen: s.isInspectorPaneOpen,
|
|
29700
29695
|
slideCommentCount: activeSlide?.comments?.length ?? 0,
|
|
29701
29696
|
formatPainterActive: s.formatPainterActive,
|
|
29702
|
-
canActivateFormatPainter:
|
|
29697
|
+
canActivateFormatPainter: chunkRHNJ4IU2_js.hasCopyableFormat(selectedElement),
|
|
29703
29698
|
onToggleFormatPainter: onToggleFormatPainterProp ?? (() => s.setFormatPainterActive((p) => !p)),
|
|
29704
29699
|
isSelectionPaneOpen: s.isSelectionPaneOpen,
|
|
29705
29700
|
onToggleSelectionPane: () => s.setIsSelectionPaneOpen((p) => !p),
|
|
@@ -29786,7 +29781,7 @@ function EquationEditorDialog({
|
|
|
29786
29781
|
existingOmml
|
|
29787
29782
|
}) {
|
|
29788
29783
|
const { t } = reactI18next.useTranslation();
|
|
29789
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
29784
|
+
const { panelStyle, handlers: dragHandlers } = chunkMFGD7XVJ_js.useModalDismissDrag(onClose);
|
|
29790
29785
|
const initialLatex = React97.useMemo(() => {
|
|
29791
29786
|
if (!existingOmml) {
|
|
29792
29787
|
return "";
|
|
@@ -29908,7 +29903,7 @@ function EquationEditorDialog({
|
|
|
29908
29903
|
{
|
|
29909
29904
|
type: "button",
|
|
29910
29905
|
onClick: () => handleTemplateClick(tmpl.latex),
|
|
29911
|
-
className:
|
|
29906
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
29912
29907
|
"flex flex-col items-center gap-1 p-2 rounded-lg border transition-colors",
|
|
29913
29908
|
latex === tmpl.latex ? "border-primary bg-primary/10" : "border-border bg-muted/40 hover:bg-accent/60 hover:border-border"
|
|
29914
29909
|
),
|
|
@@ -29974,7 +29969,7 @@ function getPreviewForLayout(layout) {
|
|
|
29974
29969
|
transform: `scale(${scale})`,
|
|
29975
29970
|
transformOrigin: "top left"
|
|
29976
29971
|
},
|
|
29977
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
29972
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(chunkMFGD7XVJ_js.SmartArtRenderer, { element: pptx.buildSmartArtPreviewElement(layout) })
|
|
29978
29973
|
}
|
|
29979
29974
|
)
|
|
29980
29975
|
}
|
|
@@ -29986,7 +29981,7 @@ function InsertSmartArtDialog({
|
|
|
29986
29981
|
onInsert
|
|
29987
29982
|
}) {
|
|
29988
29983
|
const { t } = reactI18next.useTranslation();
|
|
29989
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
29984
|
+
const { panelStyle, handlers: dragHandlers } = chunkMFGD7XVJ_js.useModalDismissDrag(onClose);
|
|
29990
29985
|
const [activeCategory, setActiveCategory] = React97.useState("list");
|
|
29991
29986
|
const [selectedLayout, setSelectedLayout] = React97.useState(null);
|
|
29992
29987
|
const dialogRef = React97.useRef(null);
|
|
@@ -30067,7 +30062,7 @@ function InsertSmartArtDialog({
|
|
|
30067
30062
|
setActiveCategory(cat.id);
|
|
30068
30063
|
setSelectedLayout(null);
|
|
30069
30064
|
},
|
|
30070
|
-
className:
|
|
30065
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
30071
30066
|
"w-full text-left px-3 py-1.5 text-xs transition-colors",
|
|
30072
30067
|
activeCategory === cat.id ? "bg-primary text-white" : "text-foreground hover:bg-muted"
|
|
30073
30068
|
),
|
|
@@ -30095,7 +30090,7 @@ function InsertSmartArtDialog({
|
|
|
30095
30090
|
onInsert(preset.layout, preset.defaultItems);
|
|
30096
30091
|
onClose();
|
|
30097
30092
|
},
|
|
30098
|
-
className:
|
|
30093
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
30099
30094
|
"flex flex-col items-center gap-1 p-2 rounded border transition-colors",
|
|
30100
30095
|
selectedLayout === preset.layout ? "border-primary bg-primary/20" : "border-border hover:border-border hover:bg-muted/50"
|
|
30101
30096
|
),
|
|
@@ -30590,11 +30585,11 @@ function PresentationStage({
|
|
|
30590
30585
|
})
|
|
30591
30586
|
},
|
|
30592
30587
|
children: [
|
|
30593
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30588
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkMFGD7XVJ_js.SlideBackgroundImageLayer, { slide: activeSlide }),
|
|
30594
30589
|
/* @__PURE__ */ jsxRuntime.jsx("style", { children: pptx.PRESENTATION_HIT_TEST_CSS }),
|
|
30595
30590
|
presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
|
|
30596
30591
|
templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
30597
|
-
|
|
30592
|
+
chunkMFGD7XVJ_js.ElementRenderer,
|
|
30598
30593
|
{
|
|
30599
30594
|
element,
|
|
30600
30595
|
activeSlide,
|
|
@@ -30631,7 +30626,7 @@ function PresentationStage({
|
|
|
30631
30626
|
`tpl-${element.id}`
|
|
30632
30627
|
)),
|
|
30633
30628
|
activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
30634
|
-
|
|
30629
|
+
chunkMFGD7XVJ_js.ElementRenderer,
|
|
30635
30630
|
{
|
|
30636
30631
|
element,
|
|
30637
30632
|
activeSlide,
|
|
@@ -30752,8 +30747,8 @@ function ViewerCanvasArea(props) {
|
|
|
30752
30747
|
aiCanvasActive = false
|
|
30753
30748
|
} = props;
|
|
30754
30749
|
const { t } = reactI18next.useTranslation();
|
|
30755
|
-
const { isHidden } =
|
|
30756
|
-
const viewerOptions =
|
|
30750
|
+
const { isHidden } = chunkMFGD7XVJ_js.useToolbarVisibility(hiddenActions);
|
|
30751
|
+
const viewerOptions = chunkMFGD7XVJ_js.useViewerOptionsContext();
|
|
30757
30752
|
const outlineAuthoring = useOutlineAuthoring({
|
|
30758
30753
|
state: s,
|
|
30759
30754
|
updateElement: canvasHandlers.handleUpdateSmartArtElement,
|
|
@@ -30782,7 +30777,7 @@ function ViewerCanvasArea(props) {
|
|
|
30782
30777
|
${url}`)) {
|
|
30783
30778
|
return;
|
|
30784
30779
|
}
|
|
30785
|
-
|
|
30780
|
+
chunkRHNJ4IU2_js.safeOpenUrl(url);
|
|
30786
30781
|
},
|
|
30787
30782
|
[viewerOptions, t]
|
|
30788
30783
|
);
|
|
@@ -30803,9 +30798,9 @@ ${url}`)) {
|
|
|
30803
30798
|
);
|
|
30804
30799
|
const handleHyperlinkClick = React97.useCallback(
|
|
30805
30800
|
(url) => {
|
|
30806
|
-
if (
|
|
30801
|
+
if (chunkRHNJ4IU2_js.isPpactionUrl(url)) {
|
|
30807
30802
|
if (mode === "present") {
|
|
30808
|
-
const parsed =
|
|
30803
|
+
const parsed = chunkRHNJ4IU2_js.parsePpactionUrl(url);
|
|
30809
30804
|
if (parsed) {
|
|
30810
30805
|
const action = {
|
|
30811
30806
|
action: parsed.action,
|
|
@@ -30890,7 +30885,7 @@ ${url}`)) {
|
|
|
30890
30885
|
s.setActiveSlideIndex((i) => Math.max(0, i - 1));
|
|
30891
30886
|
}
|
|
30892
30887
|
}, [mode, presentation, s]);
|
|
30893
|
-
const swipe =
|
|
30888
|
+
const swipe = chunkMFGD7XVJ_js.useSwipeNavigation({
|
|
30894
30889
|
enabled: swipeEnabled,
|
|
30895
30890
|
onNext: handleSwipeNext,
|
|
30896
30891
|
onPrev: handleSwipePrev
|
|
@@ -30964,7 +30959,7 @@ ${url}`)) {
|
|
|
30964
30959
|
),
|
|
30965
30960
|
children: (stageScale) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
30966
30961
|
presentation.transitionOverlay && slides[presentation.transitionOverlay.outgoingSlideIndex] && /* @__PURE__ */ jsxRuntime.jsx(
|
|
30967
|
-
|
|
30962
|
+
chunkMFGD7XVJ_js.PresentationTransitionOverlay,
|
|
30968
30963
|
{
|
|
30969
30964
|
outgoingSlide: slides[presentation.transitionOverlay.outgoingSlideIndex],
|
|
30970
30965
|
templateElements,
|
|
@@ -31075,14 +31070,14 @@ ${url}`)) {
|
|
|
31075
31070
|
outlineAuthoring,
|
|
31076
31071
|
collaborationOverlay: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31077
31072
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
31078
|
-
|
|
31073
|
+
chunkMFGD7XVJ_js.RemoteSelectionOverlay,
|
|
31079
31074
|
{
|
|
31080
31075
|
elements: effectiveSlide?.elements ?? [],
|
|
31081
31076
|
activeSlideIndex
|
|
31082
31077
|
}
|
|
31083
31078
|
),
|
|
31084
31079
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
31085
|
-
|
|
31080
|
+
chunkMFGD7XVJ_js.CollaborationCursorOverlay,
|
|
31086
31081
|
{
|
|
31087
31082
|
activeSlideIndex,
|
|
31088
31083
|
canvasWidth: canvasSize.width,
|
|
@@ -31222,7 +31217,7 @@ function useTableStyleMapHandlers(input) {
|
|
|
31222
31217
|
var AiChatPanel = React97.lazy(async () => {
|
|
31223
31218
|
const [{ useChat }, { default: Panel }] = await Promise.all([
|
|
31224
31219
|
import('@ai-sdk/react'),
|
|
31225
|
-
import('./AiChatPanel-
|
|
31220
|
+
import('./AiChatPanel-6VWCT6NE.js')
|
|
31226
31221
|
]);
|
|
31227
31222
|
function BoundAiChatPanel(props) {
|
|
31228
31223
|
return /* @__PURE__ */ jsxRuntime.jsx(Panel, { ...props, useChat });
|
|
@@ -31383,7 +31378,7 @@ function MobileDismissSheet({
|
|
|
31383
31378
|
children
|
|
31384
31379
|
}) {
|
|
31385
31380
|
const { t } = reactI18next.useTranslation();
|
|
31386
|
-
const { dragY, handlers } =
|
|
31381
|
+
const { dragY, handlers } = chunkMFGD7XVJ_js.useSheetDismissDrag(onClose);
|
|
31387
31382
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31388
31383
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
31389
31384
|
"button",
|
|
@@ -31652,7 +31647,7 @@ function ThemeThumbnail({
|
|
|
31652
31647
|
{
|
|
31653
31648
|
type: "button",
|
|
31654
31649
|
onClick,
|
|
31655
|
-
className:
|
|
31650
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
31656
31651
|
"group relative flex flex-col rounded-lg border-2 transition-all overflow-hidden",
|
|
31657
31652
|
selected ? "border-primary shadow-lg scale-[1.02]" : "border-border hover:border-primary/50 hover:shadow-md"
|
|
31658
31653
|
),
|
|
@@ -31838,7 +31833,7 @@ function ViewerSidePanels(props) {
|
|
|
31838
31833
|
const customization = useViewerCustomizationContext();
|
|
31839
31834
|
const inspectorOpen = (mode === "edit" || mode === "master") && s.isInspectorPaneOpen && pptx.isPanelVisible(customization, "inspector");
|
|
31840
31835
|
const currentBuiltInTheme = BUILT_IN_THEMES.find(
|
|
31841
|
-
(candidate) => (0,
|
|
31836
|
+
(candidate) => (0, chunkRHNJ4IU2_js.dist_exports.themeColorSchemesEqual)(s.theme?.colorScheme, candidate.colorScheme)
|
|
31842
31837
|
) ?? null;
|
|
31843
31838
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31844
31839
|
inspectorOpen && onResizeRight && /* @__PURE__ */ jsxRuntime.jsx(ResizeHandle, { direction: "horizontal", onResize: onResizeRight }),
|
|
@@ -32124,7 +32119,7 @@ function ViewerMainContent(props) {
|
|
|
32124
32119
|
);
|
|
32125
32120
|
const layoutGalleryAnchorRef = React97.useRef(null);
|
|
32126
32121
|
const layoutGalleryPreviews = useLayoutPreviews(loadLayoutPreviews, layoutGalleryAnchor !== null);
|
|
32127
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
32122
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkMFGD7XVJ_js.ChartPartSelectionProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "body", className: "relative z-10 flex flex-1 min-h-0", children: [
|
|
32128
32123
|
showSlidesPane && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
32129
32124
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
32130
32125
|
SlidesPaneSidebar,
|
|
@@ -32614,7 +32609,7 @@ function MobileChromeOverlay(props) {
|
|
|
32614
32609
|
slideSectionGroups,
|
|
32615
32610
|
canEdit,
|
|
32616
32611
|
commentCount
|
|
32617
|
-
} = props, { keyboardInset, isKeyboardOpen } =
|
|
32612
|
+
} = props, { keyboardInset, isKeyboardOpen } = chunkMFGD7XVJ_js.useKeyboardInsets(), activeSheet = s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null, closeAllSheets = () => {
|
|
32618
32613
|
s.setIsSlidesPaneOpen(false);
|
|
32619
32614
|
s.setIsInspectorPaneOpen(false);
|
|
32620
32615
|
s.setIsSlideNotesCollapsed(true);
|
|
@@ -32820,7 +32815,7 @@ function AddinTable({
|
|
|
32820
32815
|
"tr",
|
|
32821
32816
|
{
|
|
32822
32817
|
onClick: () => onSelect(row.id),
|
|
32823
|
-
className:
|
|
32818
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
32824
32819
|
"cursor-pointer border-b border-border/40 transition-colors",
|
|
32825
32820
|
selectedId === row.id ? "bg-primary/10" : "hover:bg-accent"
|
|
32826
32821
|
),
|
|
@@ -32887,18 +32882,18 @@ function ControlRow({
|
|
|
32887
32882
|
onOptionChange: emitChange
|
|
32888
32883
|
}) {
|
|
32889
32884
|
const { t } = reactI18next.useTranslation();
|
|
32890
|
-
const { viewportWidth } =
|
|
32885
|
+
const { viewportWidth } = chunkMFGD7XVJ_js.useIsMobile();
|
|
32891
32886
|
const fieldMinHeight = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
32892
32887
|
const value = readValue(options, control);
|
|
32893
32888
|
const label = t(control.labelKey);
|
|
32894
32889
|
const info = control.infoKey ? /* @__PURE__ */ jsxRuntime.jsx(InfoTip, { text: t(control.infoKey) }) : null;
|
|
32895
|
-
const rowClass =
|
|
32890
|
+
const rowClass = chunkRHNJ4IU2_js.cn("flex items-center justify-between gap-3 py-1.5", control.indent && "pl-6");
|
|
32896
32891
|
const rowStyle = { minHeight: fieldMinHeight };
|
|
32897
32892
|
const locked = control.readOnly === true;
|
|
32898
32893
|
const lockedTitle = locked ? t("pptx.options.lockedByHost") : void 0;
|
|
32899
32894
|
const onOptionChange = locked ? IGNORE_CHANGE : emitChange;
|
|
32900
32895
|
if (control.kind === "toggle") {
|
|
32901
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className:
|
|
32896
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: chunkRHNJ4IU2_js.cn(rowClass, "cursor-pointer select-none"), style: rowStyle, children: [
|
|
32902
32897
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-sm text-foreground", children: [
|
|
32903
32898
|
label,
|
|
32904
32899
|
info
|
|
@@ -33050,7 +33045,7 @@ function CommandList({
|
|
|
33050
33045
|
role: "option",
|
|
33051
33046
|
"aria-selected": selectedId === id,
|
|
33052
33047
|
onClick: () => onSelect(id),
|
|
33053
|
-
className:
|
|
33048
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
33054
33049
|
"flex w-full items-center rounded px-2 py-1.5 text-left text-sm transition-colors",
|
|
33055
33050
|
selectedId === id ? "bg-primary/15 text-primary" : "text-foreground hover:bg-accent"
|
|
33056
33051
|
),
|
|
@@ -33194,7 +33189,7 @@ function OptionsRibbonPane({
|
|
|
33194
33189
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
33195
33190
|
"label",
|
|
33196
33191
|
{
|
|
33197
|
-
className:
|
|
33192
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
33198
33193
|
"flex items-center gap-2 rounded px-2 py-1.5",
|
|
33199
33194
|
isFile ? "cursor-not-allowed opacity-60" : "cursor-pointer hover:bg-accent"
|
|
33200
33195
|
),
|
|
@@ -33228,7 +33223,7 @@ function OptionsRibbonPane({
|
|
|
33228
33223
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: pptx.SHORTCUT_REFERENCE_ITEMS.map((shortcut, i) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
33229
33224
|
"div",
|
|
33230
33225
|
{
|
|
33231
|
-
className:
|
|
33226
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
33232
33227
|
"flex items-center justify-between gap-3 rounded px-3 py-2",
|
|
33233
33228
|
i % 2 === 0 ? "bg-muted/60" : ""
|
|
33234
33229
|
),
|
|
@@ -33249,7 +33244,7 @@ async function exportAiChatLogs(options) {
|
|
|
33249
33244
|
chats,
|
|
33250
33245
|
{ format: options?.format, detailed: options?.detailed, now: options?.now },
|
|
33251
33246
|
(filename, content, mime) => {
|
|
33252
|
-
|
|
33247
|
+
chunkMFGD7XVJ_js.downloadBlob(new Blob([content], { type: mime }), filename);
|
|
33253
33248
|
}
|
|
33254
33249
|
);
|
|
33255
33250
|
}
|
|
@@ -33357,7 +33352,7 @@ function SettingsAppearanceTab({
|
|
|
33357
33352
|
type: "button",
|
|
33358
33353
|
onClick: () => onSelectTheme(entry.key),
|
|
33359
33354
|
"aria-pressed": isActive,
|
|
33360
|
-
className:
|
|
33355
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
33361
33356
|
"flex items-center gap-3 rounded-lg border px-3 py-2.5 text-left transition-colors",
|
|
33362
33357
|
isActive ? "border-primary bg-primary/10" : "border-border hover:border-primary/50 hover:bg-accent"
|
|
33363
33358
|
),
|
|
@@ -33374,7 +33369,7 @@ function SettingsAppearanceTab({
|
|
|
33374
33369
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
33375
33370
|
"span",
|
|
33376
33371
|
{
|
|
33377
|
-
className:
|
|
33372
|
+
className: chunkRHNJ4IU2_js.cn("text-xs font-medium", isActive ? "text-primary" : "text-foreground"),
|
|
33378
33373
|
children: t(entry.labelKey)
|
|
33379
33374
|
}
|
|
33380
33375
|
)
|
|
@@ -33454,7 +33449,7 @@ function SettingsLanguageTab({
|
|
|
33454
33449
|
type: "button",
|
|
33455
33450
|
onClick: () => onSelectLocale(locale.code),
|
|
33456
33451
|
"aria-pressed": isActive,
|
|
33457
|
-
className:
|
|
33452
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
33458
33453
|
"flex w-full items-center justify-between rounded px-3 py-2.5 text-left transition-colors",
|
|
33459
33454
|
isActive ? "bg-primary/10 text-primary" : "text-foreground hover:bg-accent"
|
|
33460
33455
|
),
|
|
@@ -33494,8 +33489,8 @@ function SettingsDialog({
|
|
|
33494
33489
|
const [activeTabId, setActiveTabId] = React97.useState("general");
|
|
33495
33490
|
const { t } = reactI18next.useTranslation();
|
|
33496
33491
|
const customization = useViewerCustomizationContext();
|
|
33497
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
33498
|
-
const { viewportWidth, viewportHeight } =
|
|
33492
|
+
const { panelStyle, handlers: dragHandlers } = chunkMFGD7XVJ_js.useModalDismissDrag(onClose);
|
|
33493
|
+
const { viewportWidth, viewportHeight } = chunkMFGD7XVJ_js.useIsMobile();
|
|
33499
33494
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
33500
33495
|
const navBtnStyle = { minHeight: touchTargetPx, minWidth: touchTargetPx };
|
|
33501
33496
|
const closeBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
@@ -33603,7 +33598,7 @@ function SettingsDialog({
|
|
|
33603
33598
|
onClick: () => setActiveTabId(tab.id),
|
|
33604
33599
|
"aria-current": currentTabId === tab.id,
|
|
33605
33600
|
style: navBtnStyle,
|
|
33606
|
-
className:
|
|
33601
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
33607
33602
|
"flex w-full items-center whitespace-nowrap rounded px-3 py-2 text-left text-sm transition-colors max-md:w-auto",
|
|
33608
33603
|
currentTabId === tab.id ? "bg-primary/10 font-medium text-primary" : "text-foreground hover:bg-accent"
|
|
33609
33604
|
),
|
|
@@ -33618,7 +33613,7 @@ function SettingsDialog({
|
|
|
33618
33613
|
onClick: () => setActiveTabId(AI_TAB_ID),
|
|
33619
33614
|
"aria-current": aiActive,
|
|
33620
33615
|
style: navBtnStyle,
|
|
33621
|
-
className:
|
|
33616
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
33622
33617
|
"flex w-full items-center whitespace-nowrap rounded px-3 py-2 text-left text-sm transition-colors max-md:w-auto",
|
|
33623
33618
|
aiActive ? "bg-primary/10 font-medium text-primary" : "text-foreground hover:bg-accent"
|
|
33624
33619
|
),
|
|
@@ -33764,7 +33759,7 @@ function ViewerOptionsProvider({
|
|
|
33764
33759
|
store,
|
|
33765
33760
|
children
|
|
33766
33761
|
}) {
|
|
33767
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
33762
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkMFGD7XVJ_js.ViewerOptionsStoreContext.Provider, { value: store, children: /* @__PURE__ */ jsxRuntime.jsx(chunkMFGD7XVJ_js.ViewerOptionsContext.Provider, { value: options, children }) });
|
|
33768
33763
|
}
|
|
33769
33764
|
function useAiBridge(input) {
|
|
33770
33765
|
const ref = React97.useRef(input);
|
|
@@ -34085,7 +34080,7 @@ function useMasterViewCrud(input) {
|
|
|
34085
34080
|
if (id === "renameLayout" || id === "renameMaster") {
|
|
34086
34081
|
const master = slideMasters[target.masterIndex];
|
|
34087
34082
|
const current = id === "renameLayout" ? master?.layouts?.[target.layoutIndex ?? -1]?.name ?? "" : master?.name ?? "";
|
|
34088
|
-
const next =
|
|
34083
|
+
const next = chunkMFGD7XVJ_js.safePrompt(t("pptx.masterView.renamePrompt"), current)?.trim();
|
|
34089
34084
|
if (!next) {
|
|
34090
34085
|
return;
|
|
34091
34086
|
}
|
|
@@ -34544,7 +34539,7 @@ var PowerPointViewer = React97.forwardRef(
|
|
|
34544
34539
|
}
|
|
34545
34540
|
})();
|
|
34546
34541
|
}, []);
|
|
34547
|
-
const { optionsStore, options: viewerOptions } =
|
|
34542
|
+
const { optionsStore, options: viewerOptions } = chunkMFGD7XVJ_js.useViewerOptions();
|
|
34548
34543
|
const custom = useViewerCustomization(customization, legacyHiddenActions, optionsStore);
|
|
34549
34544
|
const { resolved: customizationResolved, hiddenActions } = custom;
|
|
34550
34545
|
const aiEnabled = Boolean(ai) && pptx.isFeatureEnabled(customizationResolved, "ai");
|
|
@@ -34558,8 +34553,8 @@ var PowerPointViewer = React97.forwardRef(
|
|
|
34558
34553
|
const handleEnableEditing = React97.useCallback(() => {
|
|
34559
34554
|
setProtectedViewOverridden(true);
|
|
34560
34555
|
}, []);
|
|
34561
|
-
const readOnlyRec =
|
|
34562
|
-
const compatToastsState =
|
|
34556
|
+
const readOnlyRec = chunkMFGD7XVJ_js.useReadOnlyRecommendationState(content);
|
|
34557
|
+
const compatToastsState = chunkMFGD7XVJ_js.useCompatibilityToastsState();
|
|
34563
34558
|
const [notesBarHeight, setNotesBarHeight] = React97.useState(0);
|
|
34564
34559
|
const runProgramNoticesState = useRunProgramNoticesState();
|
|
34565
34560
|
const [collaborationReadOnly, setCollaborationReadOnly] = React97.useState(Boolean(collaboration));
|
|
@@ -34574,8 +34569,8 @@ var PowerPointViewer = React97.forwardRef(
|
|
|
34574
34569
|
filePath
|
|
34575
34570
|
});
|
|
34576
34571
|
const [isShareDialogOpen, setIsShareDialogOpen] = React97.useState(false);
|
|
34577
|
-
const { reducedMotion, toggleReducedMotion } =
|
|
34578
|
-
const state =
|
|
34572
|
+
const { reducedMotion, toggleReducedMotion } = chunkMFGD7XVJ_js.useReducedMotion();
|
|
34573
|
+
const state = chunkMFGD7XVJ_js.useViewerState({ content, canEdit });
|
|
34579
34574
|
const {
|
|
34580
34575
|
containerRef,
|
|
34581
34576
|
mode,
|
|
@@ -34599,7 +34594,7 @@ var PowerPointViewer = React97.forwardRef(
|
|
|
34599
34594
|
[state.recentColors, pushColor]
|
|
34600
34595
|
);
|
|
34601
34596
|
const themeColorMapValue = React97.useMemo(
|
|
34602
|
-
() => state.theme?.colorScheme ? (0,
|
|
34597
|
+
() => state.theme?.colorScheme ? (0, chunkRHNJ4IU2_js.dist_exports.buildThemeColorMap)(state.theme.colorScheme) : void 0,
|
|
34603
34598
|
[state.theme?.colorScheme]
|
|
34604
34599
|
);
|
|
34605
34600
|
const settings = React97.useMemo(
|
|
@@ -34686,16 +34681,16 @@ var PowerPointViewer = React97.forwardRef(
|
|
|
34686
34681
|
}
|
|
34687
34682
|
}, [settings, optionsStore]);
|
|
34688
34683
|
const handleClearOptionsCache2 = useAutosaveCacheMaintenance(viewerOptions);
|
|
34689
|
-
const mobile =
|
|
34684
|
+
const mobile = chunkMFGD7XVJ_js.useIsMobile();
|
|
34690
34685
|
const { isMobile, isTouchDevice, isVirtualKeyboardOpen } = mobile;
|
|
34691
|
-
const resizablePanels =
|
|
34686
|
+
const resizablePanels = chunkMFGD7XVJ_js.useResizablePanels();
|
|
34692
34687
|
const {
|
|
34693
34688
|
gridSpacingPx,
|
|
34694
34689
|
visibleSlideIndexes,
|
|
34695
34690
|
slideSectionGroups,
|
|
34696
34691
|
masterPseudoSlide,
|
|
34697
34692
|
authoredRange
|
|
34698
|
-
} =
|
|
34693
|
+
} = chunkMFGD7XVJ_js.useDerivedSlideState({
|
|
34699
34694
|
slides,
|
|
34700
34695
|
sections: state.sections,
|
|
34701
34696
|
customShows: state.customShows,
|
|
@@ -34720,7 +34715,7 @@ var PowerPointViewer = React97.forwardRef(
|
|
|
34720
34715
|
state.cropSessionRef
|
|
34721
34716
|
]
|
|
34722
34717
|
);
|
|
34723
|
-
const zoom =
|
|
34718
|
+
const zoom = chunkMFGD7XVJ_js.useZoomViewport({
|
|
34724
34719
|
canvasSize,
|
|
34725
34720
|
selectedElements: state.selectedElements,
|
|
34726
34721
|
fitPadding: props.fitPadding,
|
|
@@ -34730,7 +34725,7 @@ var PowerPointViewer = React97.forwardRef(
|
|
|
34730
34725
|
const markDocumentDirty = React97.useCallback(() => {
|
|
34731
34726
|
setIsDirty(true);
|
|
34732
34727
|
}, [setIsDirty]);
|
|
34733
|
-
const history =
|
|
34728
|
+
const history = chunkMFGD7XVJ_js.useEditorHistory({
|
|
34734
34729
|
slides,
|
|
34735
34730
|
canvasSize,
|
|
34736
34731
|
activeSlideIndex,
|
|
@@ -34756,7 +34751,7 @@ var PowerPointViewer = React97.forwardRef(
|
|
|
34756
34751
|
setEditTemplateMode: state.setEditTemplateMode,
|
|
34757
34752
|
setHeaderFooter: state.setHeaderFooter
|
|
34758
34753
|
});
|
|
34759
|
-
const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } =
|
|
34754
|
+
const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = chunkMFGD7XVJ_js.usePresentationSetup({
|
|
34760
34755
|
mode,
|
|
34761
34756
|
slides,
|
|
34762
34757
|
visibleSlideIndexes,
|
|
@@ -34798,7 +34793,7 @@ var PowerPointViewer = React97.forwardRef(
|
|
|
34798
34793
|
onSetActiveCustomShowId: state.setActiveCustomShowId,
|
|
34799
34794
|
onAddRunProgramNotice: runProgramNoticesState.addNotice
|
|
34800
34795
|
});
|
|
34801
|
-
|
|
34796
|
+
chunkMFGD7XVJ_js.useTouchGestures({
|
|
34802
34797
|
targetRef: zoom.canvasViewportRef,
|
|
34803
34798
|
currentScale: zoom.scale,
|
|
34804
34799
|
callbacks: {
|
|
@@ -34820,7 +34815,7 @@ var PowerPointViewer = React97.forwardRef(
|
|
|
34820
34815
|
},
|
|
34821
34816
|
enabled: isTouchDevice
|
|
34822
34817
|
});
|
|
34823
|
-
const dialogs =
|
|
34818
|
+
const dialogs = chunkMFGD7XVJ_js.useViewerDialogs({
|
|
34824
34819
|
mode,
|
|
34825
34820
|
slides,
|
|
34826
34821
|
activeSlide,
|
|
@@ -34869,7 +34864,7 @@ var PowerPointViewer = React97.forwardRef(
|
|
|
34869
34864
|
zoom.handleZoomToFit();
|
|
34870
34865
|
zoom.canvasViewportRef.current?.scrollTo({ left: 0, top: 0 });
|
|
34871
34866
|
}, [mode]);
|
|
34872
|
-
const editorOps =
|
|
34867
|
+
const editorOps = chunkMFGD7XVJ_js.useEditorOperations({
|
|
34873
34868
|
state,
|
|
34874
34869
|
history,
|
|
34875
34870
|
zoom,
|
|
@@ -34911,7 +34906,7 @@ var PowerPointViewer = React97.forwardRef(
|
|
|
34911
34906
|
setIsEncryptedDialogOpen,
|
|
34912
34907
|
handlerRef,
|
|
34913
34908
|
loadVersion
|
|
34914
|
-
} =
|
|
34909
|
+
} = chunkMFGD7XVJ_js.useViewerIntegration({
|
|
34915
34910
|
transformCommittedText: (text) => pptx.applyAutoCorrect(text, viewerOptions.proofing),
|
|
34916
34911
|
state,
|
|
34917
34912
|
zoom,
|
|
@@ -34985,7 +34980,7 @@ var PowerPointViewer = React97.forwardRef(
|
|
|
34985
34980
|
updateThemeFontScheme: themeHandlers.handleUpdateThemeFontScheme
|
|
34986
34981
|
});
|
|
34987
34982
|
const ribbonScope = useRibbonScopeToken();
|
|
34988
|
-
const viewPreferencesSync =
|
|
34983
|
+
const viewPreferencesSync = chunkMFGD7XVJ_js.useViewPreferencesSync({
|
|
34989
34984
|
loadVersion,
|
|
34990
34985
|
viewProperties: state.viewProperties,
|
|
34991
34986
|
setViewProperties: state.setViewProperties,
|
|
@@ -35023,7 +35018,7 @@ var PowerPointViewer = React97.forwardRef(
|
|
|
35023
35018
|
},
|
|
35024
35019
|
[state]
|
|
35025
35020
|
);
|
|
35026
|
-
const layoutSwitching =
|
|
35021
|
+
const layoutSwitching = chunkMFGD7XVJ_js.useLayoutSwitching({
|
|
35027
35022
|
handler: handlerRef.current,
|
|
35028
35023
|
slides,
|
|
35029
35024
|
activeSlideIndex,
|
|
@@ -35119,7 +35114,7 @@ var PowerPointViewer = React97.forwardRef(
|
|
|
35119
35114
|
"data-pptx-editor-chrome": "",
|
|
35120
35115
|
...{ [pptx.RIBBON_SCOPE_ATTR]: ribbonScope },
|
|
35121
35116
|
"aria-busy": loading,
|
|
35122
|
-
className:
|
|
35117
|
+
className: chunkRHNJ4IU2_js.cn(
|
|
35123
35118
|
"h-full w-full bg-background text-foreground relative",
|
|
35124
35119
|
...pptx.resolveOptionRootClasses(viewerOptions, "pptx")
|
|
35125
35120
|
),
|
|
@@ -35303,7 +35298,7 @@ var PowerPointViewer = React97.forwardRef(
|
|
|
35303
35298
|
] }) })
|
|
35304
35299
|
}
|
|
35305
35300
|
),
|
|
35306
|
-
mode !== "present" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
35301
|
+
mode !== "present" && rootOptions.showCompatibilityToasts && /* @__PURE__ */ jsxRuntime.jsx(
|
|
35307
35302
|
CompatibilityToasts,
|
|
35308
35303
|
{
|
|
35309
35304
|
toasts: compatToastsState.toasts,
|
|
@@ -35510,8 +35505,8 @@ var PowerPointViewer = React97.forwardRef(
|
|
|
35510
35505
|
// Nothing previously provided it, so every one of those consumers was
|
|
35511
35506
|
// silently reading `DEFAULT_VIEWER_OPTIONS` forever, no matter what
|
|
35512
35507
|
// the user changed in the Options dialog.
|
|
35513
|
-
/* @__PURE__ */ jsxRuntime.jsx(ViewerOptionsProvider, { options: viewerOptions, store: optionsStore, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCustomizationContext.Provider, { value: customizationResolved, children: /* @__PURE__ */ jsxRuntime.jsx(AccountAuthContext.Provider, { value: accountAuth, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
35514
|
-
|
|
35508
|
+
/* @__PURE__ */ jsxRuntime.jsx(ViewerOptionsProvider, { options: viewerOptions, store: optionsStore, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCustomizationContext.Provider, { value: customizationResolved, children: /* @__PURE__ */ jsxRuntime.jsx(AccountAuthContext.Provider, { value: accountAuth, children: /* @__PURE__ */ jsxRuntime.jsx(chunkMFGD7XVJ_js.Rendering3DFlagsContext.Provider, { value: effective3D, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
35509
|
+
chunkMFGD7XVJ_js.CollaborationProvider,
|
|
35515
35510
|
{
|
|
35516
35511
|
config: collaboration,
|
|
35517
35512
|
canvasWidth: canvasSize.width,
|
|
@@ -35569,7 +35564,7 @@ var PowerPointViewer = React97.forwardRef(
|
|
|
35569
35564
|
);
|
|
35570
35565
|
PowerPointViewer.displayName = "PowerPointViewer";
|
|
35571
35566
|
function CollaborationStatusStrip() {
|
|
35572
|
-
const collab =
|
|
35567
|
+
const collab = chunkMFGD7XVJ_js.useCollaboration();
|
|
35573
35568
|
if (!collab) {
|
|
35574
35569
|
return null;
|
|
35575
35570
|
}
|
|
@@ -35593,8 +35588,8 @@ function CollaborationDocumentSync({
|
|
|
35593
35588
|
deckSaveState,
|
|
35594
35589
|
onReadOnlyChange
|
|
35595
35590
|
}) {
|
|
35596
|
-
const collab =
|
|
35597
|
-
|
|
35591
|
+
const collab = chunkMFGD7XVJ_js.useCollaboration();
|
|
35592
|
+
chunkMFGD7XVJ_js.useCollaborationDocumentSync({
|
|
35598
35593
|
collaboration: collab,
|
|
35599
35594
|
slides,
|
|
35600
35595
|
templateElementsBySlideId,
|
|
@@ -35613,14 +35608,14 @@ function CollaborationFollowLayer({
|
|
|
35613
35608
|
setActiveSlideIndex,
|
|
35614
35609
|
slideCount
|
|
35615
35610
|
}) {
|
|
35616
|
-
const collab =
|
|
35617
|
-
const { followedClientId, followUser } =
|
|
35611
|
+
const collab = chunkMFGD7XVJ_js.useCollaboration();
|
|
35612
|
+
const { followedClientId, followUser } = chunkMFGD7XVJ_js.useFollowMode({
|
|
35618
35613
|
collab,
|
|
35619
35614
|
activeSlideIndex,
|
|
35620
35615
|
setActiveSlideIndex,
|
|
35621
35616
|
slideCount
|
|
35622
35617
|
});
|
|
35623
|
-
|
|
35618
|
+
chunkMFGD7XVJ_js.useBroadcastFollower({
|
|
35624
35619
|
collab,
|
|
35625
35620
|
activeSlideIndex,
|
|
35626
35621
|
setActiveSlideIndex,
|