pptx-react-viewer 4.30.3 → 4.31.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/dist/{AiChatPanel-STFWEZCZ.mjs → AiChatPanel-I3D2C4YR.mjs} +1 -1
- package/dist/AiChatPanel-I3D2C4YR.mjs.br +0 -0
- package/dist/AiChatPanel-I3D2C4YR.mjs.gz +0 -0
- package/dist/{AiChatPanel-6VWW4FHG.js → AiChatPanel-JKF3V3IM.js} +9 -9
- package/dist/AiChatPanel-JKF3V3IM.js.br +0 -0
- package/dist/AiChatPanel-JKF3V3IM.js.gz +0 -0
- package/dist/{chunk-RDT4I7MA.mjs → chunk-7EFQBIJG.mjs} +1 -1
- package/dist/chunk-7EFQBIJG.mjs.br +0 -0
- package/dist/chunk-7EFQBIJG.mjs.gz +0 -0
- package/dist/{chunk-FTNLOQ2T.mjs → chunk-CBR27PI3.mjs} +40 -6
- package/dist/chunk-CBR27PI3.mjs.br +0 -0
- package/dist/chunk-CBR27PI3.mjs.gz +0 -0
- package/dist/{chunk-IS76G64B.mjs → chunk-FBG42UO3.mjs} +4 -0
- package/dist/chunk-FBG42UO3.mjs.br +0 -0
- package/dist/chunk-FBG42UO3.mjs.gz +0 -0
- package/dist/{chunk-QO2AMZPA.js → chunk-POPGQIVR.js} +4 -0
- package/dist/chunk-POPGQIVR.js.br +0 -0
- package/dist/chunk-POPGQIVR.js.gz +0 -0
- package/dist/{chunk-BOQCAJIA.js → chunk-TUYNK3GE.js} +245 -245
- package/dist/chunk-TUYNK3GE.js.br +0 -0
- package/dist/chunk-TUYNK3GE.js.gz +0 -0
- package/dist/{chunk-3NIBDU4D.js → chunk-VLZXLGG5.js} +418 -384
- package/dist/chunk-VLZXLGG5.js.br +0 -0
- package/dist/chunk-VLZXLGG5.js.gz +0 -0
- package/dist/index.d.ts +2 -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 +2 -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-6VWW4FHG.js.br +0 -0
- package/dist/AiChatPanel-6VWW4FHG.js.gz +0 -0
- package/dist/AiChatPanel-STFWEZCZ.mjs.br +0 -0
- package/dist/AiChatPanel-STFWEZCZ.mjs.gz +0 -0
- package/dist/chunk-3NIBDU4D.js.br +0 -0
- package/dist/chunk-3NIBDU4D.js.gz +0 -0
- package/dist/chunk-BOQCAJIA.js.br +0 -0
- package/dist/chunk-BOQCAJIA.js.gz +0 -0
- package/dist/chunk-FTNLOQ2T.mjs.br +0 -0
- package/dist/chunk-FTNLOQ2T.mjs.gz +0 -0
- package/dist/chunk-IS76G64B.mjs.br +0 -0
- package/dist/chunk-IS76G64B.mjs.gz +0 -0
- package/dist/chunk-QO2AMZPA.js.br +0 -0
- package/dist/chunk-QO2AMZPA.js.gz +0 -0
- package/dist/chunk-RDT4I7MA.mjs.br +0 -0
- package/dist/chunk-RDT4I7MA.mjs.gz +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunkTUYNK3GE_js = require('./chunk-TUYNK3GE.js');
|
|
4
|
+
var chunkPOPGQIVR_js = require('./chunk-POPGQIVR.js');
|
|
5
5
|
var pptx = require('ooxml-ui/pptx');
|
|
6
6
|
var React98 = 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
|
+
chunkTUYNK3GE_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 } = chunkTUYNK3GE_js.useModalDismissDrag(onClose);
|
|
380
380
|
const [selected, setSelected] = React98.useState(null);
|
|
381
381
|
const dialogRef = React98.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: chunkPOPGQIVR_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 } = chunkTUYNK3GE_js.useToolbarVisibility(p.hiddenActions);
|
|
727
727
|
const { onGroupElements, onUngroupElement, onUpdateElementStyle } = p;
|
|
728
728
|
const controls = React98.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
|
+
chunkTUYNK3GE_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.31.1" ;
|
|
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: chunkPOPGQIVR_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] = React98.useState("");
|
|
1480
1480
|
const [recent, setRecent] = React98.useState([]);
|
|
1481
|
-
const { isHidden } =
|
|
1481
|
+
const { isHidden } = chunkTUYNK3GE_js.useToolbarVisibility(p.hiddenActions);
|
|
1482
1482
|
const exportHidden = isHidden("export");
|
|
1483
1483
|
React98.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: chunkPOPGQIVR_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: chunkPOPGQIVR_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
|
+
chunkTUYNK3GE_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: chunkPOPGQIVR_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 = React98.useContext(
|
|
2428
|
+
const supplied = React98.useContext(chunkTUYNK3GE_js.ViewerOptionsStoreContext);
|
|
2429
2429
|
const fallback = React98.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 } = chunkTUYNK3GE_js.useToolbarVisibility(p.hiddenActions);
|
|
2463
2463
|
const [showsOpen, setShowsOpen] = React98.useState(false);
|
|
2464
2464
|
const showsRef = React98.useRef(null);
|
|
2465
2465
|
React98.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, chunkPOPGQIVR_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, chunkPOPGQIVR_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, chunkPOPGQIVR_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, chunkPOPGQIVR_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 = React98.useCallback(() => {
|
|
2830
|
-
if (!element || !(0,
|
|
2830
|
+
if (!element || !(0, chunkPOPGQIVR_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, chunkPOPGQIVR_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, chunkPOPGQIVR_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, chunkPOPGQIVR_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, chunkPOPGQIVR_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, chunkPOPGQIVR_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, chunkPOPGQIVR_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 = React98.useRef(null);
|
|
2995
2995
|
const { t } = reactI18next.useTranslation();
|
|
2996
|
-
const { dragY, dragging, handlers } =
|
|
2996
|
+
const { dragY, dragging, handlers } = chunkTUYNK3GE_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: chunkPOPGQIVR_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] = React98.useState("home");
|
|
3084
|
-
const { isTabVisible } =
|
|
3084
|
+
const { isTabVisible } = chunkTUYNK3GE_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: chunkPOPGQIVR_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] = React98.useState(false);
|
|
3365
|
-
const { isHidden } =
|
|
3365
|
+
const { isHidden } = chunkTUYNK3GE_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, chunkPOPGQIVR_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 = React98.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 = chunkTUYNK3GE_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
|
+
chunkPOPGQIVR_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: chunkPOPGQIVR_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: chunkPOPGQIVR_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 = chunkTUYNK3GE_js.useCollaboration();
|
|
3591
3591
|
const isCollaborating = Boolean(collab && collab.status === "connected");
|
|
3592
|
-
const { isHidden } =
|
|
3592
|
+
const { isHidden } = chunkTUYNK3GE_js.useToolbarVisibility(p.hiddenActions);
|
|
3593
3593
|
const customization = useViewerCustomizationContext();
|
|
3594
3594
|
const ref = React98.useRef(null);
|
|
3595
3595
|
const handlers = React98.useRef(p);
|
|
@@ -3644,7 +3644,7 @@ function TabRowActions(p) {
|
|
|
3644
3644
|
}
|
|
3645
3645
|
function TitleBarElement(p) {
|
|
3646
3646
|
const { t } = reactI18next.useTranslation();
|
|
3647
|
-
const options =
|
|
3647
|
+
const options = chunkTUYNK3GE_js.useViewerOptionsContext();
|
|
3648
3648
|
const customization = useViewerCustomizationContext();
|
|
3649
3649
|
const ref = React98.useRef(null);
|
|
3650
3650
|
const stripVisible = options.quickAccess.visible && pptx.isPanelVisible(customization, "quickAccessToolbar");
|
|
@@ -3717,7 +3717,7 @@ function PresentDropdown({
|
|
|
3717
3717
|
{
|
|
3718
3718
|
type: "button",
|
|
3719
3719
|
onClick: onPresent,
|
|
3720
|
-
className:
|
|
3720
|
+
className: chunkPOPGQIVR_js.cn(
|
|
3721
3721
|
"px-2 py-1 transition-colors",
|
|
3722
3722
|
isActive ? "bg-primary text-white" : "hover:bg-accent text-foreground"
|
|
3723
3723
|
),
|
|
@@ -3730,7 +3730,7 @@ function PresentDropdown({
|
|
|
3730
3730
|
{
|
|
3731
3731
|
type: "button",
|
|
3732
3732
|
onClick: () => setOpen((prev) => !prev),
|
|
3733
|
-
className:
|
|
3733
|
+
className: chunkPOPGQIVR_js.cn(
|
|
3734
3734
|
"inline-flex items-center px-1 transition-colors border-l border-border",
|
|
3735
3735
|
open ? "bg-primary text-white" : "hover:bg-accent text-foreground"
|
|
3736
3736
|
),
|
|
@@ -3933,7 +3933,7 @@ function OverflowMenu(p) {
|
|
|
3933
3933
|
{
|
|
3934
3934
|
type: "button",
|
|
3935
3935
|
onClick: () => p.onSetOverflowMenuOpen(!p.isOverflowMenuOpen),
|
|
3936
|
-
className:
|
|
3936
|
+
className: chunkPOPGQIVR_js.cn(
|
|
3937
3937
|
"p-1.5 rounded transition-colors",
|
|
3938
3938
|
p.isOverflowMenuOpen ? "bg-primary/80 text-white" : "bg-muted hover:bg-accent"
|
|
3939
3939
|
),
|
|
@@ -3980,7 +3980,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
3980
3980
|
onToggleSidebar,
|
|
3981
3981
|
onToggleInspector
|
|
3982
3982
|
} = p;
|
|
3983
|
-
const collab =
|
|
3983
|
+
const collab = chunkTUYNK3GE_js.useCollaboration();
|
|
3984
3984
|
const customization = useViewerCustomizationContext();
|
|
3985
3985
|
const showSlidesToggle = pptx.isPanelVisible(customization, "slidesPane");
|
|
3986
3986
|
const showInspectorToggle = pptx.isPanelVisible(customization, "inspector");
|
|
@@ -3998,7 +3998,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
3998
3998
|
{
|
|
3999
3999
|
type: "button",
|
|
4000
4000
|
onClick: onToggleSidebar,
|
|
4001
|
-
className:
|
|
4001
|
+
className: chunkPOPGQIVR_js.cn(qab, !isSidebarCollapsed ? "text-foreground" : "text-muted-foreground"),
|
|
4002
4002
|
title: t("pptx.toolbar.toggleSlidesPanel"),
|
|
4003
4003
|
"aria-label": t("pptx.toolbar.toggleSlidesPanel"),
|
|
4004
4004
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelLeft, { className: ic })
|
|
@@ -4059,7 +4059,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
4059
4059
|
{
|
|
4060
4060
|
type: "button",
|
|
4061
4061
|
onClick: onToggleInspector,
|
|
4062
|
-
className:
|
|
4062
|
+
className: chunkPOPGQIVR_js.cn(qab, isInspectorPaneOpen ? "text-foreground" : "text-muted-foreground"),
|
|
4063
4063
|
title: t("pptx.toolbar.toggleInspector"),
|
|
4064
4064
|
"aria-label": t("pptx.toolbar.toggleInspector"),
|
|
4065
4065
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelRight, { className: ic })
|
|
@@ -4070,7 +4070,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
4070
4070
|
{
|
|
4071
4071
|
type: "button",
|
|
4072
4072
|
onClick: p.onToggleAiPanel,
|
|
4073
|
-
className:
|
|
4073
|
+
className: chunkPOPGQIVR_js.cn(qab, p.isAiPanelOpen ? "text-primary" : "text-muted-foreground"),
|
|
4074
4074
|
title: t("pptx.toolbar.toggleAiAssistant"),
|
|
4075
4075
|
"aria-label": t("pptx.toolbar.toggleAiAssistant"),
|
|
4076
4076
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSparkles, { className: ic })
|
|
@@ -4081,7 +4081,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
4081
4081
|
{
|
|
4082
4082
|
type: "button",
|
|
4083
4083
|
onClick: p.onOpenSettings ?? p.onToggleShortcuts,
|
|
4084
|
-
className:
|
|
4084
|
+
className: chunkPOPGQIVR_js.cn(qab, "text-muted-foreground"),
|
|
4085
4085
|
title: t("pptx.toolbar.settingsShortcuts"),
|
|
4086
4086
|
"aria-label": t("pptx.toolbar.settings"),
|
|
4087
4087
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSettings, { className: ics })
|
|
@@ -4278,8 +4278,8 @@ function ToolbarLateTabs({
|
|
|
4278
4278
|
function Toolbar(p) {
|
|
4279
4279
|
const { mode, isNarrowViewport, isCompactToolbarOpen, toolbarSection, onSetToolbarSection } = p;
|
|
4280
4280
|
const { t } = reactI18next.useTranslation();
|
|
4281
|
-
const { isTabVisible } =
|
|
4282
|
-
const viewerOptions =
|
|
4281
|
+
const { isTabVisible } = chunkTUYNK3GE_js.useToolbarVisibility(p.hiddenActions);
|
|
4282
|
+
const viewerOptions = chunkTUYNK3GE_js.useViewerOptionsContext();
|
|
4283
4283
|
const customization = useViewerCustomizationContext();
|
|
4284
4284
|
const belowInput = React98.useMemo(
|
|
4285
4285
|
() => ({
|
|
@@ -4364,7 +4364,7 @@ function Toolbar(p) {
|
|
|
4364
4364
|
{
|
|
4365
4365
|
type: "button",
|
|
4366
4366
|
onClick: p.onToggleCompactToolbar,
|
|
4367
|
-
className:
|
|
4367
|
+
className: chunkPOPGQIVR_js.cn(
|
|
4368
4368
|
"px-2 py-1 rounded text-[11px] transition-colors mr-1",
|
|
4369
4369
|
isCompactToolbarOpen ? "bg-primary/80 text-white" : "text-muted-foreground hover:text-foreground"
|
|
4370
4370
|
),
|
|
@@ -4390,7 +4390,7 @@ function Toolbar(p) {
|
|
|
4390
4390
|
{
|
|
4391
4391
|
ref: attachOverflow,
|
|
4392
4392
|
"data-pptx-chrome": "ribbon-content",
|
|
4393
|
-
className:
|
|
4393
|
+
className: chunkPOPGQIVR_js.cn(
|
|
4394
4394
|
// Plain controls stay compact; labelled RibbonGroups opt into stretching.
|
|
4395
4395
|
// `RibbonGroupScope` wraps controls in a `display: contents` div, so its
|
|
4396
4396
|
// children are this row's flex items too and must not shrink (a shrunk
|
|
@@ -5243,7 +5243,7 @@ function DrawingOverlaySvg({
|
|
|
5243
5243
|
onPointerDown,
|
|
5244
5244
|
onPointerMove,
|
|
5245
5245
|
onPointerUp,
|
|
5246
|
-
children: isStrokeActive && liveStrokeView ?
|
|
5246
|
+
children: isStrokeActive && liveStrokeView ? chunkTUYNK3GE_js.renderStrokeView(liveStrokeView, true, void 0, "ink-live-preview") : isStrokeActive && liveStrokeD && /* @__PURE__ */ jsxRuntime.jsx(
|
|
5247
5247
|
"path",
|
|
5248
5248
|
{
|
|
5249
5249
|
d: liveStrokeD,
|
|
@@ -5258,7 +5258,7 @@ function DrawingOverlaySvg({
|
|
|
5258
5258
|
}
|
|
5259
5259
|
);
|
|
5260
5260
|
}
|
|
5261
|
-
function GridOverlay({ canvasSize, gridSpacingPx =
|
|
5261
|
+
function GridOverlay({ canvasSize, gridSpacingPx = chunkPOPGQIVR_js.GRID_SIZE, visible }) {
|
|
5262
5262
|
const spacing = Math.max(gridSpacingPx, 2);
|
|
5263
5263
|
const patternId = React98.useMemo(() => `grid-dot-pattern-${Math.random().toString(36).slice(2, 8)}`, []);
|
|
5264
5264
|
if (!visible) {
|
|
@@ -5822,7 +5822,7 @@ function PictureCropOverlay({
|
|
|
5822
5822
|
};
|
|
5823
5823
|
};
|
|
5824
5824
|
const { ghost, frame, handles } = overlay;
|
|
5825
|
-
const src =
|
|
5825
|
+
const src = chunkTUYNK3GE_js.imgSrc(element);
|
|
5826
5826
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5827
5827
|
"div",
|
|
5828
5828
|
{
|
|
@@ -6235,10 +6235,10 @@ function SelectionHandleOverlay({
|
|
|
6235
6235
|
position: "absolute",
|
|
6236
6236
|
left: element.x,
|
|
6237
6237
|
top: element.y,
|
|
6238
|
-
width: Math.max(element.width,
|
|
6239
|
-
height: Math.max(element.height,
|
|
6240
|
-
["--pptx-selection-width"]: `${Math.max(element.width,
|
|
6241
|
-
["--pptx-selection-height"]: `${Math.max(element.height,
|
|
6238
|
+
width: Math.max(element.width, chunkPOPGQIVR_js.MIN_ELEMENT_SIZE),
|
|
6239
|
+
height: Math.max(element.height, chunkPOPGQIVR_js.MIN_ELEMENT_SIZE),
|
|
6240
|
+
["--pptx-selection-width"]: `${Math.max(element.width, chunkPOPGQIVR_js.MIN_ELEMENT_SIZE)}px`,
|
|
6241
|
+
["--pptx-selection-height"]: `${Math.max(element.height, chunkPOPGQIVR_js.MIN_ELEMENT_SIZE)}px`,
|
|
6242
6242
|
// Every slide element carries an explicit numeric `zIndex` (see
|
|
6243
6243
|
// `getContainerStyle`), so a sibling with no z-index at all paints
|
|
6244
6244
|
// at the CSS "z-index: 0" level regardless of DOM order: any
|
|
@@ -6250,7 +6250,7 @@ function SelectionHandleOverlay({
|
|
|
6250
6250
|
// (marquee z-50, connector overlay z-55/56) to match, well clear of
|
|
6251
6251
|
// any realistic per-slide element count.
|
|
6252
6252
|
zIndex: 58,
|
|
6253
|
-
transform:
|
|
6253
|
+
transform: chunkPOPGQIVR_js.getElementTransform(element),
|
|
6254
6254
|
transformOrigin: "center",
|
|
6255
6255
|
// Transparent everywhere a handle button is not, so a click that
|
|
6256
6256
|
// misses every handle still reaches the shape (or whatever is
|
|
@@ -6262,14 +6262,14 @@ function SelectionHandleOverlay({
|
|
|
6262
6262
|
onDoubleClick: (e) => onDoubleClick(element.id, e),
|
|
6263
6263
|
onContextMenu: (e) => onContextMenu(element.id, e),
|
|
6264
6264
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6265
|
-
|
|
6265
|
+
chunkTUYNK3GE_js.ResizeHandles,
|
|
6266
6266
|
{
|
|
6267
6267
|
elementId: element.id,
|
|
6268
6268
|
adjustmentHandles,
|
|
6269
6269
|
onResizePointerDown,
|
|
6270
6270
|
onAdjustmentPointerDown,
|
|
6271
6271
|
rotation: element.rotation,
|
|
6272
|
-
nonRotationTransform:
|
|
6272
|
+
nonRotationTransform: chunkPOPGQIVR_js.getElementTransformWithoutRotation(element),
|
|
6273
6273
|
onRotate: allow.rotatable ? onRotate : void 0,
|
|
6274
6274
|
forcePointerEvents: true
|
|
6275
6275
|
}
|
|
@@ -6972,7 +6972,7 @@ function SlideCanvas(props) {
|
|
|
6972
6972
|
props.registerInlineEditReader
|
|
6973
6973
|
]
|
|
6974
6974
|
);
|
|
6975
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6975
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkTUYNK3GE_js.InlineCollaborationContext.Provider, { value, children: /* @__PURE__ */ jsxRuntime.jsx(SlideCanvasContent, { ...props }) });
|
|
6976
6976
|
}
|
|
6977
6977
|
function SlideCanvasContent({
|
|
6978
6978
|
imagePaste,
|
|
@@ -7241,7 +7241,7 @@ function SlideCanvasContent({
|
|
|
7241
7241
|
onPointerMove: handleStagePointerMove,
|
|
7242
7242
|
onPointerUp: handleStagePointerUp,
|
|
7243
7243
|
children: [
|
|
7244
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7244
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkTUYNK3GE_js.SlideBackgroundImageLayer, { slide: activeSlide }),
|
|
7245
7245
|
presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
|
|
7246
7246
|
/* @__PURE__ */ jsxRuntime.jsx(GridOverlay, { canvasSize, gridSpacingPx, visible: showGrid }),
|
|
7247
7247
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -7253,7 +7253,7 @@ function SlideCanvasContent({
|
|
|
7253
7253
|
}
|
|
7254
7254
|
),
|
|
7255
7255
|
templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
7256
|
-
|
|
7256
|
+
chunkTUYNK3GE_js.ElementRenderer,
|
|
7257
7257
|
{
|
|
7258
7258
|
element,
|
|
7259
7259
|
activeSlide,
|
|
@@ -7275,7 +7275,7 @@ function SlideCanvasContent({
|
|
|
7275
7275
|
),
|
|
7276
7276
|
renderInk: false,
|
|
7277
7277
|
renderGroups: true,
|
|
7278
|
-
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ?
|
|
7278
|
+
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunkPOPGQIVR_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
|
|
7279
7279
|
onResizePointerDown: stableResizePointerDown,
|
|
7280
7280
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
7281
7281
|
onRotate: stableRotate,
|
|
@@ -7297,7 +7297,7 @@ function SlideCanvasContent({
|
|
|
7297
7297
|
`tpl-${element.id}`
|
|
7298
7298
|
)),
|
|
7299
7299
|
activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
7300
|
-
|
|
7300
|
+
chunkTUYNK3GE_js.ElementRenderer,
|
|
7301
7301
|
{
|
|
7302
7302
|
element,
|
|
7303
7303
|
activeSlide,
|
|
@@ -7319,7 +7319,7 @@ function SlideCanvasContent({
|
|
|
7319
7319
|
),
|
|
7320
7320
|
renderInk: true,
|
|
7321
7321
|
renderGroups: true,
|
|
7322
|
-
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ?
|
|
7322
|
+
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunkPOPGQIVR_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
|
|
7323
7323
|
onResizePointerDown: stableResizePointerDown,
|
|
7324
7324
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
7325
7325
|
onRotate: stableRotate,
|
|
@@ -7363,7 +7363,7 @@ function SlideCanvasContent({
|
|
|
7363
7363
|
editingMember && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
7364
7364
|
/* @__PURE__ */ jsxRuntime.jsx("style", { children: `[data-element-id="${cssAttr(editingMember.parentId)}"] [data-element-id="${cssAttr(editingMember.member.id)}"]{visibility:hidden}` }),
|
|
7365
7365
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7366
|
-
|
|
7366
|
+
chunkTUYNK3GE_js.ElementRenderer,
|
|
7367
7367
|
{
|
|
7368
7368
|
element: editingMember.member,
|
|
7369
7369
|
activeSlide,
|
|
@@ -7398,11 +7398,11 @@ function SlideCanvasContent({
|
|
|
7398
7398
|
`group-member-edit-${editingMember.member.id}`
|
|
7399
7399
|
)
|
|
7400
7400
|
] }),
|
|
7401
|
-
selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !
|
|
7401
|
+
selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !chunkPOPGQIVR_js.isConnectorOrLineElement(selectedElement) && outlineAuthoring?.editPointsElementId !== selectedElement.id && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7402
7402
|
SelectionHandleOverlay,
|
|
7403
7403
|
{
|
|
7404
7404
|
element: selectedElement,
|
|
7405
|
-
adjustmentHandles:
|
|
7405
|
+
adjustmentHandles: chunkPOPGQIVR_js.getShapeAdjustmentHandleDescriptors(selectedElement),
|
|
7406
7406
|
onResizePointerDown: stableResizePointerDown,
|
|
7407
7407
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
7408
7408
|
onRotate: stableRotate,
|
|
@@ -7516,7 +7516,7 @@ function LoadingState({ className }) {
|
|
|
7516
7516
|
role: "status",
|
|
7517
7517
|
"aria-live": "polite",
|
|
7518
7518
|
"aria-atomic": "true",
|
|
7519
|
-
className:
|
|
7519
|
+
className: chunkPOPGQIVR_js.cn(
|
|
7520
7520
|
"h-full w-full flex items-center justify-center text-muted-foreground",
|
|
7521
7521
|
className
|
|
7522
7522
|
),
|
|
@@ -7539,7 +7539,7 @@ function ErrorState({ className, error }) {
|
|
|
7539
7539
|
{
|
|
7540
7540
|
role: "alert",
|
|
7541
7541
|
"aria-live": "assertive",
|
|
7542
|
-
className:
|
|
7542
|
+
className: chunkPOPGQIVR_js.cn(
|
|
7543
7543
|
"h-full w-full flex items-center justify-center p-6 text-center text-red-400",
|
|
7544
7544
|
className
|
|
7545
7545
|
),
|
|
@@ -7570,7 +7570,7 @@ function ShortcutPanel({ isOpen, onClose }) {
|
|
|
7570
7570
|
}
|
|
7571
7571
|
)
|
|
7572
7572
|
] }),
|
|
7573
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children:
|
|
7573
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children: chunkPOPGQIVR_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7574
7574
|
"div",
|
|
7575
7575
|
{
|
|
7576
7576
|
className: "flex items-center justify-between gap-3 rounded bg-muted/80 px-2 py-1.5",
|
|
@@ -7630,14 +7630,14 @@ function AccessibilityPanel({
|
|
|
7630
7630
|
"aria-label": t("pptx.accessibility.reduceMotion"),
|
|
7631
7631
|
"aria-checked": reducedMotion ?? false,
|
|
7632
7632
|
onClick: onToggleReducedMotion,
|
|
7633
|
-
className:
|
|
7633
|
+
className: chunkPOPGQIVR_js.cn(
|
|
7634
7634
|
"relative inline-flex h-5 w-9 items-center rounded-full transition-colors",
|
|
7635
7635
|
reducedMotion ? "bg-primary" : "bg-muted-foreground/30"
|
|
7636
7636
|
),
|
|
7637
7637
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7638
7638
|
"span",
|
|
7639
7639
|
{
|
|
7640
|
-
className:
|
|
7640
|
+
className: chunkPOPGQIVR_js.cn(
|
|
7641
7641
|
"inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform",
|
|
7642
7642
|
reducedMotion ? "translate-x-4" : "translate-x-0.5"
|
|
7643
7643
|
)
|
|
@@ -7656,7 +7656,7 @@ function AccessibilityPanel({
|
|
|
7656
7656
|
"div",
|
|
7657
7657
|
{
|
|
7658
7658
|
role: "listitem",
|
|
7659
|
-
className:
|
|
7659
|
+
className: chunkPOPGQIVR_js.cn(
|
|
7660
7660
|
"flex items-start gap-2 rounded px-2 py-1.5 text-xs",
|
|
7661
7661
|
/* Severity-based background and text colouring */
|
|
7662
7662
|
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"
|
|
@@ -7816,7 +7816,7 @@ function ResizeHandle({
|
|
|
7816
7816
|
{
|
|
7817
7817
|
role: "separator",
|
|
7818
7818
|
"aria-orientation": direction,
|
|
7819
|
-
className:
|
|
7819
|
+
className: chunkPOPGQIVR_js.cn(
|
|
7820
7820
|
// Outer container: generous hit area for easy clicking.
|
|
7821
7821
|
// The visible indicator is rendered via the inner pseudo-element (::after).
|
|
7822
7822
|
"relative flex-shrink-0 z-20 group",
|
|
@@ -7827,7 +7827,7 @@ function ResizeHandle({
|
|
|
7827
7827
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7828
7828
|
"div",
|
|
7829
7829
|
{
|
|
7830
|
-
className:
|
|
7830
|
+
className: chunkPOPGQIVR_js.cn(
|
|
7831
7831
|
"absolute transition-colors",
|
|
7832
7832
|
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"
|
|
7833
7833
|
)
|
|
@@ -7846,14 +7846,14 @@ function SlideThumbnailImpl({
|
|
|
7846
7846
|
}) {
|
|
7847
7847
|
const safeCanvasWidth = Math.max(canvasSize.width, 1);
|
|
7848
7848
|
const safeCanvasHeight = Math.max(canvasSize.height, 1);
|
|
7849
|
-
const width = previewWidth ??
|
|
7849
|
+
const width = previewWidth ?? chunkPOPGQIVR_js.SLIDE_NAV_THUMBNAIL_WIDTH;
|
|
7850
7850
|
const scale = width / safeCanvasWidth;
|
|
7851
7851
|
const previewHeight = pptx.editorThumbnailHeight(safeCanvasWidth, safeCanvasHeight, width);
|
|
7852
7852
|
const previewElements = pptx.buildPreviewElements(slide, templateElements);
|
|
7853
7853
|
const slideFieldContext = pptx.deriveSlideFieldContext(fieldContext, slide);
|
|
7854
7854
|
const { t } = reactI18next.useTranslation();
|
|
7855
7855
|
const transitionLabel = slide.transition ? (() => {
|
|
7856
|
-
const opt =
|
|
7856
|
+
const opt = chunkPOPGQIVR_js.SLIDE_TRANSITION_OPTIONS.find((o) => o.value === slide.transition?.type);
|
|
7857
7857
|
return opt ? t(opt.i18nKey) : slide.transition.type;
|
|
7858
7858
|
})() : void 0;
|
|
7859
7859
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -7879,7 +7879,7 @@ function SlideThumbnailImpl({
|
|
|
7879
7879
|
...pptx.deviceStrokeStageStyle(scale)
|
|
7880
7880
|
},
|
|
7881
7881
|
children: [
|
|
7882
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7882
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkTUYNK3GE_js.SlideBackgroundImageLayer, { slide }),
|
|
7883
7883
|
slide.transition && slide.transition.type !== "none" && slide.transition.type !== "cut" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7884
7884
|
"div",
|
|
7885
7885
|
{
|
|
@@ -7889,7 +7889,7 @@ function SlideThumbnailImpl({
|
|
|
7889
7889
|
}
|
|
7890
7890
|
),
|
|
7891
7891
|
previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
7892
|
-
|
|
7892
|
+
chunkTUYNK3GE_js.StaticElementRenderer,
|
|
7893
7893
|
{
|
|
7894
7894
|
element,
|
|
7895
7895
|
activeSlide: slide,
|
|
@@ -8445,7 +8445,7 @@ function SectionHeader({
|
|
|
8445
8445
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8446
8446
|
lu.LuChevronDown,
|
|
8447
8447
|
{
|
|
8448
|
-
className:
|
|
8448
|
+
className: chunkPOPGQIVR_js.cn(
|
|
8449
8449
|
"h-3 w-3 flex-shrink-0 transition-transform",
|
|
8450
8450
|
isCollapsed ? "-rotate-90" : "rotate-0"
|
|
8451
8451
|
)
|
|
@@ -8596,7 +8596,7 @@ function LazyThumbnailInner({
|
|
|
8596
8596
|
}
|
|
8597
8597
|
var LazyThumbnail = React98__default.default.memo(LazyThumbnailInner);
|
|
8598
8598
|
function declaredSectionFacts(groups, sectionId) {
|
|
8599
|
-
const declared = groups.filter((group) => group.id !==
|
|
8599
|
+
const declared = groups.filter((group) => group.id !== chunkPOPGQIVR_js.DEFAULT_SECTION_GROUP_ID && group.id !== chunkPOPGQIVR_js.UNGROUPED_SECTION_ID).map((group) => group.id);
|
|
8600
8600
|
return {
|
|
8601
8601
|
isDeclared: declared.includes(sectionId),
|
|
8602
8602
|
index: declared.indexOf(sectionId),
|
|
@@ -8681,7 +8681,7 @@ function SlideItemInner({
|
|
|
8681
8681
|
"data-pptx-chrome": "slide-row",
|
|
8682
8682
|
"aria-describedby": cue.labelId,
|
|
8683
8683
|
"data-pptx-slide-hidden": cue.marker,
|
|
8684
|
-
className:
|
|
8684
|
+
className: chunkPOPGQIVR_js.cn(
|
|
8685
8685
|
"group relative flex w-full items-center gap-1 cursor-pointer border-0 bg-transparent py-0.5 px-1 text-left transition-all",
|
|
8686
8686
|
isActive && "bg-accent/40 before:absolute before:left-0 before:top-1 before:bottom-1 before:w-[3px] before:bg-primary before:rounded-r",
|
|
8687
8687
|
isSelected && !isActive && "bg-accent/20 ring-1 ring-inset ring-primary/50",
|
|
@@ -8703,7 +8703,7 @@ function SlideItemInner({
|
|
|
8703
8703
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8704
8704
|
"span",
|
|
8705
8705
|
{
|
|
8706
|
-
className:
|
|
8706
|
+
className: chunkPOPGQIVR_js.cn(
|
|
8707
8707
|
"text-[10px] tabular-nums text-right select-none w-full",
|
|
8708
8708
|
isActive ? "text-primary font-medium" : "text-muted-foreground"
|
|
8709
8709
|
),
|
|
@@ -8726,7 +8726,7 @@ function SlideItemInner({
|
|
|
8726
8726
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
8727
8727
|
"div",
|
|
8728
8728
|
{
|
|
8729
|
-
className:
|
|
8729
|
+
className: chunkPOPGQIVR_js.cn(
|
|
8730
8730
|
"relative shrink-0 overflow-hidden border transition-colors bg-white",
|
|
8731
8731
|
isActive ? "border-primary/60" : "border-transparent group-hover:border-border/40"
|
|
8732
8732
|
),
|
|
@@ -8925,7 +8925,7 @@ function SlidesPaneSidebar({
|
|
|
8925
8925
|
tableStyleContext
|
|
8926
8926
|
}) {
|
|
8927
8927
|
const { t } = reactI18next.useTranslation();
|
|
8928
|
-
const collab =
|
|
8928
|
+
const collab = chunkTUYNK3GE_js.useCollaboration();
|
|
8929
8929
|
const slideRefs = React98.useRef(/* @__PURE__ */ new Map());
|
|
8930
8930
|
const renameInputRef = React98.useRef(null);
|
|
8931
8931
|
const slidePresenceMap = React98.useMemo(() => {
|
|
@@ -8950,7 +8950,7 @@ function SlidesPaneSidebar({
|
|
|
8950
8950
|
() => estimateSlideItemHeight(canvasSize.width, canvasSize.height, previewWidth),
|
|
8951
8951
|
[canvasSize.width, canvasSize.height, previewWidth]
|
|
8952
8952
|
);
|
|
8953
|
-
const showSectionHeaders = sectionGroups.some((group) => group.id !==
|
|
8953
|
+
const showSectionHeaders = sectionGroups.some((group) => group.id !== chunkPOPGQIVR_js.DEFAULT_SECTION_GROUP_ID);
|
|
8954
8954
|
const {
|
|
8955
8955
|
collapsedSections,
|
|
8956
8956
|
renamingSectionId,
|
|
@@ -9020,7 +9020,7 @@ function SlidesPaneSidebar({
|
|
|
9020
9020
|
[sectionGroups, showSectionHeaders, effectiveCollapsed]
|
|
9021
9021
|
);
|
|
9022
9022
|
const shouldVirtualize = slides.length >= VIRTUALIZATION_THRESHOLD;
|
|
9023
|
-
const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } =
|
|
9023
|
+
const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunkTUYNK3GE_js.useVirtualizedSlides({
|
|
9024
9024
|
totalItems: shouldVirtualize ? flatItems.length : 0,
|
|
9025
9025
|
itemHeight: estimatedItemHeight
|
|
9026
9026
|
});
|
|
@@ -9277,7 +9277,7 @@ function HandoutMasterPanel({
|
|
|
9277
9277
|
{
|
|
9278
9278
|
type: "button",
|
|
9279
9279
|
"aria-pressed": slidesPerPage === count,
|
|
9280
|
-
className:
|
|
9280
|
+
className: chunkPOPGQIVR_js.cn(
|
|
9281
9281
|
"px-2 py-1.5 rounded text-[11px] font-medium transition-colors",
|
|
9282
9282
|
slidesPerPage === count ? "bg-primary text-white" : "bg-accent/50 text-muted-foreground hover:bg-accent/70 hover:text-foreground"
|
|
9283
9283
|
),
|
|
@@ -9395,7 +9395,7 @@ function SlideMastersList({
|
|
|
9395
9395
|
ref: isMasterActive ? activeRef : void 0,
|
|
9396
9396
|
"aria-pressed": isMasterActive,
|
|
9397
9397
|
"aria-label": master.name || t("pptx.master.master"),
|
|
9398
|
-
className:
|
|
9398
|
+
className: chunkPOPGQIVR_js.cn(
|
|
9399
9399
|
"group relative block w-full cursor-pointer rounded-lg border-2 p-1 text-left transition-all",
|
|
9400
9400
|
isMasterActive ? "border-amber-500 bg-amber-500/10" : "border-border bg-background/40 hover:border-border"
|
|
9401
9401
|
),
|
|
@@ -9412,7 +9412,7 @@ function SlideMastersList({
|
|
|
9412
9412
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 px-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9413
9413
|
"span",
|
|
9414
9414
|
{
|
|
9415
|
-
className:
|
|
9415
|
+
className: chunkPOPGQIVR_js.cn(
|
|
9416
9416
|
"text-[10px] font-medium",
|
|
9417
9417
|
isMasterActive ? "text-amber-400" : "text-muted-foreground"
|
|
9418
9418
|
),
|
|
@@ -9431,7 +9431,7 @@ function SlideMastersList({
|
|
|
9431
9431
|
ref: isLayoutActive ? activeRef : void 0,
|
|
9432
9432
|
"aria-pressed": isLayoutActive,
|
|
9433
9433
|
"aria-label": layout.name || t("pptx.master.layout"),
|
|
9434
|
-
className:
|
|
9434
|
+
className: chunkPOPGQIVR_js.cn(
|
|
9435
9435
|
"group relative block w-full cursor-pointer rounded-md border-2 p-0.5 text-left transition-all",
|
|
9436
9436
|
isLayoutActive ? "border-primary bg-primary/10" : "border-border bg-background/40 hover:border-border"
|
|
9437
9437
|
),
|
|
@@ -9448,7 +9448,7 @@ function SlideMastersList({
|
|
|
9448
9448
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5 px-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9449
9449
|
"span",
|
|
9450
9450
|
{
|
|
9451
|
-
className:
|
|
9451
|
+
className: chunkPOPGQIVR_js.cn(
|
|
9452
9452
|
"text-[9px]",
|
|
9453
9453
|
isLayoutActive ? "text-primary" : "text-muted-foreground"
|
|
9454
9454
|
),
|
|
@@ -9540,7 +9540,7 @@ function MasterViewSidebar({
|
|
|
9540
9540
|
type: "button",
|
|
9541
9541
|
role: "tab",
|
|
9542
9542
|
"aria-selected": masterViewTab === tab.key,
|
|
9543
|
-
className:
|
|
9543
|
+
className: chunkPOPGQIVR_js.cn(
|
|
9544
9544
|
"flex-1 px-1 py-1.5 text-[10px] font-medium transition-colors border-b-2",
|
|
9545
9545
|
masterViewTab === tab.key ? "border-amber-500 text-amber-400" : "border-transparent text-muted-foreground hover:text-foreground"
|
|
9546
9546
|
),
|
|
@@ -10043,7 +10043,7 @@ function SectionBlock({
|
|
|
10043
10043
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10044
10044
|
lu.LuChevronDown,
|
|
10045
10045
|
{
|
|
10046
|
-
className:
|
|
10046
|
+
className: chunkPOPGQIVR_js.cn("h-3 w-3 transition-transform", collapsed ? "-rotate-90" : "rotate-0")
|
|
10047
10047
|
}
|
|
10048
10048
|
),
|
|
10049
10049
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-left", children: section.label }),
|
|
@@ -10092,7 +10092,7 @@ function SlideCardImpl({
|
|
|
10092
10092
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10093
10093
|
"div",
|
|
10094
10094
|
{
|
|
10095
|
-
className:
|
|
10095
|
+
className: chunkPOPGQIVR_js.cn(
|
|
10096
10096
|
"group relative cursor-pointer rounded-lg border-2 p-1 transition-all",
|
|
10097
10097
|
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",
|
|
10098
10098
|
slide.hidden && "opacity-40"
|
|
@@ -10115,7 +10115,7 @@ function SlideCardImpl({
|
|
|
10115
10115
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10116
10116
|
"span",
|
|
10117
10117
|
{
|
|
10118
|
-
className:
|
|
10118
|
+
className: chunkPOPGQIVR_js.cn(
|
|
10119
10119
|
"text-[11px] font-medium px-0.5",
|
|
10120
10120
|
isSelected ? "text-primary" : isActive ? "text-primary/70" : "text-muted-foreground"
|
|
10121
10121
|
),
|
|
@@ -10857,7 +10857,7 @@ function ReadingViewStage({
|
|
|
10857
10857
|
"div",
|
|
10858
10858
|
{
|
|
10859
10859
|
className: "absolute inset-0",
|
|
10860
|
-
style: { backgroundColor:
|
|
10860
|
+
style: { backgroundColor: chunkPOPGQIVR_js.normalizeHexColor(slide.backgroundColor, "#ffffff") }
|
|
10861
10861
|
}
|
|
10862
10862
|
),
|
|
10863
10863
|
slide.backgroundImage && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -10876,7 +10876,7 @@ function ReadingViewStage({
|
|
|
10876
10876
|
className: "absolute left-0 top-0 origin-top-left",
|
|
10877
10877
|
style: { width, height, transform: `scale(${scale})`, ...pptx.deviceStrokeStageStyle(scale) },
|
|
10878
10878
|
children: elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
10879
|
-
|
|
10879
|
+
chunkTUYNK3GE_js.StaticElementRenderer,
|
|
10880
10880
|
{
|
|
10881
10881
|
element,
|
|
10882
10882
|
activeSlide: slide,
|
|
@@ -11088,7 +11088,7 @@ function renderRichNotesSegments(segments) {
|
|
|
11088
11088
|
if (segment.style.fontFamily) {
|
|
11089
11089
|
style.fontFamily = segment.style.fontFamily;
|
|
11090
11090
|
}
|
|
11091
|
-
if (segment.style.hyperlink &&
|
|
11091
|
+
if (segment.style.hyperlink && chunkPOPGQIVR_js.isUrlSafe(segment.style.hyperlink)) {
|
|
11092
11092
|
const safeHref = segment.style.hyperlink;
|
|
11093
11093
|
style.color = "#4a9eff";
|
|
11094
11094
|
style.textDecoration = "underline";
|
|
@@ -11101,7 +11101,7 @@ function renderRichNotesSegments(segments) {
|
|
|
11101
11101
|
style,
|
|
11102
11102
|
onClick: (e) => {
|
|
11103
11103
|
e.preventDefault();
|
|
11104
|
-
|
|
11104
|
+
chunkPOPGQIVR_js.safeOpenUrl(safeHref);
|
|
11105
11105
|
},
|
|
11106
11106
|
children: segment.text
|
|
11107
11107
|
},
|
|
@@ -11450,7 +11450,7 @@ function useSlideNotes({
|
|
|
11450
11450
|
const href = target.getAttribute("data-hyperlink") || target.getAttribute("href");
|
|
11451
11451
|
if (href && (e.ctrlKey || e.metaKey)) {
|
|
11452
11452
|
e.preventDefault();
|
|
11453
|
-
|
|
11453
|
+
chunkPOPGQIVR_js.safeOpenUrl(href);
|
|
11454
11454
|
}
|
|
11455
11455
|
}, []);
|
|
11456
11456
|
return {
|
|
@@ -11531,7 +11531,7 @@ function SlideNotesPanel({
|
|
|
11531
11531
|
});
|
|
11532
11532
|
const hasNotes = draft.trim().length > 0;
|
|
11533
11533
|
const slideLabel = activeSlide ? t("pptx.notes.slideN", { n: activeSlide.slideNumber }) : t("pptx.notes.noSlide");
|
|
11534
|
-
const { dragY, handlers: dragHandlers } =
|
|
11534
|
+
const { dragY, handlers: dragHandlers } = chunkTUYNK3GE_js.useSheetDismissDrag(onToggle);
|
|
11535
11535
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
11536
11536
|
isExpanded && /* @__PURE__ */ jsxRuntime.jsx(
|
|
11537
11537
|
"button",
|
|
@@ -11547,7 +11547,7 @@ function SlideNotesPanel({
|
|
|
11547
11547
|
{
|
|
11548
11548
|
ref: rootRef,
|
|
11549
11549
|
"data-pptx-chrome": "notes",
|
|
11550
|
-
className:
|
|
11550
|
+
className: chunkPOPGQIVR_js.cn(
|
|
11551
11551
|
"flex flex-col border-t border-border/60 bg-background select-none",
|
|
11552
11552
|
// On mobile, hide the entire notes strip when collapsed: the
|
|
11553
11553
|
// MobileBottomBar's Notes button is the entry point instead.
|
|
@@ -11911,7 +11911,7 @@ function SlideDiffRow({
|
|
|
11911
11911
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
11912
11912
|
"div",
|
|
11913
11913
|
{
|
|
11914
|
-
className:
|
|
11914
|
+
className: chunkPOPGQIVR_js.cn(
|
|
11915
11915
|
"rounded-lg border transition-colors",
|
|
11916
11916
|
isResolved ? "border-border/60 bg-card/40 opacity-60" : "border-border bg-background/70"
|
|
11917
11917
|
),
|
|
@@ -11925,7 +11925,7 @@ function SlideDiffRow({
|
|
|
11925
11925
|
children: [
|
|
11926
11926
|
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" }),
|
|
11927
11927
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-foreground", children: t("pptx.compare.slideNumber", { number: slideNumber }) }),
|
|
11928
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
11928
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkPOPGQIVR_js.cn("rounded-full px-2 py-0.5 text-[10px] font-medium", statusColor), children: statusLabel }),
|
|
11929
11929
|
diff.changes.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-muted-foreground", children: [
|
|
11930
11930
|
diff.changes.length,
|
|
11931
11931
|
" ",
|
|
@@ -11935,7 +11935,7 @@ function SlideDiffRow({
|
|
|
11935
11935
|
isResolved && /* @__PURE__ */ jsxRuntime.jsx(
|
|
11936
11936
|
"span",
|
|
11937
11937
|
{
|
|
11938
|
-
className:
|
|
11938
|
+
className: chunkPOPGQIVR_js.cn(
|
|
11939
11939
|
"text-[10px] font-medium",
|
|
11940
11940
|
accepted ? "text-green-400" : "text-muted-foreground"
|
|
11941
11941
|
),
|
|
@@ -11963,7 +11963,7 @@ function SlideDiffRow({
|
|
|
11963
11963
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
11964
11964
|
"div",
|
|
11965
11965
|
{
|
|
11966
|
-
className:
|
|
11966
|
+
className: chunkPOPGQIVR_js.cn(
|
|
11967
11967
|
"rounded border overflow-hidden",
|
|
11968
11968
|
diff.status === "added" ? "border-green-700/60" : diff.status === "changed" ? "border-amber-700/60" : "border-border"
|
|
11969
11969
|
),
|
|
@@ -12668,7 +12668,7 @@ function DocumentPropertiesDialog({
|
|
|
12668
12668
|
const handleClose = React98.useCallback(() => {
|
|
12669
12669
|
onClose();
|
|
12670
12670
|
}, [onClose]);
|
|
12671
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
12671
|
+
const { panelStyle, handlers: dragHandlers } = chunkTUYNK3GE_js.useModalDismissDrag(handleClose);
|
|
12672
12672
|
if (!isOpen) {
|
|
12673
12673
|
return null;
|
|
12674
12674
|
}
|
|
@@ -13265,7 +13265,7 @@ function PresentationSubtitleBar({
|
|
|
13265
13265
|
}) {
|
|
13266
13266
|
const { t } = reactI18next.useTranslation();
|
|
13267
13267
|
const language = pptx.subtitleRecognitionLanguage(
|
|
13268
|
-
pptx.subtitleSettingsFromOptions(
|
|
13268
|
+
pptx.subtitleSettingsFromOptions(chunkTUYNK3GE_js.useViewerOptionsContext()),
|
|
13269
13269
|
typeof navigator === "undefined" ? "en-US" : navigator.language
|
|
13270
13270
|
);
|
|
13271
13271
|
const [captionText, setCaptionText] = React98.useState("");
|
|
@@ -13433,7 +13433,7 @@ function ScaledSlidePreviewImpl({
|
|
|
13433
13433
|
{
|
|
13434
13434
|
className: "absolute inset-0",
|
|
13435
13435
|
style: {
|
|
13436
|
-
backgroundColor:
|
|
13436
|
+
backgroundColor: chunkPOPGQIVR_js.normalizeHexColor(slide.backgroundColor, "#ffffff")
|
|
13437
13437
|
}
|
|
13438
13438
|
}
|
|
13439
13439
|
),
|
|
@@ -13459,7 +13459,7 @@ function ScaledSlidePreviewImpl({
|
|
|
13459
13459
|
...pptx.deviceStrokeStageStyle(scale)
|
|
13460
13460
|
},
|
|
13461
13461
|
children: previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
13462
|
-
|
|
13462
|
+
chunkTUYNK3GE_js.StaticElementRenderer,
|
|
13463
13463
|
{
|
|
13464
13464
|
element,
|
|
13465
13465
|
activeSlide: slide,
|
|
@@ -14176,7 +14176,7 @@ function getElementDisplayName(element, index) {
|
|
|
14176
14176
|
if (element.name && element.name.trim().length > 0) {
|
|
14177
14177
|
return element.name.trim();
|
|
14178
14178
|
}
|
|
14179
|
-
if ((0,
|
|
14179
|
+
if ((0, chunkPOPGQIVR_js.dist_exports.hasTextProperties)(element) && element.text && element.text.trim().length > 0) {
|
|
14180
14180
|
return element.text.trim().slice(0, 32);
|
|
14181
14181
|
}
|
|
14182
14182
|
const label = TYPE_LABELS[element.type] ?? "Object";
|
|
@@ -14349,7 +14349,7 @@ function SelectionPane({
|
|
|
14349
14349
|
setDragIndex(null);
|
|
14350
14350
|
setDragOverIndex(null);
|
|
14351
14351
|
},
|
|
14352
|
-
className:
|
|
14352
|
+
className: chunkPOPGQIVR_js.cn(
|
|
14353
14353
|
"flex items-center gap-1.5 px-2 py-1 text-xs cursor-pointer transition-colors",
|
|
14354
14354
|
isSelected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground",
|
|
14355
14355
|
dragOverIndex === realIndex ? "border-t-2 border-primary" : ""
|
|
@@ -14403,13 +14403,13 @@ function SelectionPane({
|
|
|
14403
14403
|
}
|
|
14404
14404
|
var INPUT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
|
|
14405
14405
|
var SELECT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
|
|
14406
|
-
var ENTRANCE_PRESETS =
|
|
14406
|
+
var ENTRANCE_PRESETS = chunkPOPGQIVR_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14407
14407
|
(o) => o.value === "fadeIn" || o.value === "flyIn" || o.value === "zoomIn"
|
|
14408
14408
|
);
|
|
14409
|
-
var EXIT_PRESETS =
|
|
14409
|
+
var EXIT_PRESETS = chunkPOPGQIVR_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14410
14410
|
(o) => o.value === "fadeOut" || o.value === "flyOut" || o.value === "zoomOut"
|
|
14411
14411
|
);
|
|
14412
|
-
var EMPHASIS_PRESETS =
|
|
14412
|
+
var EMPHASIS_PRESETS = chunkPOPGQIVR_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14413
14413
|
(o) => o.value === "spin" || o.value === "pulse" || o.value === "colorWave" || o.value === "bounce" || o.value === "flash" || o.value === "growShrink" || o.value === "teeter"
|
|
14414
14414
|
);
|
|
14415
14415
|
var TIMING_CURVE_OPTIONS = [
|
|
@@ -14575,7 +14575,7 @@ function AnimationTimelineSection({
|
|
|
14575
14575
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-6 rounded bg-muted/50 border border-border overflow-hidden", children: timelineBarData.map((bar) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
14576
14576
|
"div",
|
|
14577
14577
|
{
|
|
14578
|
-
className:
|
|
14578
|
+
className: chunkPOPGQIVR_js.cn(
|
|
14579
14579
|
"absolute top-0.5 bottom-0.5 rounded-sm transition-colors",
|
|
14580
14580
|
animationTypeColor(bar.anim),
|
|
14581
14581
|
bar.anim.elementId === selectedElementId && "ring-1 ring-primary"
|
|
@@ -14604,7 +14604,7 @@ function AnimationTimelineSection({
|
|
|
14604
14604
|
onDragLeave: handleDragLeave,
|
|
14605
14605
|
onDrop: (e) => handleDrop(index, e),
|
|
14606
14606
|
title: t("pptx.animation.nativeEffectHint"),
|
|
14607
|
-
className:
|
|
14607
|
+
className: chunkPOPGQIVR_js.cn(
|
|
14608
14608
|
"flex items-center gap-1 px-1 py-0.5 rounded text-[10px] italic",
|
|
14609
14609
|
"bg-muted/20 text-muted-foreground/70",
|
|
14610
14610
|
isDragOver && "border-t-2 border-primary"
|
|
@@ -14643,7 +14643,7 @@ function AnimationTimelineSection({
|
|
|
14643
14643
|
onDragEnd: handleDragEnd,
|
|
14644
14644
|
onMouseEnter: () => handleAnimationHover(anim),
|
|
14645
14645
|
onMouseLeave: handleAnimationHoverEnd,
|
|
14646
|
-
className:
|
|
14646
|
+
className: chunkPOPGQIVR_js.cn(
|
|
14647
14647
|
"flex items-center gap-1 px-1 py-0.5 rounded text-[10px] cursor-grab transition-colors",
|
|
14648
14648
|
isSelected ? "bg-primary/30 text-primary" : "bg-muted/50 text-muted-foreground",
|
|
14649
14649
|
isDragging && "opacity-40",
|
|
@@ -14775,7 +14775,7 @@ function EffectSoundRow({
|
|
|
14775
14775
|
}
|
|
14776
14776
|
const asset = pptx.getEffectSoundAsset(soundState.catalogueId);
|
|
14777
14777
|
if (asset) {
|
|
14778
|
-
|
|
14778
|
+
chunkTUYNK3GE_js.playAnimationSound(asset.dataUrl);
|
|
14779
14779
|
}
|
|
14780
14780
|
};
|
|
14781
14781
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -14950,7 +14950,7 @@ function useAnimationPreview({
|
|
|
14950
14950
|
}) {
|
|
14951
14951
|
const handleAnimationHover = React98.useCallback((anim) => {
|
|
14952
14952
|
if (anim.motionPath) {
|
|
14953
|
-
|
|
14953
|
+
chunkPOPGQIVR_js.startMotionPathPreview(anim.elementId, anim.motionPath, {
|
|
14954
14954
|
durationMs: anim.durationMs,
|
|
14955
14955
|
delayMs: anim.delayMs,
|
|
14956
14956
|
timingCurve: anim.timingCurve
|
|
@@ -14961,19 +14961,19 @@ function useAnimationPreview({
|
|
|
14961
14961
|
if (!preset || preset === "none") {
|
|
14962
14962
|
return;
|
|
14963
14963
|
}
|
|
14964
|
-
|
|
14964
|
+
chunkPOPGQIVR_js.startPreviewAnimation(anim.elementId, preset, {
|
|
14965
14965
|
direction: anim.direction,
|
|
14966
14966
|
durationMs: anim.durationMs ?? 500,
|
|
14967
14967
|
timingCurve: anim.timingCurve
|
|
14968
14968
|
});
|
|
14969
14969
|
}, []);
|
|
14970
|
-
const handleAnimationHoverEnd = React98.useCallback(() =>
|
|
14970
|
+
const handleAnimationHoverEnd = React98.useCallback(() => chunkPOPGQIVR_js.stopPreviewAnimation(), []);
|
|
14971
14971
|
const handlePreviewClick = React98.useCallback(() => {
|
|
14972
14972
|
if (!selectedElementAnimation) {
|
|
14973
14973
|
return;
|
|
14974
14974
|
}
|
|
14975
14975
|
if (selectedElementAnimation.motionPath) {
|
|
14976
|
-
|
|
14976
|
+
chunkPOPGQIVR_js.startMotionPathPreview(selectedElementId, selectedElementAnimation.motionPath, {
|
|
14977
14977
|
durationMs: selectedElementAnimation.durationMs,
|
|
14978
14978
|
delayMs: selectedElementAnimation.delayMs,
|
|
14979
14979
|
timingCurve: selectedElementAnimation.timingCurve
|
|
@@ -14984,7 +14984,7 @@ function useAnimationPreview({
|
|
|
14984
14984
|
if (!preset || preset === "none") {
|
|
14985
14985
|
return;
|
|
14986
14986
|
}
|
|
14987
|
-
|
|
14987
|
+
chunkPOPGQIVR_js.startPreviewAnimation(selectedElementId, preset, {
|
|
14988
14988
|
direction: selectedElementAnimation.direction,
|
|
14989
14989
|
durationMs: selectedElementAnimation.durationMs ?? 500,
|
|
14990
14990
|
timingCurve: selectedElementAnimation.timingCurve
|
|
@@ -15218,8 +15218,8 @@ function useAnimationHandlers({
|
|
|
15218
15218
|
if (!el) {
|
|
15219
15219
|
return anim.elementId.slice(0, 8);
|
|
15220
15220
|
}
|
|
15221
|
-
const text = (0,
|
|
15222
|
-
return text ||
|
|
15221
|
+
const text = (0, chunkPOPGQIVR_js.dist_exports.hasTextProperties)(el) ? el.text : void 0;
|
|
15222
|
+
return text || chunkPOPGQIVR_js.getElementLabel(el);
|
|
15223
15223
|
},
|
|
15224
15224
|
[activeSlide.elements]
|
|
15225
15225
|
);
|
|
@@ -15229,8 +15229,8 @@ function useAnimationHandlers({
|
|
|
15229
15229
|
if (!el) {
|
|
15230
15230
|
return id.slice(0, 8);
|
|
15231
15231
|
}
|
|
15232
|
-
const text = (0,
|
|
15233
|
-
return text ||
|
|
15232
|
+
const text = (0, chunkPOPGQIVR_js.dist_exports.hasTextProperties)(el) ? el.text : void 0;
|
|
15233
|
+
return text || chunkPOPGQIVR_js.getElementLabel(el);
|
|
15234
15234
|
}).join(", "),
|
|
15235
15235
|
[activeSlide.elements]
|
|
15236
15236
|
);
|
|
@@ -15287,7 +15287,7 @@ function AnimationPanel({
|
|
|
15287
15287
|
onUpdateSlide
|
|
15288
15288
|
}) {
|
|
15289
15289
|
const { t } = reactI18next.useTranslation();
|
|
15290
|
-
const { viewportWidth } =
|
|
15290
|
+
const { viewportWidth } = chunkTUYNK3GE_js.useIsMobile();
|
|
15291
15291
|
const directionBtnPx = Math.max(28, pptx.getDensePanelTouchTargetPx(viewportWidth));
|
|
15292
15292
|
const fieldStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
|
|
15293
15293
|
const handlers = useAnimationHandlers({
|
|
@@ -15415,7 +15415,7 @@ function AnimationPanel({
|
|
|
15415
15415
|
type: "button",
|
|
15416
15416
|
disabled: !canEdit,
|
|
15417
15417
|
style: { minWidth: directionBtnPx, minHeight: directionBtnPx },
|
|
15418
|
-
className:
|
|
15418
|
+
className: chunkPOPGQIVR_js.cn(
|
|
15419
15419
|
"flex items-center justify-center rounded border transition-colors",
|
|
15420
15420
|
isActive ? "border-primary bg-primary/20 text-primary" : "border-border bg-muted text-muted-foreground hover:bg-accent"
|
|
15421
15421
|
),
|
|
@@ -15493,7 +15493,7 @@ function AnimationPanel({
|
|
|
15493
15493
|
style: fieldStyle,
|
|
15494
15494
|
children: [
|
|
15495
15495
|
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: t("pptx.animation.trigger.selectShape") }),
|
|
15496
|
-
activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children:
|
|
15496
|
+
activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children: chunkPOPGQIVR_js.getElementLabel(el) }, el.id))
|
|
15497
15497
|
]
|
|
15498
15498
|
}
|
|
15499
15499
|
)
|
|
@@ -15641,7 +15641,7 @@ function ActionTargetFields({
|
|
|
15641
15641
|
type: "text",
|
|
15642
15642
|
disabled: !canEdit,
|
|
15643
15643
|
"aria-label": t(urlLabelKey),
|
|
15644
|
-
className:
|
|
15644
|
+
className: chunkPOPGQIVR_js.cn(INPUT2, "w-full"),
|
|
15645
15645
|
placeholder: "https://...",
|
|
15646
15646
|
value: url ?? "",
|
|
15647
15647
|
onChange: (e) => onChange({ url: e.target.value })
|
|
@@ -15655,7 +15655,7 @@ function ActionTargetFields({
|
|
|
15655
15655
|
type: "number",
|
|
15656
15656
|
disabled: !canEdit,
|
|
15657
15657
|
"aria-label": t("pptx.action.gotoSlide"),
|
|
15658
|
-
className:
|
|
15658
|
+
className: chunkPOPGQIVR_js.cn(INPUT2, "w-full"),
|
|
15659
15659
|
placeholder: t("pptx.action.slideNumberPlaceholder"),
|
|
15660
15660
|
min: 1,
|
|
15661
15661
|
max: slideCount,
|
|
@@ -15677,7 +15677,7 @@ function ActionTargetFields({
|
|
|
15677
15677
|
"data-testid": "pptx-action-custom-show",
|
|
15678
15678
|
disabled: !canEdit,
|
|
15679
15679
|
"aria-label": t("pptx.hyperlink.customShowLabel"),
|
|
15680
|
-
className:
|
|
15680
|
+
className: chunkPOPGQIVR_js.cn(INPUT2, "w-full"),
|
|
15681
15681
|
value: customShowId ?? "",
|
|
15682
15682
|
onChange: (e) => onChange({ customShowId: e.target.value, returnAfter }),
|
|
15683
15683
|
children: [
|
|
@@ -15710,11 +15710,11 @@ function ActionSettingsPanel({
|
|
|
15710
15710
|
onUpdateElement
|
|
15711
15711
|
}) {
|
|
15712
15712
|
const { t } = reactI18next.useTranslation();
|
|
15713
|
-
const clickAction = selectedElement.actionClick ? (0,
|
|
15714
|
-
const hoverAction = selectedElement.actionHover ? (0,
|
|
15713
|
+
const clickAction = selectedElement.actionClick ? (0, chunkPOPGQIVR_js.dist_exports.pptxActionToElementAction)(selectedElement.actionClick, "click") : void 0;
|
|
15714
|
+
const hoverAction = selectedElement.actionHover ? (0, chunkPOPGQIVR_js.dist_exports.pptxActionToElementAction)(selectedElement.actionHover, "hover") : void 0;
|
|
15715
15715
|
const updateAction = (trigger, type, patch) => {
|
|
15716
15716
|
const ea = { trigger, type, ...patch };
|
|
15717
|
-
const pa = (0,
|
|
15717
|
+
const pa = (0, chunkPOPGQIVR_js.dist_exports.elementActionToPptxAction)(ea);
|
|
15718
15718
|
if (trigger === "click") {
|
|
15719
15719
|
onUpdateElement({ actionClick: pa });
|
|
15720
15720
|
} else {
|
|
@@ -15799,7 +15799,7 @@ function ActionTriggerSection({
|
|
|
15799
15799
|
{
|
|
15800
15800
|
disabled: !canEdit,
|
|
15801
15801
|
"aria-label": label,
|
|
15802
|
-
className:
|
|
15802
|
+
className: chunkPOPGQIVR_js.cn(INPUT2, "w-full"),
|
|
15803
15803
|
value: effectiveType,
|
|
15804
15804
|
onChange: (e) => changeType(e.target.value),
|
|
15805
15805
|
children: pptx.ELEMENT_ACTION_TYPE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.labelKey) }, o.value))
|
|
@@ -16187,7 +16187,7 @@ function ChartDataGrid({
|
|
|
16187
16187
|
}) {
|
|
16188
16188
|
const { t } = reactI18next.useTranslation();
|
|
16189
16189
|
const highlightRef = React98.useRef(null);
|
|
16190
|
-
const { viewportWidth } =
|
|
16190
|
+
const { viewportWidth } = chunkTUYNK3GE_js.useIsMobile();
|
|
16191
16191
|
const gridPlan = pptx.getDenseGridLayoutPlan(viewportWidth);
|
|
16192
16192
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
16193
16193
|
const rowHeaderClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10 bg-card" : "";
|
|
@@ -17544,8 +17544,8 @@ function ChartUserShapeOptions({
|
|
|
17544
17544
|
}
|
|
17545
17545
|
function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
|
|
17546
17546
|
const chartData = selectedElement.chartData;
|
|
17547
|
-
const followDataPoint =
|
|
17548
|
-
const { selection: partSelection } =
|
|
17547
|
+
const followDataPoint = chunkTUYNK3GE_js.useViewerOptionsContext().advanced.chartPropertiesFollowDataPoint;
|
|
17548
|
+
const { selection: partSelection } = chunkTUYNK3GE_js.useChartPartSelection();
|
|
17549
17549
|
const canvasPart = partSelection?.elementId === selectedElement.id ? partSelection.part : null;
|
|
17550
17550
|
const title = chartData?.title;
|
|
17551
17551
|
const chartType = chartData?.chartType;
|
|
@@ -17759,40 +17759,40 @@ function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
|
|
|
17759
17759
|
[chartData, selectedElement, replaceChartData]
|
|
17760
17760
|
);
|
|
17761
17761
|
const setAxisLogScale = React98.useCallback(
|
|
17762
|
-
(axisType, opts) => applyChartOp((el) => (0,
|
|
17762
|
+
(axisType, opts) => applyChartOp((el) => (0, chunkPOPGQIVR_js.dist_exports.setChartAxisLogScale)(el, axisType, opts)),
|
|
17763
17763
|
[applyChartOp]
|
|
17764
17764
|
);
|
|
17765
17765
|
const setAxisTitleStyle = React98.useCallback(
|
|
17766
|
-
(axisType, edit) => applyChartOp((el) => (0,
|
|
17766
|
+
(axisType, edit) => applyChartOp((el) => (0, chunkPOPGQIVR_js.dist_exports.setChartAxisTitleStyle)(el, axisType, edit)),
|
|
17767
17767
|
[applyChartOp]
|
|
17768
17768
|
);
|
|
17769
17769
|
const setGridlineStyle = React98.useCallback(
|
|
17770
|
-
(axisType, which, edit) => applyChartOp((el) => (0,
|
|
17770
|
+
(axisType, which, edit) => applyChartOp((el) => (0, chunkPOPGQIVR_js.dist_exports.setChartAxisGridlineStyle)(el, axisType, which, edit)),
|
|
17771
17771
|
[applyChartOp]
|
|
17772
17772
|
);
|
|
17773
17773
|
const setSeriesMarker = React98.useCallback(
|
|
17774
|
-
(index, marker) => applyChartOp((el) => (0,
|
|
17774
|
+
(index, marker) => applyChartOp((el) => (0, chunkPOPGQIVR_js.dist_exports.setChartSeriesMarker)(el, index, marker)),
|
|
17775
17775
|
[applyChartOp]
|
|
17776
17776
|
);
|
|
17777
17777
|
const setSeriesType = React98.useCallback(
|
|
17778
|
-
(index, seriesType) => applyChartOp((el) => (0,
|
|
17778
|
+
(index, seriesType) => applyChartOp((el) => (0, chunkPOPGQIVR_js.dist_exports.setChartSeriesChartType)(el, index, seriesType)),
|
|
17779
17779
|
[applyChartOp]
|
|
17780
17780
|
);
|
|
17781
17781
|
const setPointFill = React98.useCallback(
|
|
17782
|
-
(seriesIndex, pointIndex, color) => applyChartOp((el) => (0,
|
|
17782
|
+
(seriesIndex, pointIndex, color) => applyChartOp((el) => (0, chunkPOPGQIVR_js.dist_exports.setChartDataPointFill)(el, seriesIndex, pointIndex, color)),
|
|
17783
17783
|
[applyChartOp]
|
|
17784
17784
|
);
|
|
17785
17785
|
const setPointExplosion = React98.useCallback(
|
|
17786
|
-
(seriesIndex, pointIndex, explosion) => applyChartOp((el) => (0,
|
|
17786
|
+
(seriesIndex, pointIndex, explosion) => applyChartOp((el) => (0, chunkPOPGQIVR_js.dist_exports.setChartDataPointExplosion)(el, seriesIndex, pointIndex, explosion)),
|
|
17787
17787
|
[applyChartOp]
|
|
17788
17788
|
);
|
|
17789
17789
|
const setPointMarker = React98.useCallback(
|
|
17790
|
-
(seriesIndex, pointIndex, marker) => applyChartOp((el) => (0,
|
|
17790
|
+
(seriesIndex, pointIndex, marker) => applyChartOp((el) => (0, chunkPOPGQIVR_js.dist_exports.setChartDataPointMarker)(el, seriesIndex, pointIndex, marker)),
|
|
17791
17791
|
[applyChartOp]
|
|
17792
17792
|
);
|
|
17793
17793
|
const setPointLabel = React98.useCallback(
|
|
17794
17794
|
(seriesIndex, pointIndex, text) => applyChartOp(
|
|
17795
|
-
(el) => (0,
|
|
17795
|
+
(el) => (0, chunkPOPGQIVR_js.dist_exports.setChartDataPointLabel)(el, seriesIndex, pointIndex, text !== null ? { text } : null)
|
|
17796
17796
|
),
|
|
17797
17797
|
[applyChartOp]
|
|
17798
17798
|
);
|
|
@@ -18060,17 +18060,17 @@ function OleEditorDialog({
|
|
|
18060
18060
|
const kind = descriptor.contentTab.kind;
|
|
18061
18061
|
const load = async () => {
|
|
18062
18062
|
if (kind === "sheet") {
|
|
18063
|
-
const value = await (0,
|
|
18063
|
+
const value = await (0, chunkPOPGQIVR_js.dist_exports.getOleSheetGrid)(element);
|
|
18064
18064
|
if (!cancelled) {
|
|
18065
18065
|
setGrid(value);
|
|
18066
18066
|
}
|
|
18067
18067
|
} else if (kind === "document") {
|
|
18068
|
-
const value = await (0,
|
|
18068
|
+
const value = await (0, chunkPOPGQIVR_js.dist_exports.getOleDocumentParagraphs)(element);
|
|
18069
18069
|
if (!cancelled) {
|
|
18070
18070
|
setParagraphs(value);
|
|
18071
18071
|
}
|
|
18072
18072
|
} else if (kind === "deck") {
|
|
18073
|
-
const value = await (0,
|
|
18073
|
+
const value = await (0, chunkPOPGQIVR_js.dist_exports.getOleNestedDeckDetail)(element);
|
|
18074
18074
|
if (!cancelled) {
|
|
18075
18075
|
setDeckSlides(value);
|
|
18076
18076
|
}
|
|
@@ -18096,9 +18096,9 @@ function OleEditorDialog({
|
|
|
18096
18096
|
const handleCellEdit = React98.useCallback(
|
|
18097
18097
|
async (row, col, value) => {
|
|
18098
18098
|
try {
|
|
18099
|
-
const updated = await (0,
|
|
18099
|
+
const updated = await (0, chunkPOPGQIVR_js.dist_exports.applyOleSheetCellEdit)(element, { row, col, value });
|
|
18100
18100
|
commit(updated);
|
|
18101
|
-
const refreshed = await (0,
|
|
18101
|
+
const refreshed = await (0, chunkPOPGQIVR_js.dist_exports.getOleSheetGrid)(updated);
|
|
18102
18102
|
if (mountedRef.current) {
|
|
18103
18103
|
setGrid(refreshed);
|
|
18104
18104
|
}
|
|
@@ -18113,9 +18113,9 @@ function OleEditorDialog({
|
|
|
18113
18113
|
const handleParagraphEdit = React98.useCallback(
|
|
18114
18114
|
async (index, text) => {
|
|
18115
18115
|
try {
|
|
18116
|
-
const updated = await (0,
|
|
18116
|
+
const updated = await (0, chunkPOPGQIVR_js.dist_exports.applyOleDocumentParagraphEdit)(element, index, text);
|
|
18117
18117
|
commit(updated);
|
|
18118
|
-
const refreshed = await (0,
|
|
18118
|
+
const refreshed = await (0, chunkPOPGQIVR_js.dist_exports.getOleDocumentParagraphs)(updated);
|
|
18119
18119
|
if (mountedRef.current) {
|
|
18120
18120
|
setParagraphs(refreshed);
|
|
18121
18121
|
}
|
|
@@ -18130,14 +18130,14 @@ function OleEditorDialog({
|
|
|
18130
18130
|
const handleDeckElementEdit = React98.useCallback(
|
|
18131
18131
|
async (slideIndex, deckElementId, text) => {
|
|
18132
18132
|
try {
|
|
18133
|
-
const updated = await (0,
|
|
18133
|
+
const updated = await (0, chunkPOPGQIVR_js.dist_exports.applyOleNestedDeckElementTextEdit)(
|
|
18134
18134
|
element,
|
|
18135
18135
|
slideIndex,
|
|
18136
18136
|
deckElementId,
|
|
18137
18137
|
text
|
|
18138
18138
|
);
|
|
18139
18139
|
commit(updated);
|
|
18140
|
-
const refreshed = await (0,
|
|
18140
|
+
const refreshed = await (0, chunkPOPGQIVR_js.dist_exports.getOleNestedDeckDetail)(updated);
|
|
18141
18141
|
if (mountedRef.current) {
|
|
18142
18142
|
setDeckSlides(refreshed);
|
|
18143
18143
|
}
|
|
@@ -18153,7 +18153,7 @@ function OleEditorDialog({
|
|
|
18153
18153
|
async (file) => {
|
|
18154
18154
|
try {
|
|
18155
18155
|
const bytes = new Uint8Array(await file.arrayBuffer());
|
|
18156
|
-
const updated = await (0,
|
|
18156
|
+
const updated = await (0, chunkPOPGQIVR_js.dist_exports.replaceOleFile)(element, bytes, file.name);
|
|
18157
18157
|
commit(updated);
|
|
18158
18158
|
if (mountedRef.current) {
|
|
18159
18159
|
onClose();
|
|
@@ -18302,7 +18302,7 @@ function ConnectorArrowsSection({
|
|
|
18302
18302
|
},
|
|
18303
18303
|
disabled: !canEdit,
|
|
18304
18304
|
className: SELECT_CLS2,
|
|
18305
|
-
children:
|
|
18305
|
+
children: chunkPOPGQIVR_js.CONNECTOR_ARROW_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18306
18306
|
}
|
|
18307
18307
|
)
|
|
18308
18308
|
] }, end);
|
|
@@ -18326,7 +18326,7 @@ function ConnectorArrowsSection({
|
|
|
18326
18326
|
},
|
|
18327
18327
|
disabled: !canEdit,
|
|
18328
18328
|
className: SELECT_CLS2,
|
|
18329
|
-
children:
|
|
18329
|
+
children: chunkPOPGQIVR_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18330
18330
|
}
|
|
18331
18331
|
)
|
|
18332
18332
|
] }),
|
|
@@ -18345,7 +18345,7 @@ function ConnectorArrowsSection({
|
|
|
18345
18345
|
},
|
|
18346
18346
|
disabled: !canEdit,
|
|
18347
18347
|
className: SELECT_CLS2,
|
|
18348
|
-
children:
|
|
18348
|
+
children: chunkPOPGQIVR_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18349
18349
|
}
|
|
18350
18350
|
)
|
|
18351
18351
|
] })
|
|
@@ -18425,7 +18425,7 @@ function OlePropertiesPanel({
|
|
|
18425
18425
|
] }),
|
|
18426
18426
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
18427
18427
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.ole.type") }),
|
|
18428
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground truncate", children: (0,
|
|
18428
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground truncate", children: (0, chunkPOPGQIVR_js.dist_exports.getOleObjectTypeLabel)(ole.oleObjectType) })
|
|
18429
18429
|
] }),
|
|
18430
18430
|
ole.fileName && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
18431
18431
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.ole.fileName") }),
|
|
@@ -18436,7 +18436,7 @@ function OlePropertiesPanel({
|
|
|
18436
18436
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
18437
18437
|
"span",
|
|
18438
18438
|
{
|
|
18439
|
-
className:
|
|
18439
|
+
className: chunkPOPGQIVR_js.cn(
|
|
18440
18440
|
"inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium",
|
|
18441
18441
|
ole.isLinked ? "bg-blue-500/20 text-blue-400" : "bg-green-500/20 text-green-400"
|
|
18442
18442
|
),
|
|
@@ -18504,7 +18504,7 @@ function LayerOrderButtons({
|
|
|
18504
18504
|
"button",
|
|
18505
18505
|
{
|
|
18506
18506
|
type: "button",
|
|
18507
|
-
className:
|
|
18507
|
+
className: chunkPOPGQIVR_js.cn("flex-1", BTN2),
|
|
18508
18508
|
disabled: !canEdit,
|
|
18509
18509
|
onClick: () => onMoveLayer("forward"),
|
|
18510
18510
|
children: "\u2191 Forward"
|
|
@@ -18514,7 +18514,7 @@ function LayerOrderButtons({
|
|
|
18514
18514
|
"button",
|
|
18515
18515
|
{
|
|
18516
18516
|
type: "button",
|
|
18517
|
-
className:
|
|
18517
|
+
className: chunkPOPGQIVR_js.cn("flex-1", BTN2),
|
|
18518
18518
|
disabled: !canEdit,
|
|
18519
18519
|
onClick: () => onMoveLayer("backward"),
|
|
18520
18520
|
children: "\u2193 Backward"
|
|
@@ -18538,7 +18538,7 @@ function ArtisticEffectsGallery({
|
|
|
18538
18538
|
{
|
|
18539
18539
|
type: "button",
|
|
18540
18540
|
disabled: !canEdit,
|
|
18541
|
-
className:
|
|
18541
|
+
className: chunkPOPGQIVR_js.cn(
|
|
18542
18542
|
"flex flex-col items-center gap-0.5 rounded border p-0.5 hover:bg-accent/50",
|
|
18543
18543
|
isActive ? "border-primary bg-primary/10" : "border-border"
|
|
18544
18544
|
),
|
|
@@ -18600,7 +18600,7 @@ function ColorChangeSection({
|
|
|
18600
18600
|
DebouncedColorInput,
|
|
18601
18601
|
{
|
|
18602
18602
|
disabled: !canEdit,
|
|
18603
|
-
value:
|
|
18603
|
+
value: chunkPOPGQIVR_js.normalizeHexColor(cc.clrFrom, "#ffffff"),
|
|
18604
18604
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
18605
18605
|
onCommit: (hex) => updateEffects({
|
|
18606
18606
|
clrChange: {
|
|
@@ -18618,7 +18618,7 @@ function ColorChangeSection({
|
|
|
18618
18618
|
DebouncedColorInput,
|
|
18619
18619
|
{
|
|
18620
18620
|
disabled: !canEdit || Boolean(cc.clrToTransparent),
|
|
18621
|
-
value:
|
|
18621
|
+
value: chunkPOPGQIVR_js.normalizeHexColor(cc.clrTo, "#000000"),
|
|
18622
18622
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
18623
18623
|
onCommit: (hex) => updateEffects({
|
|
18624
18624
|
clrChange: {
|
|
@@ -18678,7 +18678,7 @@ function ColorWashSection({
|
|
|
18678
18678
|
DebouncedColorInput,
|
|
18679
18679
|
{
|
|
18680
18680
|
disabled: !canEdit,
|
|
18681
|
-
value:
|
|
18681
|
+
value: chunkPOPGQIVR_js.normalizeHexColor(wash.color, "#0066cc"),
|
|
18682
18682
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
18683
18683
|
onCommit: (hex) => updateEffects({
|
|
18684
18684
|
colorWash: { color: hex, opacity: wash.opacity ?? 40 }
|
|
@@ -18781,8 +18781,8 @@ function DuotonePanel({
|
|
|
18781
18781
|
}
|
|
18782
18782
|
});
|
|
18783
18783
|
}, [effects, onUpdateElement]);
|
|
18784
|
-
const shadowColor =
|
|
18785
|
-
const highlightColor =
|
|
18784
|
+
const shadowColor = chunkPOPGQIVR_js.normalizeHexColor(effects?.duotone?.color1, "#000000");
|
|
18785
|
+
const highlightColor = chunkPOPGQIVR_js.normalizeHexColor(effects?.duotone?.color2, "#ffffff");
|
|
18786
18786
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px]", children: [
|
|
18787
18787
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground font-medium", children: t("pptx.image.duotone") }),
|
|
18788
18788
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
@@ -18813,7 +18813,7 @@ function DuotonePanel({
|
|
|
18813
18813
|
] }),
|
|
18814
18814
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
18815
18815
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground text-[10px]", children: t("pptx.image.duotonePresets") }),
|
|
18816
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children:
|
|
18816
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: chunkTUYNK3GE_js.DUOTONE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
18817
18817
|
"button",
|
|
18818
18818
|
{
|
|
18819
18819
|
type: "button",
|
|
@@ -18951,7 +18951,7 @@ function ImageCropSection({
|
|
|
18951
18951
|
onUpdateElement
|
|
18952
18952
|
}) {
|
|
18953
18953
|
const { t } = reactI18next.useTranslation();
|
|
18954
|
-
if (!(0,
|
|
18954
|
+
if (!(0, chunkPOPGQIVR_js.dist_exports.isImageLikeElement)(selectedElement)) {
|
|
18955
18955
|
return null;
|
|
18956
18956
|
}
|
|
18957
18957
|
const croppable = pptx.cropResetState(selectedElement, canEdit, true).enabled;
|
|
@@ -18968,7 +18968,7 @@ function ImageCropSection({
|
|
|
18968
18968
|
max: MAX_CROP_PERCENT,
|
|
18969
18969
|
disabled: !croppable,
|
|
18970
18970
|
className: "accent-primary",
|
|
18971
|
-
value: Math.round(
|
|
18971
|
+
value: Math.round(chunkPOPGQIVR_js.clampCropValue(selectedElement[key]) * 100),
|
|
18972
18972
|
onChange: (e) => onUpdateElement({
|
|
18973
18973
|
[key]: Number(e.target.value) / 100
|
|
18974
18974
|
})
|
|
@@ -19032,7 +19032,7 @@ function ImagePropertiesPanel({
|
|
|
19032
19032
|
{
|
|
19033
19033
|
rows: 2,
|
|
19034
19034
|
disabled: !canEdit,
|
|
19035
|
-
className:
|
|
19035
|
+
className: chunkPOPGQIVR_js.cn(INPUT2, "resize-none text-[11px]"),
|
|
19036
19036
|
value: selectedElement.altText ?? "",
|
|
19037
19037
|
onChange: (e) => onUpdateElement({
|
|
19038
19038
|
altText: e.target.value
|
|
@@ -19972,7 +19972,7 @@ function AccessibilityTextSection({
|
|
|
19972
19972
|
rows: 2,
|
|
19973
19973
|
disabled: !canEdit,
|
|
19974
19974
|
placeholder: t("pptx.elementAccessibility.altTextPlaceholder"),
|
|
19975
|
-
className:
|
|
19975
|
+
className: chunkPOPGQIVR_js.cn(INPUT2, "resize-none text-[11px]"),
|
|
19976
19976
|
value: fields.altText,
|
|
19977
19977
|
onChange: (e) => onUpdateElement({ altText: e.target.value })
|
|
19978
19978
|
}
|
|
@@ -19986,7 +19986,7 @@ function AccessibilityTextSection({
|
|
|
19986
19986
|
type: "text",
|
|
19987
19987
|
disabled: !canEdit,
|
|
19988
19988
|
placeholder: t("pptx.elementAccessibility.titlePlaceholder"),
|
|
19989
|
-
className:
|
|
19989
|
+
className: chunkPOPGQIVR_js.cn(INPUT2, "text-[11px]"),
|
|
19990
19990
|
value: fields.title,
|
|
19991
19991
|
onChange: (e) => onUpdateElement({ title: e.target.value })
|
|
19992
19992
|
}
|
|
@@ -20102,7 +20102,7 @@ var SHADOW_EFFECT_CONFIGS = [
|
|
|
20102
20102
|
angle = (Math.atan2(offsetY, offsetX) * 180 / Math.PI + 360) % 360;
|
|
20103
20103
|
}
|
|
20104
20104
|
return {
|
|
20105
|
-
shadowColor:
|
|
20105
|
+
shadowColor: chunkPOPGQIVR_js.normalizeHexColor(s?.shadowColor, "#000000"),
|
|
20106
20106
|
shadowOpacity: s?.shadowOpacity ?? 0.35,
|
|
20107
20107
|
shadowBlur: s?.shadowBlur ?? 6,
|
|
20108
20108
|
shadowAngle: angle,
|
|
@@ -20118,7 +20118,7 @@ var SHADOW_EFFECT_CONFIGS = [
|
|
|
20118
20118
|
key: "sc",
|
|
20119
20119
|
label: "Shadow Color",
|
|
20120
20120
|
type: "color",
|
|
20121
|
-
read: (s) =>
|
|
20121
|
+
read: (s) => chunkPOPGQIVR_js.normalizeHexColor(s?.shadowColor, "#000000"),
|
|
20122
20122
|
write: (v) => ({ shadowColor: String(v) })
|
|
20123
20123
|
},
|
|
20124
20124
|
{
|
|
@@ -20254,7 +20254,7 @@ var SHADOW_EFFECT_CONFIGS = [
|
|
|
20254
20254
|
label: "Inner Shadow",
|
|
20255
20255
|
isOn: (s) => Boolean(s?.innerShadowColor) && s?.innerShadowColor !== "transparent",
|
|
20256
20256
|
onEnable: (s) => ({
|
|
20257
|
-
innerShadowColor:
|
|
20257
|
+
innerShadowColor: chunkPOPGQIVR_js.normalizeHexColor(s?.innerShadowColor, "#000000"),
|
|
20258
20258
|
innerShadowOpacity: s?.innerShadowOpacity ?? 0.5,
|
|
20259
20259
|
innerShadowBlur: s?.innerShadowBlur ?? 5,
|
|
20260
20260
|
innerShadowOffsetX: s?.innerShadowOffsetX ?? 0,
|
|
@@ -20266,7 +20266,7 @@ var SHADOW_EFFECT_CONFIGS = [
|
|
|
20266
20266
|
key: "isc",
|
|
20267
20267
|
label: "Color",
|
|
20268
20268
|
type: "color",
|
|
20269
|
-
read: (s) =>
|
|
20269
|
+
read: (s) => chunkPOPGQIVR_js.normalizeHexColor(s?.innerShadowColor, "#000000"),
|
|
20270
20270
|
write: (v) => ({ innerShadowColor: String(v) })
|
|
20271
20271
|
},
|
|
20272
20272
|
{
|
|
@@ -20776,7 +20776,7 @@ function ColorPickerRow({
|
|
|
20776
20776
|
pushColor(color);
|
|
20777
20777
|
};
|
|
20778
20778
|
const handleEyedropper = async () => {
|
|
20779
|
-
const color = await
|
|
20779
|
+
const color = await chunkPOPGQIVR_js.openNativeEyeDropper();
|
|
20780
20780
|
if (color) {
|
|
20781
20781
|
commit(color);
|
|
20782
20782
|
}
|
|
@@ -20859,9 +20859,9 @@ function GradientStopRow({
|
|
|
20859
20859
|
"input",
|
|
20860
20860
|
{
|
|
20861
20861
|
type: "color",
|
|
20862
|
-
value:
|
|
20862
|
+
value: chunkPOPGQIVR_js.normalizeHexColor(stop2.color, "#3b82f6"),
|
|
20863
20863
|
onChange: (e) => {
|
|
20864
|
-
const hex =
|
|
20864
|
+
const hex = chunkPOPGQIVR_js.normalizeHexColor(e.target.value, "#3b82f6");
|
|
20865
20865
|
patchStop({ color: hex, colorRef: void 0 });
|
|
20866
20866
|
pushColor(hex);
|
|
20867
20867
|
},
|
|
@@ -20986,7 +20986,7 @@ function FillAdvancedControls({
|
|
|
20986
20986
|
onClick: () => onUpdateGradientStops([
|
|
20987
20987
|
...gradientStops,
|
|
20988
20988
|
{
|
|
20989
|
-
color:
|
|
20989
|
+
color: chunkPOPGQIVR_js.normalizeHexColor(style?.fillColor, chunkPOPGQIVR_js.DEFAULT_FILL_COLOR),
|
|
20990
20990
|
position: 50,
|
|
20991
20991
|
opacity: 1
|
|
20992
20992
|
}
|
|
@@ -21000,9 +21000,9 @@ function FillAdvancedControls({
|
|
|
21000
21000
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${COL2} flex flex-col gap-2`, children: [
|
|
21001
21001
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: "Pattern" }),
|
|
21002
21002
|
/* @__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) => {
|
|
21003
|
-
const fgColor =
|
|
21004
|
-
const bgColor =
|
|
21005
|
-
const svgPattern =
|
|
21003
|
+
const fgColor = chunkPOPGQIVR_js.normalizeHexColor(style?.fillColor, chunkPOPGQIVR_js.DEFAULT_FILL_COLOR);
|
|
21004
|
+
const bgColor = chunkPOPGQIVR_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff");
|
|
21005
|
+
const svgPattern = chunkPOPGQIVR_js.getPatternSvg(opt.value, fgColor, bgColor);
|
|
21006
21006
|
const isSelected = (style.fillPatternPreset || "pct20") === opt.value;
|
|
21007
21007
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
21008
21008
|
"button",
|
|
@@ -21035,7 +21035,7 @@ function FillAdvancedControls({
|
|
|
21035
21035
|
{
|
|
21036
21036
|
label: t("pptx.fillAdvanced.foregroundColor"),
|
|
21037
21037
|
prefix: "pattern-fg",
|
|
21038
|
-
value:
|
|
21038
|
+
value: chunkPOPGQIVR_js.normalizeHexColor(style?.fillColor, chunkPOPGQIVR_js.DEFAULT_FILL_COLOR),
|
|
21039
21039
|
disabled: isLine,
|
|
21040
21040
|
onChange: (color) => onUpdateShapeStyle({ fillMode: "pattern", fillColor: color })
|
|
21041
21041
|
}
|
|
@@ -21045,7 +21045,7 @@ function FillAdvancedControls({
|
|
|
21045
21045
|
{
|
|
21046
21046
|
label: t("pptx.fillAdvanced.backgroundColor"),
|
|
21047
21047
|
prefix: "pattern-bg",
|
|
21048
|
-
value:
|
|
21048
|
+
value: chunkPOPGQIVR_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff"),
|
|
21049
21049
|
disabled: isLine,
|
|
21050
21050
|
onChange: (color) => onUpdateShapeStyle({
|
|
21051
21051
|
fillMode: "pattern",
|
|
@@ -21112,11 +21112,11 @@ function QuickStylesGallery({
|
|
|
21112
21112
|
onUpdateShapeStyle
|
|
21113
21113
|
}) {
|
|
21114
21114
|
const { t } = reactI18next.useTranslation();
|
|
21115
|
-
const { viewportWidth } =
|
|
21115
|
+
const { viewportWidth } = chunkTUYNK3GE_js.useIsMobile();
|
|
21116
21116
|
const swatchMinHeight = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
21117
21117
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
21118
21118
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: t("pptx.shape.quickStyles") }),
|
|
21119
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-6 gap-1", children:
|
|
21119
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-6 gap-1", children: chunkPOPGQIVR_js.SHAPE_QUICK_STYLES.map((qs, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
21120
21120
|
"button",
|
|
21121
21121
|
{
|
|
21122
21122
|
type: "button",
|
|
@@ -21143,7 +21143,7 @@ function StrokeEffectsSection({
|
|
|
21143
21143
|
{
|
|
21144
21144
|
label: t("pptx.inspector.stroke"),
|
|
21145
21145
|
prefix: "stroke",
|
|
21146
|
-
value:
|
|
21146
|
+
value: chunkPOPGQIVR_js.normalizeHexColor(style?.strokeColor, chunkPOPGQIVR_js.DEFAULT_STROKE_COLOR),
|
|
21147
21147
|
selectedRef: style?.strokeColorRef,
|
|
21148
21148
|
onChange: onSetStrokeColor
|
|
21149
21149
|
}
|
|
@@ -21206,7 +21206,7 @@ function StrokeEffectsSection({
|
|
|
21206
21206
|
strokeDash: e.target.value
|
|
21207
21207
|
}),
|
|
21208
21208
|
className: SEL,
|
|
21209
|
-
children:
|
|
21209
|
+
children: chunkPOPGQIVR_js.STROKE_DASH_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
21210
21210
|
}
|
|
21211
21211
|
)
|
|
21212
21212
|
] }),
|
|
@@ -21296,10 +21296,10 @@ function FillStrokeProperties({
|
|
|
21296
21296
|
return;
|
|
21297
21297
|
}
|
|
21298
21298
|
if (nextMode === "gradient") {
|
|
21299
|
-
const existing =
|
|
21299
|
+
const existing = chunkPOPGQIVR_js.sanitizeGradientStops(style?.fillGradientStops);
|
|
21300
21300
|
const stops = existing.length >= 2 ? existing : [
|
|
21301
21301
|
{
|
|
21302
|
-
color:
|
|
21302
|
+
color: chunkPOPGQIVR_js.normalizeHexColor(style?.fillColor, chunkPOPGQIVR_js.DEFAULT_FILL_COLOR),
|
|
21303
21303
|
position: 0,
|
|
21304
21304
|
opacity: 1
|
|
21305
21305
|
},
|
|
@@ -21324,7 +21324,7 @@ function FillStrokeProperties({
|
|
|
21324
21324
|
onUpdateShapeStyle({ fillMode: "solid" });
|
|
21325
21325
|
};
|
|
21326
21326
|
const gradientStops = selectedGradientStops.length > 0 ? selectedGradientStops : [
|
|
21327
|
-
{ color:
|
|
21327
|
+
{ color: chunkPOPGQIVR_js.DEFAULT_FILL_COLOR, position: 0 },
|
|
21328
21328
|
{ color: "#ffffff", position: 100 }
|
|
21329
21329
|
];
|
|
21330
21330
|
const showGradient = style?.fillMode === "gradient" || selectedGradientStops.length > 0;
|
|
@@ -21351,7 +21351,7 @@ function FillStrokeProperties({
|
|
|
21351
21351
|
{
|
|
21352
21352
|
label: t("pptx.fill.fill"),
|
|
21353
21353
|
prefix: "fill",
|
|
21354
|
-
value:
|
|
21354
|
+
value: chunkPOPGQIVR_js.normalizeHexColor(style?.fillColor, chunkPOPGQIVR_js.DEFAULT_FILL_COLOR),
|
|
21355
21355
|
selectedRef: style?.fillColorRef,
|
|
21356
21356
|
disabled: line,
|
|
21357
21357
|
onChange: onSetFillColor
|
|
@@ -21435,7 +21435,7 @@ function Text3DProperties({
|
|
|
21435
21435
|
"input",
|
|
21436
21436
|
{
|
|
21437
21437
|
type: "color",
|
|
21438
|
-
value:
|
|
21438
|
+
value: chunkPOPGQIVR_js.normalizeHexColor(t3d?.extrusionColor, "#888888"),
|
|
21439
21439
|
onChange: (e) => {
|
|
21440
21440
|
update3d({ extrusionColor: e.target.value });
|
|
21441
21441
|
pushColor(e.target.value);
|
|
@@ -21626,7 +21626,7 @@ function AdvancedTextFormatting({
|
|
|
21626
21626
|
"input",
|
|
21627
21627
|
{
|
|
21628
21628
|
type: "color",
|
|
21629
|
-
value:
|
|
21629
|
+
value: chunkPOPGQIVR_js.normalizeHexColor(ts?.highlightColor, "#ffff00"),
|
|
21630
21630
|
onChange: (e) => {
|
|
21631
21631
|
onUpdateTextStyle({ highlightColor: e.target.value });
|
|
21632
21632
|
pushColor(e.target.value);
|
|
@@ -21930,7 +21930,7 @@ function TextEffectsPanel({
|
|
|
21930
21930
|
"input",
|
|
21931
21931
|
{
|
|
21932
21932
|
type: "color",
|
|
21933
|
-
value:
|
|
21933
|
+
value: chunkPOPGQIVR_js.normalizeHexColor(ts?.textShadowColor, "#000000"),
|
|
21934
21934
|
onChange: (e) => {
|
|
21935
21935
|
onUpdateTextStyle({ textShadowColor: e.target.value });
|
|
21936
21936
|
pushColor(e.target.value);
|
|
@@ -22037,7 +22037,7 @@ function TextEffectsPanel({
|
|
|
22037
22037
|
"input",
|
|
22038
22038
|
{
|
|
22039
22039
|
type: "color",
|
|
22040
|
-
value:
|
|
22040
|
+
value: chunkPOPGQIVR_js.normalizeHexColor(ts?.textGlowColor, "#ffff00"),
|
|
22041
22041
|
onChange: (e) => {
|
|
22042
22042
|
onUpdateTextStyle({ textGlowColor: e.target.value });
|
|
22043
22043
|
pushColor(e.target.value);
|
|
@@ -22136,7 +22136,7 @@ function TextAdvancedSections({
|
|
|
22136
22136
|
canEdit,
|
|
22137
22137
|
onUpdateTextStyle
|
|
22138
22138
|
}) {
|
|
22139
|
-
if (!(0,
|
|
22139
|
+
if (!(0, chunkPOPGQIVR_js.dist_exports.hasTextProperties)(selectedElement)) {
|
|
22140
22140
|
return null;
|
|
22141
22141
|
}
|
|
22142
22142
|
const ts = selectedElement.textStyle;
|
|
@@ -22165,22 +22165,22 @@ function ShapeTextPanels({
|
|
|
22165
22165
|
}) {
|
|
22166
22166
|
const { t } = reactI18next.useTranslation();
|
|
22167
22167
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
22168
|
-
(0,
|
|
22168
|
+
(0, chunkPOPGQIVR_js.dist_exports.hasShapeProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
22169
22169
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.shape.type", "Shape Type") }),
|
|
22170
22170
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22171
22171
|
WebSelect,
|
|
22172
22172
|
{
|
|
22173
22173
|
value: selectedElement.shapeType || "rect",
|
|
22174
22174
|
disabled: !canEdit,
|
|
22175
|
-
className:
|
|
22175
|
+
className: chunkPOPGQIVR_js.cn(INPUT2, "w-full"),
|
|
22176
22176
|
onChange: (e) => onUpdateElement({
|
|
22177
22177
|
shapeType: e.target.value
|
|
22178
22178
|
}),
|
|
22179
|
-
children:
|
|
22179
|
+
children: chunkPOPGQIVR_js.SHAPE_PRESETS.filter((p) => p.type !== "connector").map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.type, children: t(p.i18nKey) }, p.type))
|
|
22180
22180
|
}
|
|
22181
22181
|
)
|
|
22182
22182
|
] }),
|
|
22183
|
-
(0,
|
|
22183
|
+
(0, chunkPOPGQIVR_js.dist_exports.hasShapeProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, "data-pptx-fill-stroke": true, "data-pptx-inspector-section": "fill-stroke", children: [
|
|
22184
22184
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.shape.fillStroke", "Fill & Stroke") }),
|
|
22185
22185
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22186
22186
|
FillStrokeProperties,
|
|
@@ -22188,7 +22188,7 @@ function ShapeTextPanels({
|
|
|
22188
22188
|
selectedElement,
|
|
22189
22189
|
selectedShapeStyle: selectedElement.shapeStyle,
|
|
22190
22190
|
selectedShapeType: selectedElement.shapeType,
|
|
22191
|
-
selectedGradientStops:
|
|
22191
|
+
selectedGradientStops: chunkPOPGQIVR_js.sanitizeGradientStops(
|
|
22192
22192
|
selectedElement.shapeStyle?.fillGradientStops
|
|
22193
22193
|
),
|
|
22194
22194
|
canEdit,
|
|
@@ -22198,7 +22198,7 @@ function ShapeTextPanels({
|
|
|
22198
22198
|
}
|
|
22199
22199
|
)
|
|
22200
22200
|
] }),
|
|
22201
|
-
(0,
|
|
22201
|
+
(0, chunkPOPGQIVR_js.dist_exports.hasTextProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, "data-pptx-text-card": true, children: [
|
|
22202
22202
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.text.title", "Text") }),
|
|
22203
22203
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-1.5 text-[11px]", children: [
|
|
22204
22204
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -22224,7 +22224,7 @@ function ShapeTextPanels({
|
|
|
22224
22224
|
{
|
|
22225
22225
|
disabled: !canEdit,
|
|
22226
22226
|
ariaLabel: "Text Color",
|
|
22227
|
-
value:
|
|
22227
|
+
value: chunkPOPGQIVR_js.normalizeHexColor(selectedElement.textStyle?.color, "#000000"),
|
|
22228
22228
|
className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
|
|
22229
22229
|
onCommit: (hex) => onUpdateTextStyle({ color: hex, colorRef: void 0 })
|
|
22230
22230
|
}
|
|
@@ -22316,7 +22316,7 @@ function TextFormatToggle({
|
|
|
22316
22316
|
{
|
|
22317
22317
|
type: "button",
|
|
22318
22318
|
disabled,
|
|
22319
|
-
className:
|
|
22319
|
+
className: chunkPOPGQIVR_js.cn(
|
|
22320
22320
|
"px-2 py-1 rounded text-[11px] transition-colors max-md:min-w-[44px]! max-md:min-h-[44px]!",
|
|
22321
22321
|
italic && "italic",
|
|
22322
22322
|
underline && "underline",
|
|
@@ -22474,7 +22474,7 @@ var THUMB_COMPONENTS = {
|
|
|
22474
22474
|
chevron: ChevronThumb,
|
|
22475
22475
|
bending: BendingThumb
|
|
22476
22476
|
};
|
|
22477
|
-
var LAYOUT_DESCRIPTORS =
|
|
22477
|
+
var LAYOUT_DESCRIPTORS = chunkPOPGQIVR_js.dist_exports.SWITCHABLE_LAYOUT_TYPES.map((type) => ({
|
|
22478
22478
|
type,
|
|
22479
22479
|
i18nKey: `pptx.smartart.category.${type}`
|
|
22480
22480
|
}));
|
|
@@ -22502,7 +22502,7 @@ function SmartArtLayoutSwitcher({
|
|
|
22502
22502
|
type: "button",
|
|
22503
22503
|
"data-testid": `smartart-layout-${type}`,
|
|
22504
22504
|
disabled: !canEdit,
|
|
22505
|
-
className:
|
|
22505
|
+
className: chunkPOPGQIVR_js.cn(
|
|
22506
22506
|
"flex flex-col items-center gap-0.5 rounded border p-1.5 transition-colors",
|
|
22507
22507
|
"text-[9px] leading-tight",
|
|
22508
22508
|
isActive ? "border-primary bg-primary/15 text-primary" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
@@ -22581,7 +22581,7 @@ function SmartArtNodeStyleControls({
|
|
|
22581
22581
|
disabled: !canEdit,
|
|
22582
22582
|
"aria-label": `Bold ${label}`,
|
|
22583
22583
|
"aria-pressed": bold,
|
|
22584
|
-
className:
|
|
22584
|
+
className: chunkPOPGQIVR_js.cn(
|
|
22585
22585
|
EMPHASIS_BTN,
|
|
22586
22586
|
"font-bold",
|
|
22587
22587
|
bold ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground"
|
|
@@ -22597,7 +22597,7 @@ function SmartArtNodeStyleControls({
|
|
|
22597
22597
|
disabled: !canEdit,
|
|
22598
22598
|
"aria-label": `Italic ${label}`,
|
|
22599
22599
|
"aria-pressed": italic,
|
|
22600
|
-
className:
|
|
22600
|
+
className: chunkPOPGQIVR_js.cn(
|
|
22601
22601
|
EMPHASIS_BTN,
|
|
22602
22602
|
"italic",
|
|
22603
22603
|
italic ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground"
|
|
@@ -22636,7 +22636,7 @@ function SmartArtNodeRow({
|
|
|
22636
22636
|
"div",
|
|
22637
22637
|
{
|
|
22638
22638
|
role: "listitem",
|
|
22639
|
-
className:
|
|
22639
|
+
className: chunkPOPGQIVR_js.cn(
|
|
22640
22640
|
"rounded border bg-background/60 p-1.5",
|
|
22641
22641
|
isChild ? "border-border/60 ml-4" : "border-border"
|
|
22642
22642
|
),
|
|
@@ -22651,7 +22651,7 @@ function SmartArtNodeRow({
|
|
|
22651
22651
|
"data-testid": "smartart-node-text",
|
|
22652
22652
|
disabled: !canEdit,
|
|
22653
22653
|
"aria-label": label,
|
|
22654
|
-
className:
|
|
22654
|
+
className: chunkPOPGQIVR_js.cn(INPUT2, "flex-1 text-[11px] py-0.5"),
|
|
22655
22655
|
value: text,
|
|
22656
22656
|
onChange: (e) => onChangeText(nodeId, e.target.value),
|
|
22657
22657
|
onKeyDown: (e) => onKeyDown(e, nodeId),
|
|
@@ -22700,7 +22700,7 @@ function SmartArtNodeRow({
|
|
|
22700
22700
|
{
|
|
22701
22701
|
type: "button",
|
|
22702
22702
|
disabled: !canEdit || removeDisabled,
|
|
22703
|
-
className:
|
|
22703
|
+
className: chunkPOPGQIVR_js.cn(MINI_BTN, "hover:text-red-400"),
|
|
22704
22704
|
onClick: () => onRemove(nodeId),
|
|
22705
22705
|
"aria-label": `Remove ${label}`,
|
|
22706
22706
|
title: removeDisabled ? t("pptx.smartArt.layoutMinimum") : t("pptx.smartArt.remove"),
|
|
@@ -22743,7 +22743,7 @@ function SmartArtStyleControls({
|
|
|
22743
22743
|
disabled: !canEdit,
|
|
22744
22744
|
"data-testid": "smartart-color-scheme",
|
|
22745
22745
|
"aria-label": t("pptx.smartart.colorScheme"),
|
|
22746
|
-
className:
|
|
22746
|
+
className: chunkPOPGQIVR_js.cn(INPUT2, "w-full"),
|
|
22747
22747
|
value: colorScheme,
|
|
22748
22748
|
onChange: (e) => onChangeColorScheme(e.target.value),
|
|
22749
22749
|
children: colorSchemes.map((cs) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: cs, children: pptx.schemaLabel(pptx.SMARTART_COLOR_SCHEME_LABEL_KEYS, cs, translate) }, cs))
|
|
@@ -22758,7 +22758,7 @@ function SmartArtStyleControls({
|
|
|
22758
22758
|
type: "button",
|
|
22759
22759
|
disabled: !canEdit,
|
|
22760
22760
|
"aria-pressed": style === s,
|
|
22761
|
-
className:
|
|
22761
|
+
className: chunkPOPGQIVR_js.cn(
|
|
22762
22762
|
"flex-1 px-2 py-1 text-[10px] rounded border transition-colors",
|
|
22763
22763
|
style === s ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground hover:bg-muted"
|
|
22764
22764
|
),
|
|
@@ -22804,7 +22804,7 @@ function SmartArtPropertiesPanel({
|
|
|
22804
22804
|
const reflowed = box ? pptx.rebuildDrawingShapesIfCleared(
|
|
22805
22805
|
newData,
|
|
22806
22806
|
newData.layout,
|
|
22807
|
-
|
|
22807
|
+
chunkTUYNK3GE_js.resolveSmartArtDataPalette(newData),
|
|
22808
22808
|
newData.style ?? "flat",
|
|
22809
22809
|
"inspector",
|
|
22810
22810
|
box
|
|
@@ -22815,10 +22815,10 @@ function SmartArtPropertiesPanel({
|
|
|
22815
22815
|
applySmartArtData({ ...smartArtData, ...patch });
|
|
22816
22816
|
};
|
|
22817
22817
|
const handleUpdateNodeText = (nodeId, text) => {
|
|
22818
|
-
applySmartArtData((0,
|
|
22818
|
+
applySmartArtData((0, chunkPOPGQIVR_js.dist_exports.updateSmartArtNodeText)(smartArtData, nodeId, text));
|
|
22819
22819
|
};
|
|
22820
22820
|
const handleChangeNodeStyle = (nodeId, patch) => {
|
|
22821
|
-
const next = (0,
|
|
22821
|
+
const next = (0, chunkPOPGQIVR_js.dist_exports.setSmartArtNodeStyle)(smartArtData, nodeId, patch);
|
|
22822
22822
|
if (next !== smartArtData) {
|
|
22823
22823
|
applySmartArtData(next);
|
|
22824
22824
|
}
|
|
@@ -22827,17 +22827,17 @@ function SmartArtPropertiesPanel({
|
|
|
22827
22827
|
if (!pptx.canAddTopLevelNode(layout, topLevelCount)) {
|
|
22828
22828
|
return;
|
|
22829
22829
|
}
|
|
22830
|
-
applySmartArtData((0,
|
|
22830
|
+
applySmartArtData((0, chunkPOPGQIVR_js.dist_exports.addSmartArtNodeAsChild)(smartArtData));
|
|
22831
22831
|
};
|
|
22832
22832
|
const addSubItem = (parentId) => {
|
|
22833
|
-
applySmartArtData((0,
|
|
22833
|
+
applySmartArtData((0, chunkPOPGQIVR_js.dist_exports.addSmartArtNodeAsChild)(smartArtData, parentId, "Sub-item"));
|
|
22834
22834
|
};
|
|
22835
22835
|
const removeNode = (nodeId) => {
|
|
22836
22836
|
const isTopLevel = !nodes.find((n) => n.id === nodeId)?.parentId;
|
|
22837
22837
|
if (isTopLevel && !pptx.canRemoveTopLevelNode(layout, topLevelCount)) {
|
|
22838
22838
|
return;
|
|
22839
22839
|
}
|
|
22840
|
-
applySmartArtData((0,
|
|
22840
|
+
applySmartArtData((0, chunkPOPGQIVR_js.dist_exports.removeSmartArtNode)(smartArtData, nodeId));
|
|
22841
22841
|
};
|
|
22842
22842
|
const moveNode = (nodeId, direction) => {
|
|
22843
22843
|
const next = pptx.reorder(smartArtData, nodeId, direction);
|
|
@@ -22993,7 +22993,7 @@ function TableDataGrid({
|
|
|
22993
22993
|
}) {
|
|
22994
22994
|
const { t } = reactI18next.useTranslation();
|
|
22995
22995
|
const grid = pptx.buildTableDataGrid(tableElement);
|
|
22996
|
-
const { viewportWidth } =
|
|
22996
|
+
const { viewportWidth } = chunkTUYNK3GE_js.useIsMobile();
|
|
22997
22997
|
const gridPlan = pptx.getDenseGridLayoutPlan(viewportWidth);
|
|
22998
22998
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
22999
22999
|
const stickyGutterClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10" : "";
|
|
@@ -23405,7 +23405,7 @@ function TableCellColorField({
|
|
|
23405
23405
|
disabled,
|
|
23406
23406
|
onCommit
|
|
23407
23407
|
}) {
|
|
23408
|
-
const hex =
|
|
23408
|
+
const hex = chunkPOPGQIVR_js.normalizeHexColor(value, fallback);
|
|
23409
23409
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
23410
23410
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: label }),
|
|
23411
23411
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -23516,7 +23516,7 @@ function TableCellFormattingPanel({
|
|
|
23516
23516
|
{
|
|
23517
23517
|
type: "button",
|
|
23518
23518
|
disabled: !canEdit,
|
|
23519
|
-
className:
|
|
23519
|
+
className: chunkPOPGQIVR_js.cn(
|
|
23520
23520
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
23521
23521
|
cls,
|
|
23522
23522
|
cs[key] ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
@@ -23535,7 +23535,7 @@ function TableCellFormattingPanel({
|
|
|
23535
23535
|
{
|
|
23536
23536
|
type: "button",
|
|
23537
23537
|
disabled: !canEdit,
|
|
23538
|
-
className:
|
|
23538
|
+
className: chunkPOPGQIVR_js.cn(
|
|
23539
23539
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
23540
23540
|
cs.align === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
23541
23541
|
),
|
|
@@ -23553,7 +23553,7 @@ function TableCellFormattingPanel({
|
|
|
23553
23553
|
{
|
|
23554
23554
|
type: "button",
|
|
23555
23555
|
disabled: !canEdit,
|
|
23556
|
-
className:
|
|
23556
|
+
className: chunkPOPGQIVR_js.cn(
|
|
23557
23557
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
23558
23558
|
cs.vAlign === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
23559
23559
|
),
|
|
@@ -23576,7 +23576,7 @@ function TableCellFormattingPanel({
|
|
|
23576
23576
|
DebouncedColorInput,
|
|
23577
23577
|
{
|
|
23578
23578
|
disabled: !canEdit,
|
|
23579
|
-
value:
|
|
23579
|
+
value: chunkPOPGQIVR_js.normalizeHexColor(cs[colorKey], "#374151"),
|
|
23580
23580
|
className: "w-7 h-6 rounded border border-border bg-transparent cursor-pointer shrink-0",
|
|
23581
23581
|
onCommit: (hex) => updateCellStyle({ [colorKey]: hex })
|
|
23582
23582
|
}
|
|
@@ -23586,7 +23586,7 @@ function TableCellFormattingPanel({
|
|
|
23586
23586
|
{
|
|
23587
23587
|
type: "number",
|
|
23588
23588
|
disabled: !canEdit,
|
|
23589
|
-
className:
|
|
23589
|
+
className: chunkPOPGQIVR_js.cn(INPUT2, "w-14"),
|
|
23590
23590
|
min: 0,
|
|
23591
23591
|
max: 10,
|
|
23592
23592
|
value: cs[widthKey] ?? 1,
|
|
@@ -23602,7 +23602,7 @@ function TableCellFormattingPanel({
|
|
|
23602
23602
|
{
|
|
23603
23603
|
type: "button",
|
|
23604
23604
|
disabled: !canEdit,
|
|
23605
|
-
className:
|
|
23605
|
+
className: chunkPOPGQIVR_js.cn(BTN2, "text-center"),
|
|
23606
23606
|
onClick: () => {
|
|
23607
23607
|
const newRows = pptx.computeMergeCellRight(td, rowIndex, columnIndex);
|
|
23608
23608
|
if (newRows) {
|
|
@@ -23617,7 +23617,7 @@ function TableCellFormattingPanel({
|
|
|
23617
23617
|
{
|
|
23618
23618
|
type: "button",
|
|
23619
23619
|
disabled: !canEdit,
|
|
23620
|
-
className:
|
|
23620
|
+
className: chunkPOPGQIVR_js.cn(BTN2, "text-center"),
|
|
23621
23621
|
onClick: () => {
|
|
23622
23622
|
const newRows = pptx.computeMergeCellDown(td, rowIndex, columnIndex);
|
|
23623
23623
|
if (newRows) {
|
|
@@ -23632,7 +23632,7 @@ function TableCellFormattingPanel({
|
|
|
23632
23632
|
{
|
|
23633
23633
|
type: "button",
|
|
23634
23634
|
disabled: !canEdit,
|
|
23635
|
-
className:
|
|
23635
|
+
className: chunkPOPGQIVR_js.cn(BTN2, "text-center"),
|
|
23636
23636
|
onClick: () => {
|
|
23637
23637
|
const newRows = pptx.computeSplitCell(td, rowIndex, columnIndex);
|
|
23638
23638
|
if (newRows) {
|
|
@@ -23818,7 +23818,7 @@ function TableStyleEditor({
|
|
|
23818
23818
|
const { t } = reactI18next.useTranslation();
|
|
23819
23819
|
const themeColorMap = useThemeColorMap();
|
|
23820
23820
|
const [activeStyleId, setActiveStyleId] = React98.useState(
|
|
23821
|
-
styleId ? (0,
|
|
23821
|
+
styleId ? (0, chunkPOPGQIVR_js.dist_exports.normalizeTableStyleGuid)(styleId) : ""
|
|
23822
23822
|
);
|
|
23823
23823
|
const [selectedPart, setSelectedPart] = React98.useState("wholeTbl");
|
|
23824
23824
|
const entry = activeStyleId ? styleMap?.[activeStyleId] : void 0;
|
|
@@ -23839,8 +23839,8 @@ function TableStyleEditor({
|
|
|
23839
23839
|
return;
|
|
23840
23840
|
}
|
|
23841
23841
|
const nextMap = { ...styleMap ?? {} };
|
|
23842
|
-
const created = (0,
|
|
23843
|
-
(0,
|
|
23842
|
+
const created = (0, chunkPOPGQIVR_js.dist_exports.createTableStyleEntry)(nextMap, { styleName: name, basedOn: entry });
|
|
23843
|
+
(0, chunkPOPGQIVR_js.dist_exports.addTableStyleToMap)(nextMap, created);
|
|
23844
23844
|
onStyleMapChange(nextMap);
|
|
23845
23845
|
setActiveStyleId(created.styleId);
|
|
23846
23846
|
onAssignStyle?.(created.styleId);
|
|
@@ -23850,7 +23850,7 @@ function TableStyleEditor({
|
|
|
23850
23850
|
return;
|
|
23851
23851
|
}
|
|
23852
23852
|
const nextMap = { ...styleMap };
|
|
23853
|
-
(0,
|
|
23853
|
+
(0, chunkPOPGQIVR_js.dist_exports.deleteTableStyleFromMap)(nextMap, entry.styleId);
|
|
23854
23854
|
onStyleMapChange(nextMap);
|
|
23855
23855
|
onDeleteStyle(entry.styleId);
|
|
23856
23856
|
onClose();
|
|
@@ -23904,7 +23904,7 @@ function TablePropertiesPanel({
|
|
|
23904
23904
|
const updateMergeRows = (rows) => {
|
|
23905
23905
|
const tableData = { ...td, rows };
|
|
23906
23906
|
const updates = { tableData };
|
|
23907
|
-
const rawXml = (0,
|
|
23907
|
+
const rawXml = (0, chunkPOPGQIVR_js.dist_exports.updateMergeAttrsInRawXml)(tableElement, tableData);
|
|
23908
23908
|
if (rawXml) {
|
|
23909
23909
|
updates.rawXml = rawXml;
|
|
23910
23910
|
}
|
|
@@ -23970,7 +23970,7 @@ function TablePropertiesPanel({
|
|
|
23970
23970
|
] }),
|
|
23971
23971
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
23972
23972
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.table.stylePresets") }),
|
|
23973
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children:
|
|
23973
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children: chunkPOPGQIVR_js.TABLE_STYLE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
23974
23974
|
"button",
|
|
23975
23975
|
{
|
|
23976
23976
|
type: "button",
|
|
@@ -24198,7 +24198,7 @@ function ElementInspectorBody({
|
|
|
24198
24198
|
box: { width: selectedElement.width, height: selectedElement.height }
|
|
24199
24199
|
}
|
|
24200
24200
|
),
|
|
24201
|
-
(0,
|
|
24201
|
+
(0, chunkPOPGQIVR_js.dist_exports.isImageLikeElement)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
24202
24202
|
ImagePropertiesPanel,
|
|
24203
24203
|
{
|
|
24204
24204
|
selectedElement,
|
|
@@ -24363,7 +24363,7 @@ function CommentMentionTextarea({
|
|
|
24363
24363
|
"data-testid": "pptx-comment-mention-option",
|
|
24364
24364
|
role: "option",
|
|
24365
24365
|
"aria-selected": index === safeHighlighted,
|
|
24366
|
-
className:
|
|
24366
|
+
className: chunkPOPGQIVR_js.cn(
|
|
24367
24367
|
"block w-full px-2 py-1 text-left text-[11px] hover:bg-accent",
|
|
24368
24368
|
index === safeHighlighted && "bg-accent"
|
|
24369
24369
|
),
|
|
@@ -24486,7 +24486,7 @@ function InspectorCommentRow({
|
|
|
24486
24486
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
24487
24487
|
"div",
|
|
24488
24488
|
{
|
|
24489
|
-
className:
|
|
24489
|
+
className: chunkPOPGQIVR_js.cn(
|
|
24490
24490
|
"rounded border border-border bg-card p-2",
|
|
24491
24491
|
depth > 0 && "ml-3 border-l-2 border-l-primary/40"
|
|
24492
24492
|
),
|
|
@@ -24499,7 +24499,7 @@ function InspectorCommentRow({
|
|
|
24499
24499
|
t("pptx.comments.resolved")
|
|
24500
24500
|
] })
|
|
24501
24501
|
] }),
|
|
24502
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children:
|
|
24502
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children: chunkPOPGQIVR_js.formatCommentTimestamp(comment.createdAt) })
|
|
24503
24503
|
] }),
|
|
24504
24504
|
comment.elementId && (targetElement ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
24505
24505
|
"button",
|
|
@@ -24507,12 +24507,12 @@ function InspectorCommentRow({
|
|
|
24507
24507
|
type: "button",
|
|
24508
24508
|
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",
|
|
24509
24509
|
title: t("pptx.comments.commentingOn", {
|
|
24510
|
-
element:
|
|
24510
|
+
element: chunkPOPGQIVR_js.getElementLabel(targetElement)
|
|
24511
24511
|
}),
|
|
24512
24512
|
onClick: () => onSelectElement(targetElement.id),
|
|
24513
24513
|
children: [
|
|
24514
24514
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
|
|
24515
|
-
|
|
24515
|
+
chunkPOPGQIVR_js.getElementLabel(targetElement)
|
|
24516
24516
|
]
|
|
24517
24517
|
}
|
|
24518
24518
|
) : /* @__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") })),
|
|
@@ -24581,7 +24581,7 @@ function InspectorCommentRow({
|
|
|
24581
24581
|
"button",
|
|
24582
24582
|
{
|
|
24583
24583
|
type: "button",
|
|
24584
|
-
className:
|
|
24584
|
+
className: chunkPOPGQIVR_js.cn(
|
|
24585
24585
|
"inline-flex items-center justify-center p-1.5 border-l border-border transition-colors",
|
|
24586
24586
|
comment.resolved ? "bg-green-900/40 text-green-300 hover:bg-green-900/60" : "hover:bg-accent text-foreground hover:text-foreground"
|
|
24587
24587
|
),
|
|
@@ -24724,7 +24724,7 @@ function InspectorCommentsSection({
|
|
|
24724
24724
|
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: [
|
|
24725
24725
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
|
|
24726
24726
|
t("pptx.comments.commentingOn", {
|
|
24727
|
-
element:
|
|
24727
|
+
element: chunkPOPGQIVR_js.getElementLabel(selectedElement)
|
|
24728
24728
|
})
|
|
24729
24729
|
] }),
|
|
24730
24730
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -24735,7 +24735,7 @@ function InspectorCommentsSection({
|
|
|
24735
24735
|
authors: commentAuthors,
|
|
24736
24736
|
rows: 2,
|
|
24737
24737
|
placeholder: selectedElement ? t("pptx.comments.addOnElement", {
|
|
24738
|
-
element:
|
|
24738
|
+
element: chunkPOPGQIVR_js.getElementLabel(selectedElement)
|
|
24739
24739
|
}) : t("pptx.comments.addPlaceholder"),
|
|
24740
24740
|
className: "w-full bg-muted border border-border rounded px-2 py-1 text-xs resize-y outline-none focus:border-primary",
|
|
24741
24741
|
onChange: onSetCommentDraft,
|
|
@@ -24748,7 +24748,7 @@ function InspectorCommentsSection({
|
|
|
24748
24748
|
type: "button",
|
|
24749
24749
|
onClick: onAddComment,
|
|
24750
24750
|
disabled: !commentDraft.trim(),
|
|
24751
|
-
className:
|
|
24751
|
+
className: chunkPOPGQIVR_js.cn(
|
|
24752
24752
|
"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]!",
|
|
24753
24753
|
commentDraft.trim() ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
|
|
24754
24754
|
),
|
|
@@ -24762,7 +24762,7 @@ function InspectorCommentsSection({
|
|
|
24762
24762
|
] });
|
|
24763
24763
|
}
|
|
24764
24764
|
function elementLabel(element) {
|
|
24765
|
-
const text = (0,
|
|
24765
|
+
const text = (0, chunkPOPGQIVR_js.dist_exports.hasTextProperties)(element) ? (element.text || "").slice(0, 24) : void 0;
|
|
24766
24766
|
return text || element.type;
|
|
24767
24767
|
}
|
|
24768
24768
|
function InspectorElementsTab({
|
|
@@ -24789,13 +24789,13 @@ function InspectorElementsTab({
|
|
|
24789
24789
|
};
|
|
24790
24790
|
if (!activeSlide) {
|
|
24791
24791
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
24792
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
24792
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkPOPGQIVR_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
|
|
24793
24793
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground italic", children: t("pptx.inspector.noSlideSelected") })
|
|
24794
24794
|
] });
|
|
24795
24795
|
}
|
|
24796
24796
|
const elements = activeSlide.elements || [];
|
|
24797
24797
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", "data-pptx-elements-tab": true, children: [
|
|
24798
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
24798
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkPOPGQIVR_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
|
|
24799
24799
|
[...elements].reverse().map((el, reversedIndex) => {
|
|
24800
24800
|
const index = elements.length - 1 - reversedIndex;
|
|
24801
24801
|
const selected = selectedElementId === el.id || selectedElementIds.includes(el.id);
|
|
@@ -24803,7 +24803,7 @@ function InspectorElementsTab({
|
|
|
24803
24803
|
"div",
|
|
24804
24804
|
{
|
|
24805
24805
|
title: `${el.type} - ${el.id}`,
|
|
24806
|
-
className:
|
|
24806
|
+
className: chunkPOPGQIVR_js.cn(
|
|
24807
24807
|
"flex items-center gap-2 px-2 py-1 rounded cursor-pointer transition-colors",
|
|
24808
24808
|
selected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground"
|
|
24809
24809
|
),
|
|
@@ -24840,7 +24840,7 @@ function InspectorPaneHeader({
|
|
|
24840
24840
|
onClose
|
|
24841
24841
|
}) {
|
|
24842
24842
|
const { t } = reactI18next.useTranslation();
|
|
24843
|
-
const { viewportWidth } =
|
|
24843
|
+
const { viewportWidth } = chunkTUYNK3GE_js.useIsMobile();
|
|
24844
24844
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
24845
24845
|
const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
24846
24846
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -24863,7 +24863,7 @@ function InspectorPaneHeader({
|
|
|
24863
24863
|
type: "button",
|
|
24864
24864
|
title: t(labelKey),
|
|
24865
24865
|
style: touchBtnStyle,
|
|
24866
|
-
className:
|
|
24866
|
+
className: chunkPOPGQIVR_js.cn(
|
|
24867
24867
|
"flex items-center justify-center gap-1 px-2 py-1 rounded text-[11px] transition-colors",
|
|
24868
24868
|
activeTab === key ? "bg-primary text-white" : "text-muted-foreground hover:text-foreground hover:bg-accent"
|
|
24869
24869
|
),
|
|
@@ -24977,7 +24977,7 @@ function CustomPropertiesBlock({
|
|
|
24977
24977
|
"button",
|
|
24978
24978
|
{
|
|
24979
24979
|
type: "button",
|
|
24980
|
-
className:
|
|
24980
|
+
className: chunkPOPGQIVR_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
|
|
24981
24981
|
onClick: () => onUpdate(customProperties.filter((_, i) => i !== index)),
|
|
24982
24982
|
children: "\xD7"
|
|
24983
24983
|
}
|
|
@@ -25305,7 +25305,7 @@ function PresentationSettingsCard({
|
|
|
25305
25305
|
min: 1,
|
|
25306
25306
|
max: 16,
|
|
25307
25307
|
disabled: !canEdit,
|
|
25308
|
-
className:
|
|
25308
|
+
className: chunkPOPGQIVR_js.cn(INPUT2, "w-20"),
|
|
25309
25309
|
value: pptx.printPropertiesSlidesPerPage(presentationProperties.printProperties),
|
|
25310
25310
|
onChange: (e) => onUpdate({
|
|
25311
25311
|
printProperties: pptx.withSlidesPerPage(
|
|
@@ -25393,14 +25393,14 @@ function SlideThemeOverridePanel({
|
|
|
25393
25393
|
const translate = React98.useCallback((key) => t(key), [t]);
|
|
25394
25394
|
const override = activeSlide?.clrMapOverride;
|
|
25395
25395
|
const isOverrideActive = override !== void 0;
|
|
25396
|
-
const targetSlotOptions = React98.useMemo(() => [...
|
|
25396
|
+
const targetSlotOptions = React98.useMemo(() => [...chunkPOPGQIVR_js.dist_exports.THEME_COLOR_SCHEME_KEYS], []);
|
|
25397
25397
|
const commitOverride = React98.useCallback(
|
|
25398
25398
|
(nextOverride) => {
|
|
25399
25399
|
if (!activeSlide || !theme?.colorScheme) {
|
|
25400
25400
|
onUpdateSlide({ clrMapOverride: nextOverride });
|
|
25401
25401
|
return;
|
|
25402
25402
|
}
|
|
25403
|
-
const nextSlide = (0,
|
|
25403
|
+
const nextSlide = (0, chunkPOPGQIVR_js.dist_exports.applyThemeOverrideToSlide)(activeSlide, theme.colorScheme, nextOverride);
|
|
25404
25404
|
onUpdateSlide({
|
|
25405
25405
|
clrMapOverride: nextSlide.clrMapOverride,
|
|
25406
25406
|
backgroundColor: nextSlide.backgroundColor,
|
|
@@ -25413,8 +25413,8 @@ function SlideThemeOverridePanel({
|
|
|
25413
25413
|
(enabled) => {
|
|
25414
25414
|
if (enabled) {
|
|
25415
25415
|
const defaultMap = {};
|
|
25416
|
-
for (const key of
|
|
25417
|
-
defaultMap[key] =
|
|
25416
|
+
for (const key of chunkPOPGQIVR_js.dist_exports.COLOR_MAP_ALIAS_KEYS) {
|
|
25417
|
+
defaultMap[key] = chunkPOPGQIVR_js.dist_exports.DEFAULT_COLOR_MAP[key];
|
|
25418
25418
|
}
|
|
25419
25419
|
commitOverride(defaultMap);
|
|
25420
25420
|
} else {
|
|
@@ -25427,9 +25427,9 @@ function SlideThemeOverridePanel({
|
|
|
25427
25427
|
(alias, targetSlot) => {
|
|
25428
25428
|
const current = override ?? {};
|
|
25429
25429
|
const next = { ...current, [alias]: targetSlot };
|
|
25430
|
-
for (const key of
|
|
25430
|
+
for (const key of chunkPOPGQIVR_js.dist_exports.COLOR_MAP_ALIAS_KEYS) {
|
|
25431
25431
|
if (!next[key]) {
|
|
25432
|
-
next[key] =
|
|
25432
|
+
next[key] = chunkPOPGQIVR_js.dist_exports.DEFAULT_COLOR_MAP[key];
|
|
25433
25433
|
}
|
|
25434
25434
|
}
|
|
25435
25435
|
commitOverride(next);
|
|
@@ -25461,8 +25461,8 @@ function SlideThemeOverridePanel({
|
|
|
25461
25461
|
),
|
|
25462
25462
|
t("pptx.themeOverride.enableOverride")
|
|
25463
25463
|
] }),
|
|
25464
|
-
isOverrideActive && override && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-1.5", children:
|
|
25465
|
-
const currentTarget = override[alias] ??
|
|
25464
|
+
isOverrideActive && override && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-1.5", children: chunkPOPGQIVR_js.dist_exports.COLOR_MAP_ALIAS_KEYS.map((alias) => {
|
|
25465
|
+
const currentTarget = override[alias] ?? chunkPOPGQIVR_js.dist_exports.DEFAULT_COLOR_MAP[alias];
|
|
25466
25466
|
const resolvedHex = resolveSlotColor(currentTarget);
|
|
25467
25467
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
25468
25468
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-24 truncate text-muted-foreground", title: ALIAS_LABELS[alias], children: ALIAS_LABELS[alias] }),
|
|
@@ -25541,7 +25541,7 @@ function TransitionPreview({
|
|
|
25541
25541
|
const { t } = reactI18next.useTranslation();
|
|
25542
25542
|
const durationMs = transition.durationMs ?? 500;
|
|
25543
25543
|
const animations = React98.useMemo(
|
|
25544
|
-
() =>
|
|
25544
|
+
() => chunkTUYNK3GE_js.getSlideTransitionAnimations(
|
|
25545
25545
|
transition.type,
|
|
25546
25546
|
durationMs,
|
|
25547
25547
|
transition.direction,
|
|
@@ -25610,7 +25610,7 @@ function TransitionPreview({
|
|
|
25610
25610
|
]
|
|
25611
25611
|
}
|
|
25612
25612
|
),
|
|
25613
|
-
/* @__PURE__ */ jsxRuntime.jsx("style", { children:
|
|
25613
|
+
/* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkTUYNK3GE_js.SLIDE_TRANSITION_KEYFRAMES })
|
|
25614
25614
|
] });
|
|
25615
25615
|
}
|
|
25616
25616
|
var DEFAULT_DURATION_MS = 320;
|
|
@@ -25627,13 +25627,13 @@ function SlideTransitionSection({
|
|
|
25627
25627
|
return null;
|
|
25628
25628
|
}
|
|
25629
25629
|
const transitionType = activeSlide.transition?.type ?? "none";
|
|
25630
|
-
const validDirections =
|
|
25630
|
+
const validDirections = chunkPOPGQIVR_js.dist_exports.TRANSITION_VALID_DIRECTIONS[transitionType];
|
|
25631
25631
|
const hasDirections = validDirections !== void 0 && validDirections.length > 0;
|
|
25632
25632
|
const usesOrientation = pptx.TRANSITION_ORIENTATION_TYPES.has(transitionType);
|
|
25633
25633
|
const isWheel = transitionType === "wheel";
|
|
25634
25634
|
const isMorph = transitionType === "morph";
|
|
25635
|
-
const patternOptions =
|
|
25636
|
-
const hasThruBlk =
|
|
25635
|
+
const patternOptions = chunkPOPGQIVR_js.dist_exports.TRANSITION_PATTERN_OPTIONS[transitionType];
|
|
25636
|
+
const hasThruBlk = chunkPOPGQIVR_js.dist_exports.TRANSITION_THRUBLK_TYPES.has(transitionType);
|
|
25637
25637
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
25638
25638
|
"div",
|
|
25639
25639
|
{
|
|
@@ -25653,7 +25653,7 @@ function SlideTransitionSection({
|
|
|
25653
25653
|
type: e.target.value
|
|
25654
25654
|
}),
|
|
25655
25655
|
className: "bg-muted border border-border rounded px-2 py-1 max-md:min-h-[44px]!",
|
|
25656
|
-
children:
|
|
25656
|
+
children: chunkPOPGQIVR_js.SLIDE_TRANSITION_OPTIONS.map((option) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: option.value, children: t(option.i18nKey) }, option.value))
|
|
25657
25657
|
}
|
|
25658
25658
|
)
|
|
25659
25659
|
] }),
|
|
@@ -25869,7 +25869,7 @@ function TagsSection({
|
|
|
25869
25869
|
"button",
|
|
25870
25870
|
{
|
|
25871
25871
|
type: "button",
|
|
25872
|
-
className:
|
|
25872
|
+
className: chunkPOPGQIVR_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
|
|
25873
25873
|
title: t("pptx.tags.deleteTag"),
|
|
25874
25874
|
onClick: () => deleteTag(tag.colIdx, tag.tagIdx),
|
|
25875
25875
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuTrash2, { className: "w-3 h-3" })
|
|
@@ -25998,7 +25998,7 @@ function PresentationPropertiesPanel({
|
|
|
25998
25998
|
canEdit
|
|
25999
25999
|
}
|
|
26000
26000
|
),
|
|
26001
|
-
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
26001
|
+
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkPOPGQIVR_js.cn(CARD2, "space-y-1"), children: [
|
|
26002
26002
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: "Slide" }),
|
|
26003
26003
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[11px] text-muted-foreground", children: [
|
|
26004
26004
|
activeSlide.elements?.length ?? 0,
|
|
@@ -26019,14 +26019,14 @@ function SlideBackgroundPanel({
|
|
|
26019
26019
|
const { t } = reactI18next.useTranslation();
|
|
26020
26020
|
const bgImageInputRef = React98.useRef(null);
|
|
26021
26021
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
26022
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
26022
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkPOPGQIVR_js.cn(CARD2, "space-y-2"), children: [
|
|
26023
26023
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.viewer.background") }),
|
|
26024
26024
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
26025
26025
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-10 shrink-0", children: t("pptx.slideBackground.colour") }),
|
|
26026
26026
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26027
26027
|
DebouncedColorInput,
|
|
26028
26028
|
{
|
|
26029
|
-
value:
|
|
26029
|
+
value: chunkPOPGQIVR_js.normalizeHexColor(activeSlide.backgroundColor, "#ffffff"),
|
|
26030
26030
|
disabled: !canEdit,
|
|
26031
26031
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
26032
26032
|
onCommit: (hex) => onUpdateSlide({ backgroundColor: hex })
|
|
@@ -26065,7 +26065,7 @@ function SlideBackgroundPanel({
|
|
|
26065
26065
|
"button",
|
|
26066
26066
|
{
|
|
26067
26067
|
type: "button",
|
|
26068
|
-
className:
|
|
26068
|
+
className: chunkPOPGQIVR_js.cn(BTN2, "flex-1 text-center"),
|
|
26069
26069
|
disabled: !canEdit,
|
|
26070
26070
|
onClick: () => bgImageInputRef.current?.click(),
|
|
26071
26071
|
children: activeSlide.backgroundImage ? t("pptx.slideBackground.replaceImage") : t("pptx.slideBackground.chooseImage")
|
|
@@ -26098,7 +26098,7 @@ function SlideBackgroundPanel({
|
|
|
26098
26098
|
"button",
|
|
26099
26099
|
{
|
|
26100
26100
|
type: "button",
|
|
26101
|
-
className:
|
|
26101
|
+
className: chunkPOPGQIVR_js.cn(BTN2, "w-full text-center text-red-400 hover:text-red-300"),
|
|
26102
26102
|
disabled: !pptx.slideBackgroundClearState(activeSlide, canEdit).enabled,
|
|
26103
26103
|
onClick: () => onUpdateSlide(pptx.slideBackgroundClearPatch()),
|
|
26104
26104
|
children: t("pptx.slideBackground.clearBackground")
|
|
@@ -26142,14 +26142,14 @@ function TemplateBackgroundCard({
|
|
|
26142
26142
|
t("pptx.master.layout"),
|
|
26143
26143
|
t("pptx.master.master")
|
|
26144
26144
|
);
|
|
26145
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
26145
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkPOPGQIVR_js.cn(CARD2, "space-y-2"), children: [
|
|
26146
26146
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.slideBackground.templateBackgroundsHeading") }),
|
|
26147
26147
|
rows.layout && /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
26148
26148
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-14 shrink-0 truncate", title: rows.layout.title, children: t("pptx.master.layout") }),
|
|
26149
26149
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26150
26150
|
DebouncedColorInput,
|
|
26151
26151
|
{
|
|
26152
|
-
value:
|
|
26152
|
+
value: chunkPOPGQIVR_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.layout.path), "#ffffff"),
|
|
26153
26153
|
disabled: !canEdit,
|
|
26154
26154
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
26155
26155
|
onCommit: (hex) => onSetTemplateBackground(rows.layout.path, hex)
|
|
@@ -26162,7 +26162,7 @@ function TemplateBackgroundCard({
|
|
|
26162
26162
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26163
26163
|
DebouncedColorInput,
|
|
26164
26164
|
{
|
|
26165
|
-
value:
|
|
26165
|
+
value: chunkPOPGQIVR_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.master.path), "#ffffff"),
|
|
26166
26166
|
disabled: !canEdit,
|
|
26167
26167
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
26168
26168
|
onCommit: (hex) => onSetTemplateBackground(rows.master.path, hex)
|
|
@@ -26273,7 +26273,7 @@ function InspectorPane(props) {
|
|
|
26273
26273
|
} = props;
|
|
26274
26274
|
const hasSelection = selectedElement !== null;
|
|
26275
26275
|
const { t } = reactI18next.useTranslation();
|
|
26276
|
-
const { dragY, handlers: dragHandlers } =
|
|
26276
|
+
const { dragY, handlers: dragHandlers } = chunkTUYNK3GE_js.useSheetDismissDrag(onClose);
|
|
26277
26277
|
const {
|
|
26278
26278
|
animationPanelHeight,
|
|
26279
26279
|
effectiveThemeOptions,
|
|
@@ -26295,7 +26295,7 @@ function InspectorPane(props) {
|
|
|
26295
26295
|
"div",
|
|
26296
26296
|
{
|
|
26297
26297
|
"data-pptx-chrome": "inspector",
|
|
26298
|
-
className:
|
|
26298
|
+
className: chunkPOPGQIVR_js.cn(
|
|
26299
26299
|
// Shared styles
|
|
26300
26300
|
"bg-background flex flex-col text-xs text-foreground shadow-xl",
|
|
26301
26301
|
// Mobile: absolute bottom sheet overlay sized via dvh so it
|
|
@@ -26686,7 +26686,7 @@ function PresentationTouchControls({
|
|
|
26686
26686
|
hideNavigation = false
|
|
26687
26687
|
}) {
|
|
26688
26688
|
const { t } = reactI18next.useTranslation();
|
|
26689
|
-
const { isTouchDevice } =
|
|
26689
|
+
const { isTouchDevice } = chunkTUYNK3GE_js.useIsMobile();
|
|
26690
26690
|
if (!isTouchDevice) {
|
|
26691
26691
|
return null;
|
|
26692
26692
|
}
|
|
@@ -26991,13 +26991,13 @@ function PrintPreview({
|
|
|
26991
26991
|
}) {
|
|
26992
26992
|
const { t } = reactI18next.useTranslation();
|
|
26993
26993
|
const pages = React98.useMemo(
|
|
26994
|
-
() =>
|
|
26994
|
+
() => chunkPOPGQIVR_js.computeHandoutLayout(slideIndices, slidesPerPage, orientation),
|
|
26995
26995
|
[slideIndices, slidesPerPage, orientation]
|
|
26996
26996
|
);
|
|
26997
|
-
const printable = React98.useMemo(() =>
|
|
26997
|
+
const printable = React98.useMemo(() => chunkPOPGQIVR_js.getPrintableArea(orientation), [orientation]);
|
|
26998
26998
|
const visiblePages = pages.slice(0, maxPages);
|
|
26999
26999
|
const isThreePerPage = slidesPerPage === 3;
|
|
27000
|
-
const noteLineCount =
|
|
27000
|
+
const noteLineCount = chunkPOPGQIVR_js.generateNoteLineCount();
|
|
27001
27001
|
const scaledW = printable.width * PREVIEW_SCALE3;
|
|
27002
27002
|
const scaledH = printable.height * PREVIEW_SCALE3;
|
|
27003
27003
|
const noteAreaFraction = 0.5;
|
|
@@ -27332,11 +27332,11 @@ function PrintDialog({
|
|
|
27332
27332
|
defaultFrameSlides
|
|
27333
27333
|
}) {
|
|
27334
27334
|
const { t } = reactI18next.useTranslation();
|
|
27335
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
27336
|
-
const { viewportWidth } =
|
|
27335
|
+
const { panelStyle, handlers: dragHandlers } = chunkTUYNK3GE_js.useModalDismissDrag(onClose);
|
|
27336
|
+
const { viewportWidth } = chunkTUYNK3GE_js.useIsMobile();
|
|
27337
27337
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
27338
27338
|
const closeBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
27339
|
-
const printOptionDefaults = pptx.resolveDefaultPrintSettings(
|
|
27339
|
+
const printOptionDefaults = pptx.resolveDefaultPrintSettings(chunkTUYNK3GE_js.useViewerOptionsContext());
|
|
27340
27340
|
const [printWhat, setPrintWhat] = React98.useState(printOptionDefaults?.printWhat ?? "slides");
|
|
27341
27341
|
const [orientation, setOrientation] = React98.useState("landscape");
|
|
27342
27342
|
const [colorMode, setColorMode] = React98.useState(
|
|
@@ -27839,14 +27839,14 @@ function BroadcastDialog({
|
|
|
27839
27839
|
defaultServerUrl
|
|
27840
27840
|
}) {
|
|
27841
27841
|
const { t } = reactI18next.useTranslation();
|
|
27842
|
-
const collab =
|
|
27842
|
+
const collab = chunkTUYNK3GE_js.useCollaboration();
|
|
27843
27843
|
const isBroadcasting = collab !== null && collab.status !== "disconnected" && collab.status !== "error" && collab.config.role === "owner";
|
|
27844
27844
|
const [roomId, setRoomId] = React98.useState("");
|
|
27845
27845
|
const [userName, setUserName] = React98.useState("");
|
|
27846
27846
|
const [serverUrl, setServerUrl] = React98.useState("");
|
|
27847
27847
|
const [copied, setCopied] = React98.useState(false);
|
|
27848
27848
|
const dialogRef = React98.useRef(null);
|
|
27849
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
27849
|
+
const { panelStyle, handlers: dragHandlers } = chunkTUYNK3GE_js.useModalDismissDrag(onClose);
|
|
27850
27850
|
useModalFocus(open, dialogRef, onClose);
|
|
27851
27851
|
React98.useEffect(() => {
|
|
27852
27852
|
if (open && !isBroadcasting) {
|
|
@@ -28149,7 +28149,7 @@ function ActiveSessionView({
|
|
|
28149
28149
|
onCopyRoomId,
|
|
28150
28150
|
onStopCollaboration
|
|
28151
28151
|
}) {
|
|
28152
|
-
const { t } = reactI18next.useTranslation(), viewerOptions =
|
|
28152
|
+
const { t } = reactI18next.useTranslation(), viewerOptions = chunkTUYNK3GE_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({
|
|
28153
28153
|
localUserName: activeCollaboration?.userName ?? collab.config.userName,
|
|
28154
28154
|
localUserInitials: viewerOptions.general.userInitials,
|
|
28155
28155
|
localUserColor: collab.config.userColor,
|
|
@@ -28248,7 +28248,7 @@ function StartSessionForm({
|
|
|
28248
28248
|
onRetry
|
|
28249
28249
|
}) {
|
|
28250
28250
|
const { t } = reactI18next.useTranslation();
|
|
28251
|
-
const { viewportWidth } =
|
|
28251
|
+
const { viewportWidth } = chunkTUYNK3GE_js.useIsMobile();
|
|
28252
28252
|
const tabBtnStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
|
|
28253
28253
|
const inputReadOnlyClass = preconfigured ? " opacity-70 cursor-not-allowed" : "";
|
|
28254
28254
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
@@ -28382,7 +28382,7 @@ function ShareDialog({
|
|
|
28382
28382
|
defaultUserName,
|
|
28383
28383
|
defaultServerUrl
|
|
28384
28384
|
}) {
|
|
28385
|
-
const collab =
|
|
28385
|
+
const collab = chunkTUYNK3GE_js.useCollaboration();
|
|
28386
28386
|
const isActive = collab !== null && collab.status !== "disconnected" && collab.status !== "error";
|
|
28387
28387
|
const { t } = reactI18next.useTranslation();
|
|
28388
28388
|
const [roomId, setRoomId] = React98.useState(defaultRoomId ?? "");
|
|
@@ -28392,9 +28392,9 @@ function ShareDialog({
|
|
|
28392
28392
|
const [invitation, setInvitation] = React98.useState("");
|
|
28393
28393
|
const [copied, setCopied] = React98.useState(false);
|
|
28394
28394
|
const dialogRef = React98.useRef(null);
|
|
28395
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
28395
|
+
const { panelStyle, handlers: dragHandlers } = chunkTUYNK3GE_js.useModalDismissDrag(onClose);
|
|
28396
28396
|
useModalFocus(open, dialogRef, onClose);
|
|
28397
|
-
const { viewportWidth, viewportHeight } =
|
|
28397
|
+
const { viewportWidth, viewportHeight } = chunkTUYNK3GE_js.useIsMobile();
|
|
28398
28398
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
28399
28399
|
const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
28400
28400
|
const stickyFooterClass = pptx.shouldStickyActionRow(viewportWidth, viewportHeight) ? "sticky bottom-0 bg-popover" : "";
|
|
@@ -28677,12 +28677,12 @@ function HyperlinkEditDialog({
|
|
|
28677
28677
|
onCancel
|
|
28678
28678
|
}) {
|
|
28679
28679
|
const { t } = reactI18next.useTranslation();
|
|
28680
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
28680
|
+
const { panelStyle, handlers: dragHandlers } = chunkTUYNK3GE_js.useModalDismissDrag(onCancel);
|
|
28681
28681
|
const inputRef = React98.useRef(null);
|
|
28682
|
-
const detectedType =
|
|
28683
|
-
const emailParts =
|
|
28684
|
-
const detectedSlide =
|
|
28685
|
-
const detectedVerb = initialAction ?
|
|
28682
|
+
const detectedType = chunkTUYNK3GE_js.detectTargetType(initialUrl, initialAction);
|
|
28683
|
+
const emailParts = chunkTUYNK3GE_js.parseEmailUrl(initialUrl || "");
|
|
28684
|
+
const detectedSlide = chunkTUYNK3GE_js.parseSlideFromUrl(initialUrl, initialAction);
|
|
28685
|
+
const detectedVerb = initialAction ? chunkTUYNK3GE_js.ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
|
|
28686
28686
|
const [targetType, setTargetType] = React98.useState(detectedType);
|
|
28687
28687
|
const [url, setUrl] = React98.useState(
|
|
28688
28688
|
detectedType === "email" || detectedType === "slide" || detectedType === "action" ? "" : initialUrl || ""
|
|
@@ -28713,7 +28713,7 @@ function HyperlinkEditDialog({
|
|
|
28713
28713
|
actionVerb
|
|
28714
28714
|
});
|
|
28715
28715
|
};
|
|
28716
|
-
const tabCls = (active) =>
|
|
28716
|
+
const tabCls = (active) => chunkPOPGQIVR_js.cn(
|
|
28717
28717
|
"px-3 py-1.5 text-xs rounded-t border-b-2 transition-colors",
|
|
28718
28718
|
active ? "border-primary text-primary font-medium" : "border-transparent text-muted-foreground hover:text-foreground hover:border-border"
|
|
28719
28719
|
);
|
|
@@ -28950,7 +28950,7 @@ function ViewerBottomPanels({
|
|
|
28950
28950
|
notesStyle,
|
|
28951
28951
|
onNotesHeightChange
|
|
28952
28952
|
}) {
|
|
28953
|
-
const { isHidden } =
|
|
28953
|
+
const { isHidden } = chunkTUYNK3GE_js.useToolbarVisibility(hiddenActions);
|
|
28954
28954
|
const customization = useViewerCustomizationContext();
|
|
28955
28955
|
const showNotes = pptx.isPanelVisible(customization, "notes");
|
|
28956
28956
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
@@ -29296,7 +29296,7 @@ function ViewerToolbarSection(props) {
|
|
|
29296
29296
|
[activeSlide, propertyHandlers]
|
|
29297
29297
|
);
|
|
29298
29298
|
const scopedLayoutOptions = React98__default.default.useMemo(
|
|
29299
|
-
() =>
|
|
29299
|
+
() => chunkTUYNK3GE_js.scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
|
|
29300
29300
|
[s.layoutOptions, activeSlide]
|
|
29301
29301
|
);
|
|
29302
29302
|
const handleResetSlide = React98.useCallback(() => {
|
|
@@ -29700,7 +29700,7 @@ function ViewerToolbarSection(props) {
|
|
|
29700
29700
|
isCommentsPanelOpen: s.isInspectorPaneOpen,
|
|
29701
29701
|
slideCommentCount: activeSlide?.comments?.length ?? 0,
|
|
29702
29702
|
formatPainterActive: s.formatPainterActive,
|
|
29703
|
-
canActivateFormatPainter:
|
|
29703
|
+
canActivateFormatPainter: chunkPOPGQIVR_js.hasCopyableFormat(selectedElement),
|
|
29704
29704
|
onToggleFormatPainter: onToggleFormatPainterProp ?? (() => s.setFormatPainterActive((p) => !p)),
|
|
29705
29705
|
isSelectionPaneOpen: s.isSelectionPaneOpen,
|
|
29706
29706
|
onToggleSelectionPane: () => s.setIsSelectionPaneOpen((p) => !p),
|
|
@@ -29787,7 +29787,7 @@ function EquationEditorDialog({
|
|
|
29787
29787
|
existingOmml
|
|
29788
29788
|
}) {
|
|
29789
29789
|
const { t } = reactI18next.useTranslation();
|
|
29790
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
29790
|
+
const { panelStyle, handlers: dragHandlers } = chunkTUYNK3GE_js.useModalDismissDrag(onClose);
|
|
29791
29791
|
const initialLatex = React98.useMemo(() => {
|
|
29792
29792
|
if (!existingOmml) {
|
|
29793
29793
|
return "";
|
|
@@ -29909,7 +29909,7 @@ function EquationEditorDialog({
|
|
|
29909
29909
|
{
|
|
29910
29910
|
type: "button",
|
|
29911
29911
|
onClick: () => handleTemplateClick(tmpl.latex),
|
|
29912
|
-
className:
|
|
29912
|
+
className: chunkPOPGQIVR_js.cn(
|
|
29913
29913
|
"flex flex-col items-center gap-1 p-2 rounded-lg border transition-colors",
|
|
29914
29914
|
latex === tmpl.latex ? "border-primary bg-primary/10" : "border-border bg-muted/40 hover:bg-accent/60 hover:border-border"
|
|
29915
29915
|
),
|
|
@@ -29975,7 +29975,7 @@ function getPreviewForLayout(layout) {
|
|
|
29975
29975
|
transform: `scale(${scale})`,
|
|
29976
29976
|
transformOrigin: "top left"
|
|
29977
29977
|
},
|
|
29978
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
29978
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(chunkTUYNK3GE_js.SmartArtRenderer, { element: pptx.buildSmartArtPreviewElement(layout) })
|
|
29979
29979
|
}
|
|
29980
29980
|
)
|
|
29981
29981
|
}
|
|
@@ -29987,7 +29987,7 @@ function InsertSmartArtDialog({
|
|
|
29987
29987
|
onInsert
|
|
29988
29988
|
}) {
|
|
29989
29989
|
const { t } = reactI18next.useTranslation();
|
|
29990
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
29990
|
+
const { panelStyle, handlers: dragHandlers } = chunkTUYNK3GE_js.useModalDismissDrag(onClose);
|
|
29991
29991
|
const [activeCategory, setActiveCategory] = React98.useState("list");
|
|
29992
29992
|
const [selectedLayout, setSelectedLayout] = React98.useState(null);
|
|
29993
29993
|
const dialogRef = React98.useRef(null);
|
|
@@ -30068,7 +30068,7 @@ function InsertSmartArtDialog({
|
|
|
30068
30068
|
setActiveCategory(cat.id);
|
|
30069
30069
|
setSelectedLayout(null);
|
|
30070
30070
|
},
|
|
30071
|
-
className:
|
|
30071
|
+
className: chunkPOPGQIVR_js.cn(
|
|
30072
30072
|
"w-full text-left px-3 py-1.5 text-xs transition-colors",
|
|
30073
30073
|
activeCategory === cat.id ? "bg-primary text-white" : "text-foreground hover:bg-muted"
|
|
30074
30074
|
),
|
|
@@ -30096,7 +30096,7 @@ function InsertSmartArtDialog({
|
|
|
30096
30096
|
onInsert(preset.layout, preset.defaultItems);
|
|
30097
30097
|
onClose();
|
|
30098
30098
|
},
|
|
30099
|
-
className:
|
|
30099
|
+
className: chunkPOPGQIVR_js.cn(
|
|
30100
30100
|
"flex flex-col items-center gap-1 p-2 rounded border transition-colors",
|
|
30101
30101
|
selectedLayout === preset.layout ? "border-primary bg-primary/20" : "border-border hover:border-border hover:bg-muted/50"
|
|
30102
30102
|
),
|
|
@@ -30593,11 +30593,11 @@ function PresentationStage({
|
|
|
30593
30593
|
})
|
|
30594
30594
|
},
|
|
30595
30595
|
children: [
|
|
30596
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30596
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkTUYNK3GE_js.SlideBackgroundImageLayer, { slide: activeSlide }),
|
|
30597
30597
|
/* @__PURE__ */ jsxRuntime.jsx("style", { children: pptx.PRESENTATION_HIT_TEST_CSS }),
|
|
30598
30598
|
presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
|
|
30599
30599
|
templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
30600
|
-
|
|
30600
|
+
chunkTUYNK3GE_js.ElementRenderer,
|
|
30601
30601
|
{
|
|
30602
30602
|
element,
|
|
30603
30603
|
activeSlide,
|
|
@@ -30634,7 +30634,7 @@ function PresentationStage({
|
|
|
30634
30634
|
`tpl-${element.id}`
|
|
30635
30635
|
)),
|
|
30636
30636
|
activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
30637
|
-
|
|
30637
|
+
chunkTUYNK3GE_js.ElementRenderer,
|
|
30638
30638
|
{
|
|
30639
30639
|
element,
|
|
30640
30640
|
activeSlide,
|
|
@@ -30755,8 +30755,8 @@ function ViewerCanvasArea(props) {
|
|
|
30755
30755
|
aiCanvasActive = false
|
|
30756
30756
|
} = props;
|
|
30757
30757
|
const { t } = reactI18next.useTranslation();
|
|
30758
|
-
const { isHidden } =
|
|
30759
|
-
const viewerOptions =
|
|
30758
|
+
const { isHidden } = chunkTUYNK3GE_js.useToolbarVisibility(hiddenActions);
|
|
30759
|
+
const viewerOptions = chunkTUYNK3GE_js.useViewerOptionsContext();
|
|
30760
30760
|
const outlineAuthoring = useOutlineAuthoring({
|
|
30761
30761
|
state: s,
|
|
30762
30762
|
updateElement: canvasHandlers.handleUpdateSmartArtElement,
|
|
@@ -30785,7 +30785,7 @@ function ViewerCanvasArea(props) {
|
|
|
30785
30785
|
${url}`)) {
|
|
30786
30786
|
return;
|
|
30787
30787
|
}
|
|
30788
|
-
|
|
30788
|
+
chunkPOPGQIVR_js.safeOpenUrl(url);
|
|
30789
30789
|
},
|
|
30790
30790
|
[viewerOptions, t]
|
|
30791
30791
|
);
|
|
@@ -30806,9 +30806,9 @@ ${url}`)) {
|
|
|
30806
30806
|
);
|
|
30807
30807
|
const handleHyperlinkClick = React98.useCallback(
|
|
30808
30808
|
(url) => {
|
|
30809
|
-
if (
|
|
30809
|
+
if (chunkPOPGQIVR_js.isPpactionUrl(url)) {
|
|
30810
30810
|
if (mode === "present") {
|
|
30811
|
-
const parsed =
|
|
30811
|
+
const parsed = chunkPOPGQIVR_js.parsePpactionUrl(url);
|
|
30812
30812
|
if (parsed) {
|
|
30813
30813
|
const action = {
|
|
30814
30814
|
action: parsed.action,
|
|
@@ -30893,7 +30893,7 @@ ${url}`)) {
|
|
|
30893
30893
|
s.setActiveSlideIndex((i) => Math.max(0, i - 1));
|
|
30894
30894
|
}
|
|
30895
30895
|
}, [mode, presentation, s]);
|
|
30896
|
-
const swipe =
|
|
30896
|
+
const swipe = chunkTUYNK3GE_js.useSwipeNavigation({
|
|
30897
30897
|
enabled: swipeEnabled,
|
|
30898
30898
|
onNext: handleSwipeNext,
|
|
30899
30899
|
onPrev: handleSwipePrev
|
|
@@ -30967,7 +30967,7 @@ ${url}`)) {
|
|
|
30967
30967
|
),
|
|
30968
30968
|
children: (stageScale) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
30969
30969
|
presentation.transitionOverlay && slides[presentation.transitionOverlay.outgoingSlideIndex] && /* @__PURE__ */ jsxRuntime.jsx(
|
|
30970
|
-
|
|
30970
|
+
chunkTUYNK3GE_js.PresentationTransitionOverlay,
|
|
30971
30971
|
{
|
|
30972
30972
|
outgoingSlide: slides[presentation.transitionOverlay.outgoingSlideIndex],
|
|
30973
30973
|
templateElements,
|
|
@@ -31078,14 +31078,14 @@ ${url}`)) {
|
|
|
31078
31078
|
outlineAuthoring,
|
|
31079
31079
|
collaborationOverlay: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31080
31080
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
31081
|
-
|
|
31081
|
+
chunkTUYNK3GE_js.RemoteSelectionOverlay,
|
|
31082
31082
|
{
|
|
31083
31083
|
elements: effectiveSlide?.elements ?? [],
|
|
31084
31084
|
activeSlideIndex
|
|
31085
31085
|
}
|
|
31086
31086
|
),
|
|
31087
31087
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
31088
|
-
|
|
31088
|
+
chunkTUYNK3GE_js.CollaborationCursorOverlay,
|
|
31089
31089
|
{
|
|
31090
31090
|
activeSlideIndex,
|
|
31091
31091
|
canvasWidth: canvasSize.width,
|
|
@@ -31225,7 +31225,7 @@ function useTableStyleMapHandlers(input) {
|
|
|
31225
31225
|
var AiChatPanel = React98.lazy(async () => {
|
|
31226
31226
|
const [{ useChat }, { default: Panel }] = await Promise.all([
|
|
31227
31227
|
import('@ai-sdk/react'),
|
|
31228
|
-
import('./AiChatPanel-
|
|
31228
|
+
import('./AiChatPanel-JKF3V3IM.js')
|
|
31229
31229
|
]);
|
|
31230
31230
|
function BoundAiChatPanel(props) {
|
|
31231
31231
|
return /* @__PURE__ */ jsxRuntime.jsx(Panel, { ...props, useChat });
|
|
@@ -31386,7 +31386,7 @@ function MobileDismissSheet({
|
|
|
31386
31386
|
children
|
|
31387
31387
|
}) {
|
|
31388
31388
|
const { t } = reactI18next.useTranslation();
|
|
31389
|
-
const { dragY, handlers } =
|
|
31389
|
+
const { dragY, handlers } = chunkTUYNK3GE_js.useSheetDismissDrag(onClose);
|
|
31390
31390
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31391
31391
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
31392
31392
|
"button",
|
|
@@ -31655,7 +31655,7 @@ function ThemeThumbnail({
|
|
|
31655
31655
|
{
|
|
31656
31656
|
type: "button",
|
|
31657
31657
|
onClick,
|
|
31658
|
-
className:
|
|
31658
|
+
className: chunkPOPGQIVR_js.cn(
|
|
31659
31659
|
"group relative flex flex-col rounded-lg border-2 transition-all overflow-hidden",
|
|
31660
31660
|
selected ? "border-primary shadow-lg scale-[1.02]" : "border-border hover:border-primary/50 hover:shadow-md"
|
|
31661
31661
|
),
|
|
@@ -31841,7 +31841,7 @@ function ViewerSidePanels(props) {
|
|
|
31841
31841
|
const customization = useViewerCustomizationContext();
|
|
31842
31842
|
const inspectorOpen = (mode === "edit" || mode === "master") && s.isInspectorPaneOpen && pptx.isPanelVisible(customization, "inspector");
|
|
31843
31843
|
const currentBuiltInTheme = BUILT_IN_THEMES.find(
|
|
31844
|
-
(candidate) => (0,
|
|
31844
|
+
(candidate) => (0, chunkPOPGQIVR_js.dist_exports.themeColorSchemesEqual)(s.theme?.colorScheme, candidate.colorScheme)
|
|
31845
31845
|
) ?? null;
|
|
31846
31846
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31847
31847
|
inspectorOpen && onResizeRight && /* @__PURE__ */ jsxRuntime.jsx(ResizeHandle, { direction: "horizontal", onResize: onResizeRight }),
|
|
@@ -32127,7 +32127,7 @@ function ViewerMainContent(props) {
|
|
|
32127
32127
|
);
|
|
32128
32128
|
const layoutGalleryAnchorRef = React98.useRef(null);
|
|
32129
32129
|
const layoutGalleryPreviews = useLayoutPreviews(loadLayoutPreviews, layoutGalleryAnchor !== null);
|
|
32130
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
32130
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkTUYNK3GE_js.ChartPartSelectionProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "body", className: "relative z-10 flex flex-1 min-h-0", children: [
|
|
32131
32131
|
showSlidesPane && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
32132
32132
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
32133
32133
|
SlidesPaneSidebar,
|
|
@@ -32617,7 +32617,7 @@ function MobileChromeOverlay(props) {
|
|
|
32617
32617
|
slideSectionGroups,
|
|
32618
32618
|
canEdit,
|
|
32619
32619
|
commentCount
|
|
32620
|
-
} = props, { keyboardInset, isKeyboardOpen } =
|
|
32620
|
+
} = props, { keyboardInset, isKeyboardOpen } = chunkTUYNK3GE_js.useKeyboardInsets(), activeSheet = s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null, closeAllSheets = () => {
|
|
32621
32621
|
s.setIsSlidesPaneOpen(false);
|
|
32622
32622
|
s.setIsInspectorPaneOpen(false);
|
|
32623
32623
|
s.setIsSlideNotesCollapsed(true);
|
|
@@ -32823,7 +32823,7 @@ function AddinTable({
|
|
|
32823
32823
|
"tr",
|
|
32824
32824
|
{
|
|
32825
32825
|
onClick: () => onSelect(row.id),
|
|
32826
|
-
className:
|
|
32826
|
+
className: chunkPOPGQIVR_js.cn(
|
|
32827
32827
|
"cursor-pointer border-b border-border/40 transition-colors",
|
|
32828
32828
|
selectedId === row.id ? "bg-primary/10" : "hover:bg-accent"
|
|
32829
32829
|
),
|
|
@@ -32890,18 +32890,18 @@ function ControlRow({
|
|
|
32890
32890
|
onOptionChange: emitChange
|
|
32891
32891
|
}) {
|
|
32892
32892
|
const { t } = reactI18next.useTranslation();
|
|
32893
|
-
const { viewportWidth } =
|
|
32893
|
+
const { viewportWidth } = chunkTUYNK3GE_js.useIsMobile();
|
|
32894
32894
|
const fieldMinHeight = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
32895
32895
|
const value = readValue(options, control);
|
|
32896
32896
|
const label = t(control.labelKey);
|
|
32897
32897
|
const info = control.infoKey ? /* @__PURE__ */ jsxRuntime.jsx(InfoTip, { text: t(control.infoKey) }) : null;
|
|
32898
|
-
const rowClass =
|
|
32898
|
+
const rowClass = chunkPOPGQIVR_js.cn("flex items-center justify-between gap-3 py-1.5", control.indent && "pl-6");
|
|
32899
32899
|
const rowStyle = { minHeight: fieldMinHeight };
|
|
32900
32900
|
const locked = control.readOnly === true;
|
|
32901
32901
|
const lockedTitle = locked ? t("pptx.options.lockedByHost") : void 0;
|
|
32902
32902
|
const onOptionChange = locked ? IGNORE_CHANGE : emitChange;
|
|
32903
32903
|
if (control.kind === "toggle") {
|
|
32904
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className:
|
|
32904
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: chunkPOPGQIVR_js.cn(rowClass, "cursor-pointer select-none"), style: rowStyle, children: [
|
|
32905
32905
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-sm text-foreground", children: [
|
|
32906
32906
|
label,
|
|
32907
32907
|
info
|
|
@@ -33053,7 +33053,7 @@ function CommandList({
|
|
|
33053
33053
|
role: "option",
|
|
33054
33054
|
"aria-selected": selectedId === id,
|
|
33055
33055
|
onClick: () => onSelect(id),
|
|
33056
|
-
className:
|
|
33056
|
+
className: chunkPOPGQIVR_js.cn(
|
|
33057
33057
|
"flex w-full items-center rounded px-2 py-1.5 text-left text-sm transition-colors",
|
|
33058
33058
|
selectedId === id ? "bg-primary/15 text-primary" : "text-foreground hover:bg-accent"
|
|
33059
33059
|
),
|
|
@@ -33197,7 +33197,7 @@ function OptionsRibbonPane({
|
|
|
33197
33197
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
33198
33198
|
"label",
|
|
33199
33199
|
{
|
|
33200
|
-
className:
|
|
33200
|
+
className: chunkPOPGQIVR_js.cn(
|
|
33201
33201
|
"flex items-center gap-2 rounded px-2 py-1.5",
|
|
33202
33202
|
isFile ? "cursor-not-allowed opacity-60" : "cursor-pointer hover:bg-accent"
|
|
33203
33203
|
),
|
|
@@ -33231,7 +33231,7 @@ function OptionsRibbonPane({
|
|
|
33231
33231
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: pptx.SHORTCUT_REFERENCE_ITEMS.map((shortcut, i) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
33232
33232
|
"div",
|
|
33233
33233
|
{
|
|
33234
|
-
className:
|
|
33234
|
+
className: chunkPOPGQIVR_js.cn(
|
|
33235
33235
|
"flex items-center justify-between gap-3 rounded px-3 py-2",
|
|
33236
33236
|
i % 2 === 0 ? "bg-muted/60" : ""
|
|
33237
33237
|
),
|
|
@@ -33252,7 +33252,7 @@ async function exportAiChatLogs(options) {
|
|
|
33252
33252
|
chats,
|
|
33253
33253
|
{ format: options?.format, detailed: options?.detailed, now: options?.now },
|
|
33254
33254
|
(filename, content, mime) => {
|
|
33255
|
-
|
|
33255
|
+
chunkTUYNK3GE_js.downloadBlob(new Blob([content], { type: mime }), filename);
|
|
33256
33256
|
}
|
|
33257
33257
|
);
|
|
33258
33258
|
}
|
|
@@ -33360,7 +33360,7 @@ function SettingsAppearanceTab({
|
|
|
33360
33360
|
type: "button",
|
|
33361
33361
|
onClick: () => onSelectTheme(entry.key),
|
|
33362
33362
|
"aria-pressed": isActive,
|
|
33363
|
-
className:
|
|
33363
|
+
className: chunkPOPGQIVR_js.cn(
|
|
33364
33364
|
"flex items-center gap-3 rounded-lg border px-3 py-2.5 text-left transition-colors",
|
|
33365
33365
|
isActive ? "border-primary bg-primary/10" : "border-border hover:border-primary/50 hover:bg-accent"
|
|
33366
33366
|
),
|
|
@@ -33377,7 +33377,7 @@ function SettingsAppearanceTab({
|
|
|
33377
33377
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
33378
33378
|
"span",
|
|
33379
33379
|
{
|
|
33380
|
-
className:
|
|
33380
|
+
className: chunkPOPGQIVR_js.cn("text-xs font-medium", isActive ? "text-primary" : "text-foreground"),
|
|
33381
33381
|
children: t(entry.labelKey)
|
|
33382
33382
|
}
|
|
33383
33383
|
)
|
|
@@ -33457,7 +33457,7 @@ function SettingsLanguageTab({
|
|
|
33457
33457
|
type: "button",
|
|
33458
33458
|
onClick: () => onSelectLocale(locale.code),
|
|
33459
33459
|
"aria-pressed": isActive,
|
|
33460
|
-
className:
|
|
33460
|
+
className: chunkPOPGQIVR_js.cn(
|
|
33461
33461
|
"flex w-full items-center justify-between rounded px-3 py-2.5 text-left transition-colors",
|
|
33462
33462
|
isActive ? "bg-primary/10 text-primary" : "text-foreground hover:bg-accent"
|
|
33463
33463
|
),
|
|
@@ -33497,8 +33497,8 @@ function SettingsDialog({
|
|
|
33497
33497
|
const [activeTabId, setActiveTabId] = React98.useState("general");
|
|
33498
33498
|
const { t } = reactI18next.useTranslation();
|
|
33499
33499
|
const customization = useViewerCustomizationContext();
|
|
33500
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
33501
|
-
const { viewportWidth, viewportHeight } =
|
|
33500
|
+
const { panelStyle, handlers: dragHandlers } = chunkTUYNK3GE_js.useModalDismissDrag(onClose);
|
|
33501
|
+
const { viewportWidth, viewportHeight } = chunkTUYNK3GE_js.useIsMobile();
|
|
33502
33502
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
33503
33503
|
const navBtnStyle = { minHeight: touchTargetPx, minWidth: touchTargetPx };
|
|
33504
33504
|
const closeBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
@@ -33606,7 +33606,7 @@ function SettingsDialog({
|
|
|
33606
33606
|
onClick: () => setActiveTabId(tab.id),
|
|
33607
33607
|
"aria-current": currentTabId === tab.id,
|
|
33608
33608
|
style: navBtnStyle,
|
|
33609
|
-
className:
|
|
33609
|
+
className: chunkPOPGQIVR_js.cn(
|
|
33610
33610
|
"flex w-full items-center whitespace-nowrap rounded px-3 py-2 text-left text-sm transition-colors max-md:w-auto",
|
|
33611
33611
|
currentTabId === tab.id ? "bg-primary/10 font-medium text-primary" : "text-foreground hover:bg-accent"
|
|
33612
33612
|
),
|
|
@@ -33621,7 +33621,7 @@ function SettingsDialog({
|
|
|
33621
33621
|
onClick: () => setActiveTabId(AI_TAB_ID),
|
|
33622
33622
|
"aria-current": aiActive,
|
|
33623
33623
|
style: navBtnStyle,
|
|
33624
|
-
className:
|
|
33624
|
+
className: chunkPOPGQIVR_js.cn(
|
|
33625
33625
|
"flex w-full items-center whitespace-nowrap rounded px-3 py-2 text-left text-sm transition-colors max-md:w-auto",
|
|
33626
33626
|
aiActive ? "bg-primary/10 font-medium text-primary" : "text-foreground hover:bg-accent"
|
|
33627
33627
|
),
|
|
@@ -33767,7 +33767,7 @@ function ViewerOptionsProvider({
|
|
|
33767
33767
|
store,
|
|
33768
33768
|
children
|
|
33769
33769
|
}) {
|
|
33770
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
33770
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkTUYNK3GE_js.ViewerOptionsStoreContext.Provider, { value: store, children: /* @__PURE__ */ jsxRuntime.jsx(chunkTUYNK3GE_js.ViewerOptionsContext.Provider, { value: options, children }) });
|
|
33771
33771
|
}
|
|
33772
33772
|
function useAiBridge(input) {
|
|
33773
33773
|
const ref = React98.useRef(input);
|
|
@@ -34088,7 +34088,7 @@ function useMasterViewCrud(input) {
|
|
|
34088
34088
|
if (id === "renameLayout" || id === "renameMaster") {
|
|
34089
34089
|
const master = slideMasters[target.masterIndex];
|
|
34090
34090
|
const current = id === "renameLayout" ? master?.layouts?.[target.layoutIndex ?? -1]?.name ?? "" : master?.name ?? "";
|
|
34091
|
-
const next =
|
|
34091
|
+
const next = chunkTUYNK3GE_js.safePrompt(t("pptx.masterView.renamePrompt"), current)?.trim();
|
|
34092
34092
|
if (!next) {
|
|
34093
34093
|
return;
|
|
34094
34094
|
}
|
|
@@ -34485,7 +34485,7 @@ var PowerPointViewer = React98.forwardRef(
|
|
|
34485
34485
|
(current) => current.includes(family) ? current : [...current, family]
|
|
34486
34486
|
);
|
|
34487
34487
|
}, []);
|
|
34488
|
-
const { i18n: i18n$1 } = reactI18next.useTranslation();
|
|
34488
|
+
const { t, i18n: i18n$1 } = reactI18next.useTranslation();
|
|
34489
34489
|
const [localeCode, setLocaleCode] = React98.useState(
|
|
34490
34490
|
() => defaultLocale ?? pptx.readStoredViewerPrefs().localeCode ?? "en"
|
|
34491
34491
|
);
|
|
@@ -34547,7 +34547,7 @@ var PowerPointViewer = React98.forwardRef(
|
|
|
34547
34547
|
}
|
|
34548
34548
|
})();
|
|
34549
34549
|
}, []);
|
|
34550
|
-
const { optionsStore, options: viewerOptions } =
|
|
34550
|
+
const { optionsStore, options: viewerOptions } = chunkTUYNK3GE_js.useViewerOptions();
|
|
34551
34551
|
const custom = useViewerCustomization(customization, legacyHiddenActions, optionsStore);
|
|
34552
34552
|
const { resolved: customizationResolved, hiddenActions } = custom;
|
|
34553
34553
|
const aiEnabled = Boolean(ai) && pptx.isFeatureEnabled(customizationResolved, "ai");
|
|
@@ -34561,8 +34561,8 @@ var PowerPointViewer = React98.forwardRef(
|
|
|
34561
34561
|
const handleEnableEditing = React98.useCallback(() => {
|
|
34562
34562
|
setProtectedViewOverridden(true);
|
|
34563
34563
|
}, []);
|
|
34564
|
-
const readOnlyRec =
|
|
34565
|
-
const compatToastsState =
|
|
34564
|
+
const readOnlyRec = chunkTUYNK3GE_js.useReadOnlyRecommendationState(content);
|
|
34565
|
+
const compatToastsState = chunkTUYNK3GE_js.useCompatibilityToastsState();
|
|
34566
34566
|
const [notesBarHeight, setNotesBarHeight] = React98.useState(0);
|
|
34567
34567
|
const runProgramNoticesState = useRunProgramNoticesState();
|
|
34568
34568
|
const [collaborationReadOnly, setCollaborationReadOnly] = React98.useState(Boolean(collaboration));
|
|
@@ -34577,8 +34577,8 @@ var PowerPointViewer = React98.forwardRef(
|
|
|
34577
34577
|
filePath
|
|
34578
34578
|
});
|
|
34579
34579
|
const [isShareDialogOpen, setIsShareDialogOpen] = React98.useState(false);
|
|
34580
|
-
const { reducedMotion, toggleReducedMotion } =
|
|
34581
|
-
const state =
|
|
34580
|
+
const { reducedMotion, toggleReducedMotion } = chunkTUYNK3GE_js.useReducedMotion();
|
|
34581
|
+
const state = chunkTUYNK3GE_js.useViewerState({ content, canEdit });
|
|
34582
34582
|
const {
|
|
34583
34583
|
containerRef,
|
|
34584
34584
|
mode,
|
|
@@ -34587,6 +34587,7 @@ var PowerPointViewer = React98.forwardRef(
|
|
|
34587
34587
|
loading,
|
|
34588
34588
|
error,
|
|
34589
34589
|
activeSlideIndex,
|
|
34590
|
+
setActiveSlideIndex,
|
|
34590
34591
|
selectedElementId,
|
|
34591
34592
|
selectedElementIds,
|
|
34592
34593
|
templateElementsBySlideId,
|
|
@@ -34602,7 +34603,7 @@ var PowerPointViewer = React98.forwardRef(
|
|
|
34602
34603
|
[state.recentColors, pushColor]
|
|
34603
34604
|
);
|
|
34604
34605
|
const themeColorMapValue = React98.useMemo(
|
|
34605
|
-
() => state.theme?.colorScheme ? (0,
|
|
34606
|
+
() => state.theme?.colorScheme ? (0, chunkPOPGQIVR_js.dist_exports.buildThemeColorMap)(state.theme.colorScheme) : void 0,
|
|
34606
34607
|
[state.theme?.colorScheme]
|
|
34607
34608
|
);
|
|
34608
34609
|
const settings = React98.useMemo(
|
|
@@ -34689,16 +34690,16 @@ var PowerPointViewer = React98.forwardRef(
|
|
|
34689
34690
|
}
|
|
34690
34691
|
}, [settings, optionsStore]);
|
|
34691
34692
|
const handleClearOptionsCache2 = useAutosaveCacheMaintenance(viewerOptions);
|
|
34692
|
-
const mobile =
|
|
34693
|
+
const mobile = chunkTUYNK3GE_js.useIsMobile();
|
|
34693
34694
|
const { isMobile, isTouchDevice, isVirtualKeyboardOpen } = mobile;
|
|
34694
|
-
const resizablePanels =
|
|
34695
|
+
const resizablePanels = chunkTUYNK3GE_js.useResizablePanels();
|
|
34695
34696
|
const {
|
|
34696
34697
|
gridSpacingPx,
|
|
34697
34698
|
visibleSlideIndexes,
|
|
34698
34699
|
slideSectionGroups,
|
|
34699
34700
|
masterPseudoSlide,
|
|
34700
34701
|
authoredRange
|
|
34701
|
-
} =
|
|
34702
|
+
} = chunkTUYNK3GE_js.useDerivedSlideState({
|
|
34702
34703
|
slides,
|
|
34703
34704
|
sections: state.sections,
|
|
34704
34705
|
customShows: state.customShows,
|
|
@@ -34723,7 +34724,7 @@ var PowerPointViewer = React98.forwardRef(
|
|
|
34723
34724
|
state.cropSessionRef
|
|
34724
34725
|
]
|
|
34725
34726
|
);
|
|
34726
|
-
const zoom =
|
|
34727
|
+
const zoom = chunkTUYNK3GE_js.useZoomViewport({
|
|
34727
34728
|
canvasSize,
|
|
34728
34729
|
selectedElements: state.selectedElements,
|
|
34729
34730
|
fitPadding: props.fitPadding,
|
|
@@ -34733,7 +34734,7 @@ var PowerPointViewer = React98.forwardRef(
|
|
|
34733
34734
|
const markDocumentDirty = React98.useCallback(() => {
|
|
34734
34735
|
setIsDirty(true);
|
|
34735
34736
|
}, [setIsDirty]);
|
|
34736
|
-
const history =
|
|
34737
|
+
const history = chunkTUYNK3GE_js.useEditorHistory({
|
|
34737
34738
|
slides,
|
|
34738
34739
|
canvasSize,
|
|
34739
34740
|
activeSlideIndex,
|
|
@@ -34759,7 +34760,7 @@ var PowerPointViewer = React98.forwardRef(
|
|
|
34759
34760
|
setEditTemplateMode: state.setEditTemplateMode,
|
|
34760
34761
|
setHeaderFooter: state.setHeaderFooter
|
|
34761
34762
|
});
|
|
34762
|
-
const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } =
|
|
34763
|
+
const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = chunkTUYNK3GE_js.usePresentationSetup({
|
|
34763
34764
|
mode,
|
|
34764
34765
|
slides,
|
|
34765
34766
|
visibleSlideIndexes,
|
|
@@ -34801,7 +34802,40 @@ var PowerPointViewer = React98.forwardRef(
|
|
|
34801
34802
|
onSetActiveCustomShowId: state.setActiveCustomShowId,
|
|
34802
34803
|
onAddRunProgramNotice: runProgramNoticesState.addNotice
|
|
34803
34804
|
});
|
|
34804
|
-
|
|
34805
|
+
React98.useEffect(() => {
|
|
34806
|
+
const root = containerRef.current;
|
|
34807
|
+
if (!root) {
|
|
34808
|
+
return;
|
|
34809
|
+
}
|
|
34810
|
+
return pptx.attachViewerHyperlinks(root, {
|
|
34811
|
+
getState: () => ({
|
|
34812
|
+
slide: slides[activeSlideIndex],
|
|
34813
|
+
slideCount: slides.length,
|
|
34814
|
+
currentSlideIndex: activeSlideIndex,
|
|
34815
|
+
editable: canEdit && mode !== "preview",
|
|
34816
|
+
presenting: mode === "present"
|
|
34817
|
+
}),
|
|
34818
|
+
goToSlide: (index) => mode === "present" ? presentation.navigateToSlide(index) : setActiveSlideIndex(index),
|
|
34819
|
+
onHyperlinkClick: props.onHyperlinkClick,
|
|
34820
|
+
confirmExternalHyperlink: (url) => !pptx.shouldConfirmExternalHyperlink(viewerOptions, url) || window.confirm(`${t("pptx.options.trust.confirmHyperlinks")}
|
|
34821
|
+
|
|
34822
|
+
${url}`)
|
|
34823
|
+
});
|
|
34824
|
+
}, [
|
|
34825
|
+
containerRef,
|
|
34826
|
+
slides,
|
|
34827
|
+
activeSlideIndex,
|
|
34828
|
+
canEdit,
|
|
34829
|
+
mode,
|
|
34830
|
+
presentation,
|
|
34831
|
+
setActiveSlideIndex,
|
|
34832
|
+
props.onHyperlinkClick,
|
|
34833
|
+
viewerOptions,
|
|
34834
|
+
t,
|
|
34835
|
+
loading,
|
|
34836
|
+
error
|
|
34837
|
+
]);
|
|
34838
|
+
chunkTUYNK3GE_js.useTouchGestures({
|
|
34805
34839
|
targetRef: zoom.canvasViewportRef,
|
|
34806
34840
|
currentScale: zoom.scale,
|
|
34807
34841
|
callbacks: {
|
|
@@ -34823,7 +34857,7 @@ var PowerPointViewer = React98.forwardRef(
|
|
|
34823
34857
|
},
|
|
34824
34858
|
enabled: isTouchDevice
|
|
34825
34859
|
});
|
|
34826
|
-
const dialogs =
|
|
34860
|
+
const dialogs = chunkTUYNK3GE_js.useViewerDialogs({
|
|
34827
34861
|
mode,
|
|
34828
34862
|
slides,
|
|
34829
34863
|
activeSlide,
|
|
@@ -34872,7 +34906,7 @@ var PowerPointViewer = React98.forwardRef(
|
|
|
34872
34906
|
zoom.handleZoomToFit();
|
|
34873
34907
|
zoom.canvasViewportRef.current?.scrollTo({ left: 0, top: 0 });
|
|
34874
34908
|
}, [mode]);
|
|
34875
|
-
const editorOps =
|
|
34909
|
+
const editorOps = chunkTUYNK3GE_js.useEditorOperations({
|
|
34876
34910
|
state,
|
|
34877
34911
|
history,
|
|
34878
34912
|
zoom,
|
|
@@ -34914,7 +34948,7 @@ var PowerPointViewer = React98.forwardRef(
|
|
|
34914
34948
|
setIsEncryptedDialogOpen,
|
|
34915
34949
|
handlerRef,
|
|
34916
34950
|
loadVersion
|
|
34917
|
-
} =
|
|
34951
|
+
} = chunkTUYNK3GE_js.useViewerIntegration({
|
|
34918
34952
|
transformCommittedText: (text) => pptx.applyAutoCorrect(text, viewerOptions.proofing),
|
|
34919
34953
|
state,
|
|
34920
34954
|
zoom,
|
|
@@ -34988,7 +35022,7 @@ var PowerPointViewer = React98.forwardRef(
|
|
|
34988
35022
|
updateThemeFontScheme: themeHandlers.handleUpdateThemeFontScheme
|
|
34989
35023
|
});
|
|
34990
35024
|
const ribbonScope = useRibbonScopeToken();
|
|
34991
|
-
const viewPreferencesSync =
|
|
35025
|
+
const viewPreferencesSync = chunkTUYNK3GE_js.useViewPreferencesSync({
|
|
34992
35026
|
loadVersion,
|
|
34993
35027
|
viewProperties: state.viewProperties,
|
|
34994
35028
|
setViewProperties: state.setViewProperties,
|
|
@@ -35026,7 +35060,7 @@ var PowerPointViewer = React98.forwardRef(
|
|
|
35026
35060
|
},
|
|
35027
35061
|
[state]
|
|
35028
35062
|
);
|
|
35029
|
-
const layoutSwitching =
|
|
35063
|
+
const layoutSwitching = chunkTUYNK3GE_js.useLayoutSwitching({
|
|
35030
35064
|
handler: handlerRef.current,
|
|
35031
35065
|
slides,
|
|
35032
35066
|
activeSlideIndex,
|
|
@@ -35122,7 +35156,7 @@ var PowerPointViewer = React98.forwardRef(
|
|
|
35122
35156
|
"data-pptx-editor-chrome": "",
|
|
35123
35157
|
...{ [pptx.RIBBON_SCOPE_ATTR]: ribbonScope },
|
|
35124
35158
|
"aria-busy": loading,
|
|
35125
|
-
className:
|
|
35159
|
+
className: chunkPOPGQIVR_js.cn(
|
|
35126
35160
|
"h-full w-full bg-background text-foreground relative",
|
|
35127
35161
|
...pptx.resolveOptionRootClasses(viewerOptions, "pptx")
|
|
35128
35162
|
),
|
|
@@ -35513,8 +35547,8 @@ var PowerPointViewer = React98.forwardRef(
|
|
|
35513
35547
|
// Nothing previously provided it, so every one of those consumers was
|
|
35514
35548
|
// silently reading `DEFAULT_VIEWER_OPTIONS` forever, no matter what
|
|
35515
35549
|
// the user changed in the Options dialog.
|
|
35516
|
-
/* @__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(
|
|
35517
|
-
|
|
35550
|
+
/* @__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(chunkTUYNK3GE_js.Rendering3DFlagsContext.Provider, { value: effective3D, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
35551
|
+
chunkTUYNK3GE_js.CollaborationProvider,
|
|
35518
35552
|
{
|
|
35519
35553
|
config: collaboration,
|
|
35520
35554
|
canvasWidth: canvasSize.width,
|
|
@@ -35572,7 +35606,7 @@ var PowerPointViewer = React98.forwardRef(
|
|
|
35572
35606
|
);
|
|
35573
35607
|
PowerPointViewer.displayName = "PowerPointViewer";
|
|
35574
35608
|
function CollaborationStatusStrip() {
|
|
35575
|
-
const collab =
|
|
35609
|
+
const collab = chunkTUYNK3GE_js.useCollaboration();
|
|
35576
35610
|
if (!collab) {
|
|
35577
35611
|
return null;
|
|
35578
35612
|
}
|
|
@@ -35596,8 +35630,8 @@ function CollaborationDocumentSync({
|
|
|
35596
35630
|
deckSaveState,
|
|
35597
35631
|
onReadOnlyChange
|
|
35598
35632
|
}) {
|
|
35599
|
-
const collab =
|
|
35600
|
-
|
|
35633
|
+
const collab = chunkTUYNK3GE_js.useCollaboration();
|
|
35634
|
+
chunkTUYNK3GE_js.useCollaborationDocumentSync({
|
|
35601
35635
|
collaboration: collab,
|
|
35602
35636
|
slides,
|
|
35603
35637
|
templateElementsBySlideId,
|
|
@@ -35616,14 +35650,14 @@ function CollaborationFollowLayer({
|
|
|
35616
35650
|
setActiveSlideIndex,
|
|
35617
35651
|
slideCount
|
|
35618
35652
|
}) {
|
|
35619
|
-
const collab =
|
|
35620
|
-
const { followedClientId, followUser } =
|
|
35653
|
+
const collab = chunkTUYNK3GE_js.useCollaboration();
|
|
35654
|
+
const { followedClientId, followUser } = chunkTUYNK3GE_js.useFollowMode({
|
|
35621
35655
|
collab,
|
|
35622
35656
|
activeSlideIndex,
|
|
35623
35657
|
setActiveSlideIndex,
|
|
35624
35658
|
slideCount
|
|
35625
35659
|
});
|
|
35626
|
-
|
|
35660
|
+
chunkTUYNK3GE_js.useBroadcastFollower({
|
|
35627
35661
|
collab,
|
|
35628
35662
|
activeSlideIndex,
|
|
35629
35663
|
setActiveSlideIndex,
|