pptx-react-viewer 4.33.0 → 4.33.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 +13 -0
- package/dist/{AiChatPanel-47A5ONVT.mjs → AiChatPanel-CYD46SEM.mjs} +1 -1
- package/dist/AiChatPanel-CYD46SEM.mjs.br +0 -0
- package/dist/AiChatPanel-CYD46SEM.mjs.gz +0 -0
- package/dist/{AiChatPanel-FV5ECOV5.js → AiChatPanel-ONHWZEPV.js} +9 -9
- package/dist/AiChatPanel-ONHWZEPV.js.br +0 -0
- package/dist/AiChatPanel-ONHWZEPV.js.gz +0 -0
- package/dist/{chunk-DD3ARHEW.mjs → chunk-2OIJUZD5.mjs} +7 -3
- package/dist/chunk-2OIJUZD5.mjs.br +0 -0
- package/dist/chunk-2OIJUZD5.mjs.gz +0 -0
- package/dist/{chunk-SQUVXHAE.js → chunk-7DGKSEIU.js} +1 -8
- package/dist/chunk-7DGKSEIU.js.br +0 -0
- package/dist/{chunk-SQUVXHAE.js.gz → chunk-7DGKSEIU.js.gz} +0 -0
- package/dist/{chunk-LOBNIIFQ.mjs → chunk-GSMY5BTO.mjs} +4 -4
- package/dist/chunk-GSMY5BTO.mjs.br +0 -0
- package/dist/chunk-GSMY5BTO.mjs.gz +0 -0
- package/dist/{chunk-JL7A7NDD.js → chunk-JHYNVFFS.js} +384 -384
- package/dist/chunk-JHYNVFFS.js.br +0 -0
- package/dist/chunk-JHYNVFFS.js.gz +0 -0
- package/dist/{chunk-WEPZYAB6.mjs → chunk-K4UXDQZ6.mjs} +1 -8
- package/dist/chunk-K4UXDQZ6.mjs.br +0 -0
- package/dist/{chunk-WEPZYAB6.mjs.gz → chunk-K4UXDQZ6.mjs.gz} +0 -0
- package/dist/{chunk-552NAFTD.js → chunk-TVSTM5J5.js} +251 -247
- package/dist/chunk-TVSTM5J5.js.br +0 -0
- package/dist/chunk-TVSTM5J5.js.gz +0 -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.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 +4 -4
- package/dist/AiChatPanel-47A5ONVT.mjs.br +0 -0
- package/dist/AiChatPanel-47A5ONVT.mjs.gz +0 -0
- package/dist/AiChatPanel-FV5ECOV5.js.br +0 -0
- package/dist/AiChatPanel-FV5ECOV5.js.gz +0 -0
- package/dist/chunk-552NAFTD.js.br +0 -0
- package/dist/chunk-552NAFTD.js.gz +0 -0
- package/dist/chunk-DD3ARHEW.mjs.br +0 -0
- package/dist/chunk-DD3ARHEW.mjs.gz +0 -0
- package/dist/chunk-JL7A7NDD.js.br +0 -0
- package/dist/chunk-JL7A7NDD.js.gz +0 -0
- package/dist/chunk-LOBNIIFQ.mjs.br +0 -0
- package/dist/chunk-LOBNIIFQ.mjs.gz +0 -0
- package/dist/chunk-SQUVXHAE.js.br +0 -0
- package/dist/chunk-WEPZYAB6.mjs.br +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunkTVSTM5J5_js = require('./chunk-TVSTM5J5.js');
|
|
4
|
+
var chunk7DGKSEIU_js = require('./chunk-7DGKSEIU.js');
|
|
5
5
|
var pptx = require('ooxml-ui/pptx');
|
|
6
6
|
var React99 = 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
|
+
chunkTVSTM5J5_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 } = chunkTVSTM5J5_js.useModalDismissDrag(onClose);
|
|
380
380
|
const [selected, setSelected] = React99.useState(null);
|
|
381
381
|
const dialogRef = React99.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: chunk7DGKSEIU_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 } = chunkTVSTM5J5_js.useToolbarVisibility(p.hiddenActions);
|
|
727
727
|
const { onGroupElements, onUngroupElement, onUpdateElementStyle } = p;
|
|
728
728
|
const controls = React99.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
|
+
chunkTVSTM5J5_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.33.
|
|
1218
|
+
const version = "4.33.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: chunk7DGKSEIU_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] = React99.useState("");
|
|
1480
1480
|
const [recent, setRecent] = React99.useState([]);
|
|
1481
|
-
const { isHidden } =
|
|
1481
|
+
const { isHidden } = chunkTVSTM5J5_js.useToolbarVisibility(p.hiddenActions);
|
|
1482
1482
|
const exportHidden = isHidden("export");
|
|
1483
1483
|
React99.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: chunk7DGKSEIU_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: chunk7DGKSEIU_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
|
+
chunkTVSTM5J5_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: chunk7DGKSEIU_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 = React99.useContext(
|
|
2428
|
+
const supplied = React99.useContext(chunkTVSTM5J5_js.ViewerOptionsStoreContext);
|
|
2429
2429
|
const fallback = React99.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 } = chunkTVSTM5J5_js.useToolbarVisibility(p.hiddenActions);
|
|
2463
2463
|
const [showsOpen, setShowsOpen] = React99.useState(false);
|
|
2464
2464
|
const showsRef = React99.useRef(null);
|
|
2465
2465
|
React99.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, chunk7DGKSEIU_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, chunk7DGKSEIU_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, chunk7DGKSEIU_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, chunk7DGKSEIU_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 = React99.useCallback(() => {
|
|
2830
|
-
if (!element || !(0,
|
|
2830
|
+
if (!element || !(0, chunk7DGKSEIU_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, chunk7DGKSEIU_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, chunk7DGKSEIU_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, chunk7DGKSEIU_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, chunk7DGKSEIU_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, chunk7DGKSEIU_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, chunk7DGKSEIU_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 = React99.useRef(null);
|
|
2995
2995
|
const { t } = reactI18next.useTranslation();
|
|
2996
|
-
const { dragY, dragging, handlers } =
|
|
2996
|
+
const { dragY, dragging, handlers } = chunkTVSTM5J5_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: chunk7DGKSEIU_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] = React99.useState("home");
|
|
3084
|
-
const { isTabVisible } =
|
|
3084
|
+
const { isTabVisible } = chunkTVSTM5J5_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: chunk7DGKSEIU_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] = React99.useState(false);
|
|
3365
|
-
const { isHidden } =
|
|
3365
|
+
const { isHidden } = chunkTVSTM5J5_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, chunk7DGKSEIU_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 = React99.useMemo(
|
|
@@ -3555,7 +3555,7 @@ var TAB_BASE = "relative px-3.5 py-2 text-[12px] font-medium whitespace-nowrap t
|
|
|
3555
3555
|
var TAB_UNDERLINE = "after:absolute after:-bottom-px after:left-0 after:right-0 after:h-[2.5px] after:bg-primary";
|
|
3556
3556
|
function RibbonTabBar(p) {
|
|
3557
3557
|
const { t } = reactI18next.useTranslation();
|
|
3558
|
-
const viewerOptions =
|
|
3558
|
+
const viewerOptions = chunkTVSTM5J5_js.useViewerOptionsContext();
|
|
3559
3559
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3560
3560
|
"div",
|
|
3561
3561
|
{
|
|
@@ -3563,7 +3563,7 @@ function RibbonTabBar(p) {
|
|
|
3563
3563
|
"data-pptx-chrome": "ribbon-tabs",
|
|
3564
3564
|
className: "flex items-center border-b border-border/60 px-1 max-md:overflow-x-auto max-md:scrollbar-none",
|
|
3565
3565
|
children: [
|
|
3566
|
-
|
|
3566
|
+
chunk7DGKSEIU_js.TOOLBAR_SECTIONS.filter((s) => p.isTabVisible(s.id)).map((s) => {
|
|
3567
3567
|
const selected = p.activeSection === s.id;
|
|
3568
3568
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3569
3569
|
"button",
|
|
@@ -3573,7 +3573,7 @@ function RibbonTabBar(p) {
|
|
|
3573
3573
|
"aria-selected": selected,
|
|
3574
3574
|
title: pptx.resolveScreenTip(viewerOptions, t(s.labelKey)),
|
|
3575
3575
|
onClick: () => p.onSelectSection(s.id),
|
|
3576
|
-
className:
|
|
3576
|
+
className: chunk7DGKSEIU_js.cn(
|
|
3577
3577
|
TAB_BASE,
|
|
3578
3578
|
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"
|
|
3579
3579
|
),
|
|
@@ -3593,7 +3593,7 @@ function RibbonTabBar(p) {
|
|
|
3593
3593
|
...{ [pptx.RIBBON_ADD_IN_TAB_ATTR]: tab.id },
|
|
3594
3594
|
title: pptx.resolveScreenTip(viewerOptions, tab.label),
|
|
3595
3595
|
onClick: () => p.onSelectAddIn?.(tab.id),
|
|
3596
|
-
className:
|
|
3596
|
+
className: chunk7DGKSEIU_js.cn(
|
|
3597
3597
|
TAB_BASE,
|
|
3598
3598
|
selected ? `text-foreground ${TAB_UNDERLINE}` : "text-muted-foreground hover:text-foreground hover:bg-accent/30"
|
|
3599
3599
|
),
|
|
@@ -3614,7 +3614,7 @@ function RibbonTabBar(p) {
|
|
|
3614
3614
|
...{ [pptx.RIBBON_CONTEXTUAL_TAB_ATTR]: id },
|
|
3615
3615
|
title: pptx.resolveScreenTip(viewerOptions, label),
|
|
3616
3616
|
onClick: () => p.onSelectContextual(id),
|
|
3617
|
-
className:
|
|
3617
|
+
className: chunk7DGKSEIU_js.cn(
|
|
3618
3618
|
TAB_BASE,
|
|
3619
3619
|
"text-primary",
|
|
3620
3620
|
selected ? TAB_UNDERLINE : "hover:bg-primary/10"
|
|
@@ -3632,9 +3632,9 @@ function RibbonTabBar(p) {
|
|
|
3632
3632
|
}
|
|
3633
3633
|
function TabRowActions(p) {
|
|
3634
3634
|
const { t } = reactI18next.useTranslation();
|
|
3635
|
-
const collab =
|
|
3635
|
+
const collab = chunkTVSTM5J5_js.useCollaboration();
|
|
3636
3636
|
const isCollaborating = Boolean(collab && collab.status === "connected");
|
|
3637
|
-
const { isHidden } =
|
|
3637
|
+
const { isHidden } = chunkTVSTM5J5_js.useToolbarVisibility(p.hiddenActions);
|
|
3638
3638
|
const customization = useViewerCustomizationContext();
|
|
3639
3639
|
const ref = React99.useRef(null);
|
|
3640
3640
|
const handlers = React99.useRef(p);
|
|
@@ -3689,7 +3689,7 @@ function TabRowActions(p) {
|
|
|
3689
3689
|
}
|
|
3690
3690
|
function TitleBarElement(p) {
|
|
3691
3691
|
const { t } = reactI18next.useTranslation();
|
|
3692
|
-
const options =
|
|
3692
|
+
const options = chunkTVSTM5J5_js.useViewerOptionsContext();
|
|
3693
3693
|
const customization = useViewerCustomizationContext();
|
|
3694
3694
|
const ref = React99.useRef(null);
|
|
3695
3695
|
const stripVisible = options.quickAccess.visible && pptx.isPanelVisible(customization, "quickAccessToolbar");
|
|
@@ -3762,7 +3762,7 @@ function PresentDropdown({
|
|
|
3762
3762
|
{
|
|
3763
3763
|
type: "button",
|
|
3764
3764
|
onClick: onPresent,
|
|
3765
|
-
className:
|
|
3765
|
+
className: chunk7DGKSEIU_js.cn(
|
|
3766
3766
|
"px-2 py-1 transition-colors",
|
|
3767
3767
|
isActive ? "bg-primary text-white" : "hover:bg-accent text-foreground"
|
|
3768
3768
|
),
|
|
@@ -3775,7 +3775,7 @@ function PresentDropdown({
|
|
|
3775
3775
|
{
|
|
3776
3776
|
type: "button",
|
|
3777
3777
|
onClick: () => setOpen((prev) => !prev),
|
|
3778
|
-
className:
|
|
3778
|
+
className: chunk7DGKSEIU_js.cn(
|
|
3779
3779
|
"inline-flex items-center px-1 transition-colors border-l border-border",
|
|
3780
3780
|
open ? "bg-primary text-white" : "hover:bg-accent text-foreground"
|
|
3781
3781
|
),
|
|
@@ -3978,7 +3978,7 @@ function OverflowMenu(p) {
|
|
|
3978
3978
|
{
|
|
3979
3979
|
type: "button",
|
|
3980
3980
|
onClick: () => p.onSetOverflowMenuOpen(!p.isOverflowMenuOpen),
|
|
3981
|
-
className:
|
|
3981
|
+
className: chunk7DGKSEIU_js.cn(
|
|
3982
3982
|
"p-1.5 rounded transition-colors",
|
|
3983
3983
|
p.isOverflowMenuOpen ? "bg-primary/80 text-white" : "bg-muted hover:bg-accent"
|
|
3984
3984
|
),
|
|
@@ -4025,7 +4025,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
4025
4025
|
onToggleSidebar,
|
|
4026
4026
|
onToggleInspector
|
|
4027
4027
|
} = p;
|
|
4028
|
-
const collab =
|
|
4028
|
+
const collab = chunkTVSTM5J5_js.useCollaboration();
|
|
4029
4029
|
const customization = useViewerCustomizationContext();
|
|
4030
4030
|
const showSlidesToggle = pptx.isPanelVisible(customization, "slidesPane");
|
|
4031
4031
|
const showInspectorToggle = pptx.isPanelVisible(customization, "inspector");
|
|
@@ -4043,7 +4043,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
4043
4043
|
{
|
|
4044
4044
|
type: "button",
|
|
4045
4045
|
onClick: onToggleSidebar,
|
|
4046
|
-
className:
|
|
4046
|
+
className: chunk7DGKSEIU_js.cn(qab, !isSidebarCollapsed ? "text-foreground" : "text-muted-foreground"),
|
|
4047
4047
|
title: t("pptx.toolbar.toggleSlidesPanel"),
|
|
4048
4048
|
"aria-label": t("pptx.toolbar.toggleSlidesPanel"),
|
|
4049
4049
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelLeft, { className: ic })
|
|
@@ -4104,7 +4104,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
4104
4104
|
{
|
|
4105
4105
|
type: "button",
|
|
4106
4106
|
onClick: onToggleInspector,
|
|
4107
|
-
className:
|
|
4107
|
+
className: chunk7DGKSEIU_js.cn(qab, isInspectorPaneOpen ? "text-foreground" : "text-muted-foreground"),
|
|
4108
4108
|
title: t("pptx.toolbar.toggleInspector"),
|
|
4109
4109
|
"aria-label": t("pptx.toolbar.toggleInspector"),
|
|
4110
4110
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelRight, { className: ic })
|
|
@@ -4115,7 +4115,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
4115
4115
|
{
|
|
4116
4116
|
type: "button",
|
|
4117
4117
|
onClick: p.onToggleAiPanel,
|
|
4118
|
-
className:
|
|
4118
|
+
className: chunk7DGKSEIU_js.cn(qab, p.isAiPanelOpen ? "text-primary" : "text-muted-foreground"),
|
|
4119
4119
|
title: t("pptx.toolbar.toggleAiAssistant"),
|
|
4120
4120
|
"aria-label": t("pptx.toolbar.toggleAiAssistant"),
|
|
4121
4121
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSparkles, { className: ic })
|
|
@@ -4126,7 +4126,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
4126
4126
|
{
|
|
4127
4127
|
type: "button",
|
|
4128
4128
|
onClick: p.onOpenSettings ?? p.onToggleShortcuts,
|
|
4129
|
-
className:
|
|
4129
|
+
className: chunk7DGKSEIU_js.cn(qab, "text-muted-foreground"),
|
|
4130
4130
|
title: t("pptx.toolbar.settingsShortcuts"),
|
|
4131
4131
|
"aria-label": t("pptx.toolbar.settings"),
|
|
4132
4132
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSettings, { className: ics })
|
|
@@ -4323,8 +4323,8 @@ function ToolbarLateTabs({
|
|
|
4323
4323
|
function Toolbar(p) {
|
|
4324
4324
|
const { mode, isNarrowViewport, isCompactToolbarOpen, toolbarSection, onSetToolbarSection } = p;
|
|
4325
4325
|
const { t } = reactI18next.useTranslation();
|
|
4326
|
-
const { isTabVisible } =
|
|
4327
|
-
const viewerOptions =
|
|
4326
|
+
const { isTabVisible } = chunkTVSTM5J5_js.useToolbarVisibility(p.hiddenActions);
|
|
4327
|
+
const viewerOptions = chunkTVSTM5J5_js.useViewerOptionsContext();
|
|
4328
4328
|
const customization = useViewerCustomizationContext();
|
|
4329
4329
|
const belowInput = React99.useMemo(
|
|
4330
4330
|
() => ({
|
|
@@ -4421,7 +4421,7 @@ function Toolbar(p) {
|
|
|
4421
4421
|
{
|
|
4422
4422
|
type: "button",
|
|
4423
4423
|
onClick: p.onToggleCompactToolbar,
|
|
4424
|
-
className:
|
|
4424
|
+
className: chunk7DGKSEIU_js.cn(
|
|
4425
4425
|
"px-2 py-1 rounded text-[11px] transition-colors mr-1",
|
|
4426
4426
|
isCompactToolbarOpen ? "bg-primary/80 text-white" : "text-muted-foreground hover:text-foreground"
|
|
4427
4427
|
),
|
|
@@ -4447,7 +4447,7 @@ function Toolbar(p) {
|
|
|
4447
4447
|
{
|
|
4448
4448
|
ref: attachOverflow,
|
|
4449
4449
|
"data-pptx-chrome": "ribbon-content",
|
|
4450
|
-
className:
|
|
4450
|
+
className: chunk7DGKSEIU_js.cn(
|
|
4451
4451
|
// Plain controls stay compact; labelled RibbonGroups opt into stretching.
|
|
4452
4452
|
// `RibbonGroupScope` wraps controls in a `display: contents` div, so its
|
|
4453
4453
|
// children are this row's flex items too and must not shrink (a shrunk
|
|
@@ -5301,7 +5301,7 @@ function DrawingOverlaySvg({
|
|
|
5301
5301
|
onPointerDown,
|
|
5302
5302
|
onPointerMove,
|
|
5303
5303
|
onPointerUp,
|
|
5304
|
-
children: isStrokeActive && liveStrokeView ?
|
|
5304
|
+
children: isStrokeActive && liveStrokeView ? chunkTVSTM5J5_js.renderStrokeView(liveStrokeView, true, void 0, "ink-live-preview") : isStrokeActive && liveStrokeD && /* @__PURE__ */ jsxRuntime.jsx(
|
|
5305
5305
|
"path",
|
|
5306
5306
|
{
|
|
5307
5307
|
d: liveStrokeD,
|
|
@@ -5316,7 +5316,7 @@ function DrawingOverlaySvg({
|
|
|
5316
5316
|
}
|
|
5317
5317
|
);
|
|
5318
5318
|
}
|
|
5319
|
-
function GridOverlay({ canvasSize, gridSpacingPx =
|
|
5319
|
+
function GridOverlay({ canvasSize, gridSpacingPx = chunk7DGKSEIU_js.GRID_SIZE, visible }) {
|
|
5320
5320
|
const spacing = Math.max(gridSpacingPx, 2);
|
|
5321
5321
|
const patternId = React99.useMemo(() => `grid-dot-pattern-${Math.random().toString(36).slice(2, 8)}`, []);
|
|
5322
5322
|
if (!visible) {
|
|
@@ -5880,7 +5880,7 @@ function PictureCropOverlay({
|
|
|
5880
5880
|
};
|
|
5881
5881
|
};
|
|
5882
5882
|
const { ghost, frame, handles } = overlay;
|
|
5883
|
-
const src =
|
|
5883
|
+
const src = chunkTVSTM5J5_js.imgSrc(element);
|
|
5884
5884
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5885
5885
|
"div",
|
|
5886
5886
|
{
|
|
@@ -6293,10 +6293,10 @@ function SelectionHandleOverlay({
|
|
|
6293
6293
|
position: "absolute",
|
|
6294
6294
|
left: element.x,
|
|
6295
6295
|
top: element.y,
|
|
6296
|
-
width: Math.max(element.width,
|
|
6297
|
-
height: Math.max(element.height,
|
|
6298
|
-
["--pptx-selection-width"]: `${Math.max(element.width,
|
|
6299
|
-
["--pptx-selection-height"]: `${Math.max(element.height,
|
|
6296
|
+
width: Math.max(element.width, chunk7DGKSEIU_js.MIN_ELEMENT_SIZE),
|
|
6297
|
+
height: Math.max(element.height, chunk7DGKSEIU_js.MIN_ELEMENT_SIZE),
|
|
6298
|
+
["--pptx-selection-width"]: `${Math.max(element.width, chunk7DGKSEIU_js.MIN_ELEMENT_SIZE)}px`,
|
|
6299
|
+
["--pptx-selection-height"]: `${Math.max(element.height, chunk7DGKSEIU_js.MIN_ELEMENT_SIZE)}px`,
|
|
6300
6300
|
// Every slide element carries an explicit numeric `zIndex` (see
|
|
6301
6301
|
// `getContainerStyle`), so a sibling with no z-index at all paints
|
|
6302
6302
|
// at the CSS "z-index: 0" level regardless of DOM order: any
|
|
@@ -6308,7 +6308,7 @@ function SelectionHandleOverlay({
|
|
|
6308
6308
|
// (marquee z-50, connector overlay z-55/56) to match, well clear of
|
|
6309
6309
|
// any realistic per-slide element count.
|
|
6310
6310
|
zIndex: 58,
|
|
6311
|
-
transform:
|
|
6311
|
+
transform: chunk7DGKSEIU_js.getElementTransform(element),
|
|
6312
6312
|
transformOrigin: "center",
|
|
6313
6313
|
// Transparent everywhere a handle button is not, so a click that
|
|
6314
6314
|
// misses every handle still reaches the shape (or whatever is
|
|
@@ -6320,14 +6320,14 @@ function SelectionHandleOverlay({
|
|
|
6320
6320
|
onDoubleClick: (e) => onDoubleClick(element.id, e),
|
|
6321
6321
|
onContextMenu: (e) => onContextMenu(element.id, e),
|
|
6322
6322
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6323
|
-
|
|
6323
|
+
chunkTVSTM5J5_js.ResizeHandles,
|
|
6324
6324
|
{
|
|
6325
6325
|
elementId: element.id,
|
|
6326
6326
|
adjustmentHandles,
|
|
6327
6327
|
onResizePointerDown,
|
|
6328
6328
|
onAdjustmentPointerDown,
|
|
6329
6329
|
rotation: element.rotation,
|
|
6330
|
-
nonRotationTransform:
|
|
6330
|
+
nonRotationTransform: chunk7DGKSEIU_js.getElementTransformWithoutRotation(element),
|
|
6331
6331
|
onRotate: allow.rotatable ? onRotate : void 0,
|
|
6332
6332
|
forcePointerEvents: true
|
|
6333
6333
|
}
|
|
@@ -7031,7 +7031,7 @@ function SlideCanvas(props) {
|
|
|
7031
7031
|
props.registerInlineEditReader
|
|
7032
7032
|
]
|
|
7033
7033
|
);
|
|
7034
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7034
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkTVSTM5J5_js.InlineCollaborationContext.Provider, { value, children: /* @__PURE__ */ jsxRuntime.jsx(SlideCanvasContent, { ...props }) });
|
|
7035
7035
|
}
|
|
7036
7036
|
function SlideCanvasContent({
|
|
7037
7037
|
imagePaste,
|
|
@@ -7300,7 +7300,7 @@ function SlideCanvasContent({
|
|
|
7300
7300
|
onPointerMove: handleStagePointerMove,
|
|
7301
7301
|
onPointerUp: handleStagePointerUp,
|
|
7302
7302
|
children: [
|
|
7303
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7303
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkTVSTM5J5_js.SlideBackgroundImageLayer, { slide: activeSlide }),
|
|
7304
7304
|
presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
|
|
7305
7305
|
/* @__PURE__ */ jsxRuntime.jsx(GridOverlay, { canvasSize, gridSpacingPx, visible: showGrid }),
|
|
7306
7306
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -7312,7 +7312,7 @@ function SlideCanvasContent({
|
|
|
7312
7312
|
}
|
|
7313
7313
|
),
|
|
7314
7314
|
templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
7315
|
-
|
|
7315
|
+
chunkTVSTM5J5_js.ElementRenderer,
|
|
7316
7316
|
{
|
|
7317
7317
|
element,
|
|
7318
7318
|
activeSlide,
|
|
@@ -7334,7 +7334,7 @@ function SlideCanvasContent({
|
|
|
7334
7334
|
),
|
|
7335
7335
|
renderInk: false,
|
|
7336
7336
|
renderGroups: true,
|
|
7337
|
-
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ?
|
|
7337
|
+
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunk7DGKSEIU_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
|
|
7338
7338
|
onResizePointerDown: stableResizePointerDown,
|
|
7339
7339
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
7340
7340
|
onRotate: stableRotate,
|
|
@@ -7356,7 +7356,7 @@ function SlideCanvasContent({
|
|
|
7356
7356
|
`tpl-${element.id}`
|
|
7357
7357
|
)),
|
|
7358
7358
|
activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
7359
|
-
|
|
7359
|
+
chunkTVSTM5J5_js.ElementRenderer,
|
|
7360
7360
|
{
|
|
7361
7361
|
element,
|
|
7362
7362
|
activeSlide,
|
|
@@ -7378,7 +7378,7 @@ function SlideCanvasContent({
|
|
|
7378
7378
|
),
|
|
7379
7379
|
renderInk: true,
|
|
7380
7380
|
renderGroups: true,
|
|
7381
|
-
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ?
|
|
7381
|
+
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunk7DGKSEIU_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
|
|
7382
7382
|
onResizePointerDown: stableResizePointerDown,
|
|
7383
7383
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
7384
7384
|
onRotate: stableRotate,
|
|
@@ -7422,7 +7422,7 @@ function SlideCanvasContent({
|
|
|
7422
7422
|
editingMember && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
7423
7423
|
/* @__PURE__ */ jsxRuntime.jsx("style", { children: `[data-element-id="${cssAttr(editingMember.parentId)}"] [data-element-id="${cssAttr(editingMember.member.id)}"]{visibility:hidden}` }),
|
|
7424
7424
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7425
|
-
|
|
7425
|
+
chunkTVSTM5J5_js.ElementRenderer,
|
|
7426
7426
|
{
|
|
7427
7427
|
element: editingMember.member,
|
|
7428
7428
|
activeSlide,
|
|
@@ -7457,11 +7457,11 @@ function SlideCanvasContent({
|
|
|
7457
7457
|
`group-member-edit-${editingMember.member.id}`
|
|
7458
7458
|
)
|
|
7459
7459
|
] }),
|
|
7460
|
-
selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !
|
|
7460
|
+
selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !chunk7DGKSEIU_js.isConnectorOrLineElement(selectedElement) && outlineAuthoring?.editPointsElementId !== selectedElement.id && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7461
7461
|
SelectionHandleOverlay,
|
|
7462
7462
|
{
|
|
7463
7463
|
element: selectedElement,
|
|
7464
|
-
adjustmentHandles:
|
|
7464
|
+
adjustmentHandles: chunk7DGKSEIU_js.getShapeAdjustmentHandleDescriptors(selectedElement),
|
|
7465
7465
|
onResizePointerDown: stableResizePointerDown,
|
|
7466
7466
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
7467
7467
|
onRotate: stableRotate,
|
|
@@ -7575,7 +7575,7 @@ function LoadingState({ className }) {
|
|
|
7575
7575
|
role: "status",
|
|
7576
7576
|
"aria-live": "polite",
|
|
7577
7577
|
"aria-atomic": "true",
|
|
7578
|
-
className:
|
|
7578
|
+
className: chunk7DGKSEIU_js.cn(
|
|
7579
7579
|
"h-full w-full flex items-center justify-center text-muted-foreground",
|
|
7580
7580
|
className
|
|
7581
7581
|
),
|
|
@@ -7598,7 +7598,7 @@ function ErrorState({ className, error }) {
|
|
|
7598
7598
|
{
|
|
7599
7599
|
role: "alert",
|
|
7600
7600
|
"aria-live": "assertive",
|
|
7601
|
-
className:
|
|
7601
|
+
className: chunk7DGKSEIU_js.cn(
|
|
7602
7602
|
"h-full w-full flex items-center justify-center p-6 text-center text-red-400",
|
|
7603
7603
|
className
|
|
7604
7604
|
),
|
|
@@ -7629,7 +7629,7 @@ function ShortcutPanel({ isOpen, onClose }) {
|
|
|
7629
7629
|
}
|
|
7630
7630
|
)
|
|
7631
7631
|
] }),
|
|
7632
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children:
|
|
7632
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children: chunk7DGKSEIU_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7633
7633
|
"div",
|
|
7634
7634
|
{
|
|
7635
7635
|
className: "flex items-center justify-between gap-3 rounded bg-muted/80 px-2 py-1.5",
|
|
@@ -7689,14 +7689,14 @@ function AccessibilityPanel({
|
|
|
7689
7689
|
"aria-label": t("pptx.accessibility.reduceMotion"),
|
|
7690
7690
|
"aria-checked": reducedMotion ?? false,
|
|
7691
7691
|
onClick: onToggleReducedMotion,
|
|
7692
|
-
className:
|
|
7692
|
+
className: chunk7DGKSEIU_js.cn(
|
|
7693
7693
|
"relative inline-flex h-5 w-9 items-center rounded-full transition-colors",
|
|
7694
7694
|
reducedMotion ? "bg-primary" : "bg-muted-foreground/30"
|
|
7695
7695
|
),
|
|
7696
7696
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7697
7697
|
"span",
|
|
7698
7698
|
{
|
|
7699
|
-
className:
|
|
7699
|
+
className: chunk7DGKSEIU_js.cn(
|
|
7700
7700
|
"inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform",
|
|
7701
7701
|
reducedMotion ? "translate-x-4" : "translate-x-0.5"
|
|
7702
7702
|
)
|
|
@@ -7715,7 +7715,7 @@ function AccessibilityPanel({
|
|
|
7715
7715
|
"div",
|
|
7716
7716
|
{
|
|
7717
7717
|
role: "listitem",
|
|
7718
|
-
className:
|
|
7718
|
+
className: chunk7DGKSEIU_js.cn(
|
|
7719
7719
|
"flex items-start gap-2 rounded px-2 py-1.5 text-xs",
|
|
7720
7720
|
/* Severity-based background and text colouring */
|
|
7721
7721
|
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"
|
|
@@ -7875,7 +7875,7 @@ function ResizeHandle({
|
|
|
7875
7875
|
{
|
|
7876
7876
|
role: "separator",
|
|
7877
7877
|
"aria-orientation": direction,
|
|
7878
|
-
className:
|
|
7878
|
+
className: chunk7DGKSEIU_js.cn(
|
|
7879
7879
|
// Outer container: generous hit area for easy clicking.
|
|
7880
7880
|
// The visible indicator is rendered via the inner pseudo-element (::after).
|
|
7881
7881
|
"relative flex-shrink-0 z-20 group",
|
|
@@ -7886,7 +7886,7 @@ function ResizeHandle({
|
|
|
7886
7886
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7887
7887
|
"div",
|
|
7888
7888
|
{
|
|
7889
|
-
className:
|
|
7889
|
+
className: chunk7DGKSEIU_js.cn(
|
|
7890
7890
|
"absolute transition-colors",
|
|
7891
7891
|
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"
|
|
7892
7892
|
)
|
|
@@ -7905,14 +7905,14 @@ function SlideThumbnailImpl({
|
|
|
7905
7905
|
}) {
|
|
7906
7906
|
const safeCanvasWidth = Math.max(canvasSize.width, 1);
|
|
7907
7907
|
const safeCanvasHeight = Math.max(canvasSize.height, 1);
|
|
7908
|
-
const width = previewWidth ??
|
|
7908
|
+
const width = previewWidth ?? chunk7DGKSEIU_js.SLIDE_NAV_THUMBNAIL_WIDTH;
|
|
7909
7909
|
const scale = width / safeCanvasWidth;
|
|
7910
7910
|
const previewHeight = pptx.editorThumbnailHeight(safeCanvasWidth, safeCanvasHeight, width);
|
|
7911
7911
|
const previewElements = pptx.buildPreviewElements(slide, templateElements);
|
|
7912
7912
|
const slideFieldContext = pptx.deriveSlideFieldContext(fieldContext, slide);
|
|
7913
7913
|
const { t } = reactI18next.useTranslation();
|
|
7914
7914
|
const transitionLabel = slide.transition ? (() => {
|
|
7915
|
-
const opt =
|
|
7915
|
+
const opt = chunk7DGKSEIU_js.SLIDE_TRANSITION_OPTIONS.find((o) => o.value === slide.transition?.type);
|
|
7916
7916
|
return opt ? t(opt.i18nKey) : slide.transition.type;
|
|
7917
7917
|
})() : void 0;
|
|
7918
7918
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -7938,7 +7938,7 @@ function SlideThumbnailImpl({
|
|
|
7938
7938
|
...pptx.deviceStrokeStageStyle(scale)
|
|
7939
7939
|
},
|
|
7940
7940
|
children: [
|
|
7941
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7941
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkTVSTM5J5_js.SlideBackgroundImageLayer, { slide }),
|
|
7942
7942
|
slide.transition && slide.transition.type !== "none" && slide.transition.type !== "cut" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7943
7943
|
"div",
|
|
7944
7944
|
{
|
|
@@ -7948,7 +7948,7 @@ function SlideThumbnailImpl({
|
|
|
7948
7948
|
}
|
|
7949
7949
|
),
|
|
7950
7950
|
previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
7951
|
-
|
|
7951
|
+
chunkTVSTM5J5_js.StaticElementRenderer,
|
|
7952
7952
|
{
|
|
7953
7953
|
element,
|
|
7954
7954
|
activeSlide: slide,
|
|
@@ -8504,7 +8504,7 @@ function SectionHeader({
|
|
|
8504
8504
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8505
8505
|
lu.LuChevronDown,
|
|
8506
8506
|
{
|
|
8507
|
-
className:
|
|
8507
|
+
className: chunk7DGKSEIU_js.cn(
|
|
8508
8508
|
"h-3 w-3 flex-shrink-0 transition-transform",
|
|
8509
8509
|
isCollapsed ? "-rotate-90" : "rotate-0"
|
|
8510
8510
|
)
|
|
@@ -8655,7 +8655,7 @@ function LazyThumbnailInner({
|
|
|
8655
8655
|
}
|
|
8656
8656
|
var LazyThumbnail = React99__default.default.memo(LazyThumbnailInner);
|
|
8657
8657
|
function declaredSectionFacts(groups, sectionId) {
|
|
8658
|
-
const declared = groups.filter((group) => group.id !==
|
|
8658
|
+
const declared = groups.filter((group) => group.id !== chunk7DGKSEIU_js.DEFAULT_SECTION_GROUP_ID && group.id !== chunk7DGKSEIU_js.UNGROUPED_SECTION_ID).map((group) => group.id);
|
|
8659
8659
|
return {
|
|
8660
8660
|
isDeclared: declared.includes(sectionId),
|
|
8661
8661
|
index: declared.indexOf(sectionId),
|
|
@@ -8740,7 +8740,7 @@ function SlideItemInner({
|
|
|
8740
8740
|
"data-pptx-chrome": "slide-row",
|
|
8741
8741
|
"aria-describedby": cue.labelId,
|
|
8742
8742
|
"data-pptx-slide-hidden": cue.marker,
|
|
8743
|
-
className:
|
|
8743
|
+
className: chunk7DGKSEIU_js.cn(
|
|
8744
8744
|
"group relative flex w-full items-center gap-1 cursor-pointer border-0 bg-transparent py-0.5 px-1 text-left transition-all",
|
|
8745
8745
|
isActive && "bg-accent/40 before:absolute before:left-0 before:top-1 before:bottom-1 before:w-[3px] before:bg-primary before:rounded-r",
|
|
8746
8746
|
isSelected && !isActive && "bg-accent/20 ring-1 ring-inset ring-primary/50",
|
|
@@ -8762,7 +8762,7 @@ function SlideItemInner({
|
|
|
8762
8762
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8763
8763
|
"span",
|
|
8764
8764
|
{
|
|
8765
|
-
className:
|
|
8765
|
+
className: chunk7DGKSEIU_js.cn(
|
|
8766
8766
|
"text-[10px] tabular-nums text-right select-none w-full",
|
|
8767
8767
|
isActive ? "text-primary font-medium" : "text-muted-foreground"
|
|
8768
8768
|
),
|
|
@@ -8785,7 +8785,7 @@ function SlideItemInner({
|
|
|
8785
8785
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
8786
8786
|
"div",
|
|
8787
8787
|
{
|
|
8788
|
-
className:
|
|
8788
|
+
className: chunk7DGKSEIU_js.cn(
|
|
8789
8789
|
"relative shrink-0 overflow-hidden border transition-colors bg-white",
|
|
8790
8790
|
isActive ? "border-primary/60" : "border-transparent group-hover:border-border/40"
|
|
8791
8791
|
),
|
|
@@ -8984,7 +8984,7 @@ function SlidesPaneSidebar({
|
|
|
8984
8984
|
tableStyleContext
|
|
8985
8985
|
}) {
|
|
8986
8986
|
const { t } = reactI18next.useTranslation();
|
|
8987
|
-
const collab =
|
|
8987
|
+
const collab = chunkTVSTM5J5_js.useCollaboration();
|
|
8988
8988
|
const slideRefs = React99.useRef(/* @__PURE__ */ new Map());
|
|
8989
8989
|
const renameInputRef = React99.useRef(null);
|
|
8990
8990
|
const slidePresenceMap = React99.useMemo(() => {
|
|
@@ -9009,7 +9009,7 @@ function SlidesPaneSidebar({
|
|
|
9009
9009
|
() => estimateSlideItemHeight(canvasSize.width, canvasSize.height, previewWidth),
|
|
9010
9010
|
[canvasSize.width, canvasSize.height, previewWidth]
|
|
9011
9011
|
);
|
|
9012
|
-
const showSectionHeaders = sectionGroups.some((group) => group.id !==
|
|
9012
|
+
const showSectionHeaders = sectionGroups.some((group) => group.id !== chunk7DGKSEIU_js.DEFAULT_SECTION_GROUP_ID);
|
|
9013
9013
|
const {
|
|
9014
9014
|
collapsedSections,
|
|
9015
9015
|
renamingSectionId,
|
|
@@ -9079,7 +9079,7 @@ function SlidesPaneSidebar({
|
|
|
9079
9079
|
[sectionGroups, showSectionHeaders, effectiveCollapsed]
|
|
9080
9080
|
);
|
|
9081
9081
|
const shouldVirtualize = slides.length >= VIRTUALIZATION_THRESHOLD;
|
|
9082
|
-
const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } =
|
|
9082
|
+
const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunkTVSTM5J5_js.useVirtualizedSlides({
|
|
9083
9083
|
totalItems: shouldVirtualize ? flatItems.length : 0,
|
|
9084
9084
|
itemHeight: estimatedItemHeight
|
|
9085
9085
|
});
|
|
@@ -9336,7 +9336,7 @@ function HandoutMasterPanel({
|
|
|
9336
9336
|
{
|
|
9337
9337
|
type: "button",
|
|
9338
9338
|
"aria-pressed": slidesPerPage === count,
|
|
9339
|
-
className:
|
|
9339
|
+
className: chunk7DGKSEIU_js.cn(
|
|
9340
9340
|
"px-2 py-1.5 rounded text-[11px] font-medium transition-colors",
|
|
9341
9341
|
slidesPerPage === count ? "bg-primary text-white" : "bg-accent/50 text-muted-foreground hover:bg-accent/70 hover:text-foreground"
|
|
9342
9342
|
),
|
|
@@ -9454,7 +9454,7 @@ function SlideMastersList({
|
|
|
9454
9454
|
ref: isMasterActive ? activeRef : void 0,
|
|
9455
9455
|
"aria-pressed": isMasterActive,
|
|
9456
9456
|
"aria-label": master.name || t("pptx.master.master"),
|
|
9457
|
-
className:
|
|
9457
|
+
className: chunk7DGKSEIU_js.cn(
|
|
9458
9458
|
"group relative block w-full cursor-pointer rounded-lg border-2 p-1 text-left transition-all",
|
|
9459
9459
|
isMasterActive ? "border-amber-500 bg-amber-500/10" : "border-border bg-background/40 hover:border-border"
|
|
9460
9460
|
),
|
|
@@ -9471,7 +9471,7 @@ function SlideMastersList({
|
|
|
9471
9471
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 px-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9472
9472
|
"span",
|
|
9473
9473
|
{
|
|
9474
|
-
className:
|
|
9474
|
+
className: chunk7DGKSEIU_js.cn(
|
|
9475
9475
|
"text-[10px] font-medium",
|
|
9476
9476
|
isMasterActive ? "text-amber-400" : "text-muted-foreground"
|
|
9477
9477
|
),
|
|
@@ -9490,7 +9490,7 @@ function SlideMastersList({
|
|
|
9490
9490
|
ref: isLayoutActive ? activeRef : void 0,
|
|
9491
9491
|
"aria-pressed": isLayoutActive,
|
|
9492
9492
|
"aria-label": layout.name || t("pptx.master.layout"),
|
|
9493
|
-
className:
|
|
9493
|
+
className: chunk7DGKSEIU_js.cn(
|
|
9494
9494
|
"group relative block w-full cursor-pointer rounded-md border-2 p-0.5 text-left transition-all",
|
|
9495
9495
|
isLayoutActive ? "border-primary bg-primary/10" : "border-border bg-background/40 hover:border-border"
|
|
9496
9496
|
),
|
|
@@ -9507,7 +9507,7 @@ function SlideMastersList({
|
|
|
9507
9507
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5 px-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9508
9508
|
"span",
|
|
9509
9509
|
{
|
|
9510
|
-
className:
|
|
9510
|
+
className: chunk7DGKSEIU_js.cn(
|
|
9511
9511
|
"text-[9px]",
|
|
9512
9512
|
isLayoutActive ? "text-primary" : "text-muted-foreground"
|
|
9513
9513
|
),
|
|
@@ -9599,7 +9599,7 @@ function MasterViewSidebar({
|
|
|
9599
9599
|
type: "button",
|
|
9600
9600
|
role: "tab",
|
|
9601
9601
|
"aria-selected": masterViewTab === tab.key,
|
|
9602
|
-
className:
|
|
9602
|
+
className: chunk7DGKSEIU_js.cn(
|
|
9603
9603
|
"flex-1 px-1 py-1.5 text-[10px] font-medium transition-colors border-b-2",
|
|
9604
9604
|
masterViewTab === tab.key ? "border-amber-500 text-amber-400" : "border-transparent text-muted-foreground hover:text-foreground"
|
|
9605
9605
|
),
|
|
@@ -10102,7 +10102,7 @@ function SectionBlock({
|
|
|
10102
10102
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10103
10103
|
lu.LuChevronDown,
|
|
10104
10104
|
{
|
|
10105
|
-
className:
|
|
10105
|
+
className: chunk7DGKSEIU_js.cn("h-3 w-3 transition-transform", collapsed ? "-rotate-90" : "rotate-0")
|
|
10106
10106
|
}
|
|
10107
10107
|
),
|
|
10108
10108
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-left", children: section.label }),
|
|
@@ -10151,7 +10151,7 @@ function SlideCardImpl({
|
|
|
10151
10151
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10152
10152
|
"div",
|
|
10153
10153
|
{
|
|
10154
|
-
className:
|
|
10154
|
+
className: chunk7DGKSEIU_js.cn(
|
|
10155
10155
|
"group relative cursor-pointer rounded-lg border-2 p-1 transition-all",
|
|
10156
10156
|
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",
|
|
10157
10157
|
slide.hidden && "opacity-40"
|
|
@@ -10174,7 +10174,7 @@ function SlideCardImpl({
|
|
|
10174
10174
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10175
10175
|
"span",
|
|
10176
10176
|
{
|
|
10177
|
-
className:
|
|
10177
|
+
className: chunk7DGKSEIU_js.cn(
|
|
10178
10178
|
"text-[11px] font-medium px-0.5",
|
|
10179
10179
|
isSelected ? "text-primary" : isActive ? "text-primary/70" : "text-muted-foreground"
|
|
10180
10180
|
),
|
|
@@ -10916,7 +10916,7 @@ function ReadingViewStage({
|
|
|
10916
10916
|
"div",
|
|
10917
10917
|
{
|
|
10918
10918
|
className: "absolute inset-0",
|
|
10919
|
-
style: { backgroundColor:
|
|
10919
|
+
style: { backgroundColor: chunk7DGKSEIU_js.normalizeHexColor(slide.backgroundColor, "#ffffff") }
|
|
10920
10920
|
}
|
|
10921
10921
|
),
|
|
10922
10922
|
slide.backgroundImage && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -10935,7 +10935,7 @@ function ReadingViewStage({
|
|
|
10935
10935
|
className: "absolute left-0 top-0 origin-top-left",
|
|
10936
10936
|
style: { width, height, transform: `scale(${scale})`, ...pptx.deviceStrokeStageStyle(scale) },
|
|
10937
10937
|
children: elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
10938
|
-
|
|
10938
|
+
chunkTVSTM5J5_js.StaticElementRenderer,
|
|
10939
10939
|
{
|
|
10940
10940
|
element,
|
|
10941
10941
|
activeSlide: slide,
|
|
@@ -11147,7 +11147,7 @@ function renderRichNotesSegments(segments) {
|
|
|
11147
11147
|
if (segment.style.fontFamily) {
|
|
11148
11148
|
style.fontFamily = segment.style.fontFamily;
|
|
11149
11149
|
}
|
|
11150
|
-
if (segment.style.hyperlink &&
|
|
11150
|
+
if (segment.style.hyperlink && chunk7DGKSEIU_js.isUrlSafe(segment.style.hyperlink)) {
|
|
11151
11151
|
const safeHref = segment.style.hyperlink;
|
|
11152
11152
|
style.color = "#4a9eff";
|
|
11153
11153
|
style.textDecoration = "underline";
|
|
@@ -11160,7 +11160,7 @@ function renderRichNotesSegments(segments) {
|
|
|
11160
11160
|
style,
|
|
11161
11161
|
onClick: (e) => {
|
|
11162
11162
|
e.preventDefault();
|
|
11163
|
-
|
|
11163
|
+
chunk7DGKSEIU_js.safeOpenUrl(safeHref);
|
|
11164
11164
|
},
|
|
11165
11165
|
children: segment.text
|
|
11166
11166
|
},
|
|
@@ -11509,7 +11509,7 @@ function useSlideNotes({
|
|
|
11509
11509
|
const href = target.getAttribute("data-hyperlink") || target.getAttribute("href");
|
|
11510
11510
|
if (href && (e.ctrlKey || e.metaKey)) {
|
|
11511
11511
|
e.preventDefault();
|
|
11512
|
-
|
|
11512
|
+
chunk7DGKSEIU_js.safeOpenUrl(href);
|
|
11513
11513
|
}
|
|
11514
11514
|
}, []);
|
|
11515
11515
|
return {
|
|
@@ -11590,7 +11590,7 @@ function SlideNotesPanel({
|
|
|
11590
11590
|
});
|
|
11591
11591
|
const hasNotes = draft.trim().length > 0;
|
|
11592
11592
|
const slideLabel = activeSlide ? t("pptx.notes.slideN", { n: activeSlide.slideNumber }) : t("pptx.notes.noSlide");
|
|
11593
|
-
const { dragY, handlers: dragHandlers } =
|
|
11593
|
+
const { dragY, handlers: dragHandlers } = chunkTVSTM5J5_js.useSheetDismissDrag(onToggle);
|
|
11594
11594
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
11595
11595
|
isExpanded && /* @__PURE__ */ jsxRuntime.jsx(
|
|
11596
11596
|
"button",
|
|
@@ -11606,7 +11606,7 @@ function SlideNotesPanel({
|
|
|
11606
11606
|
{
|
|
11607
11607
|
ref: rootRef,
|
|
11608
11608
|
"data-pptx-chrome": "notes",
|
|
11609
|
-
className:
|
|
11609
|
+
className: chunk7DGKSEIU_js.cn(
|
|
11610
11610
|
"flex flex-col border-t border-border/60 bg-background select-none",
|
|
11611
11611
|
// On mobile, hide the entire notes strip when collapsed: the
|
|
11612
11612
|
// MobileBottomBar's Notes button is the entry point instead.
|
|
@@ -11970,7 +11970,7 @@ function SlideDiffRow({
|
|
|
11970
11970
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
11971
11971
|
"div",
|
|
11972
11972
|
{
|
|
11973
|
-
className:
|
|
11973
|
+
className: chunk7DGKSEIU_js.cn(
|
|
11974
11974
|
"rounded-lg border transition-colors",
|
|
11975
11975
|
isResolved ? "border-border/60 bg-card/40 opacity-60" : "border-border bg-background/70"
|
|
11976
11976
|
),
|
|
@@ -11984,7 +11984,7 @@ function SlideDiffRow({
|
|
|
11984
11984
|
children: [
|
|
11985
11985
|
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" }),
|
|
11986
11986
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-foreground", children: t("pptx.compare.slideNumber", { number: slideNumber }) }),
|
|
11987
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
11987
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunk7DGKSEIU_js.cn("rounded-full px-2 py-0.5 text-[10px] font-medium", statusColor), children: statusLabel }),
|
|
11988
11988
|
diff.changes.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-muted-foreground", children: [
|
|
11989
11989
|
diff.changes.length,
|
|
11990
11990
|
" ",
|
|
@@ -11994,7 +11994,7 @@ function SlideDiffRow({
|
|
|
11994
11994
|
isResolved && /* @__PURE__ */ jsxRuntime.jsx(
|
|
11995
11995
|
"span",
|
|
11996
11996
|
{
|
|
11997
|
-
className:
|
|
11997
|
+
className: chunk7DGKSEIU_js.cn(
|
|
11998
11998
|
"text-[10px] font-medium",
|
|
11999
11999
|
accepted ? "text-green-400" : "text-muted-foreground"
|
|
12000
12000
|
),
|
|
@@ -12022,7 +12022,7 @@ function SlideDiffRow({
|
|
|
12022
12022
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12023
12023
|
"div",
|
|
12024
12024
|
{
|
|
12025
|
-
className:
|
|
12025
|
+
className: chunk7DGKSEIU_js.cn(
|
|
12026
12026
|
"rounded border overflow-hidden",
|
|
12027
12027
|
diff.status === "added" ? "border-green-700/60" : diff.status === "changed" ? "border-amber-700/60" : "border-border"
|
|
12028
12028
|
),
|
|
@@ -12727,7 +12727,7 @@ function DocumentPropertiesDialog({
|
|
|
12727
12727
|
const handleClose = React99.useCallback(() => {
|
|
12728
12728
|
onClose();
|
|
12729
12729
|
}, [onClose]);
|
|
12730
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
12730
|
+
const { panelStyle, handlers: dragHandlers } = chunkTVSTM5J5_js.useModalDismissDrag(handleClose);
|
|
12731
12731
|
if (!isOpen) {
|
|
12732
12732
|
return null;
|
|
12733
12733
|
}
|
|
@@ -13324,7 +13324,7 @@ function PresentationSubtitleBar({
|
|
|
13324
13324
|
}) {
|
|
13325
13325
|
const { t } = reactI18next.useTranslation();
|
|
13326
13326
|
const language = pptx.subtitleRecognitionLanguage(
|
|
13327
|
-
pptx.subtitleSettingsFromOptions(
|
|
13327
|
+
pptx.subtitleSettingsFromOptions(chunkTVSTM5J5_js.useViewerOptionsContext()),
|
|
13328
13328
|
typeof navigator === "undefined" ? "en-US" : navigator.language
|
|
13329
13329
|
);
|
|
13330
13330
|
const [captionText, setCaptionText] = React99.useState("");
|
|
@@ -13492,7 +13492,7 @@ function ScaledSlidePreviewImpl({
|
|
|
13492
13492
|
{
|
|
13493
13493
|
className: "absolute inset-0",
|
|
13494
13494
|
style: {
|
|
13495
|
-
backgroundColor:
|
|
13495
|
+
backgroundColor: chunk7DGKSEIU_js.normalizeHexColor(slide.backgroundColor, "#ffffff")
|
|
13496
13496
|
}
|
|
13497
13497
|
}
|
|
13498
13498
|
),
|
|
@@ -13518,7 +13518,7 @@ function ScaledSlidePreviewImpl({
|
|
|
13518
13518
|
...pptx.deviceStrokeStageStyle(scale)
|
|
13519
13519
|
},
|
|
13520
13520
|
children: previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
13521
|
-
|
|
13521
|
+
chunkTVSTM5J5_js.StaticElementRenderer,
|
|
13522
13522
|
{
|
|
13523
13523
|
element,
|
|
13524
13524
|
activeSlide: slide,
|
|
@@ -14235,7 +14235,7 @@ function getElementDisplayName(element, index) {
|
|
|
14235
14235
|
if (element.name && element.name.trim().length > 0) {
|
|
14236
14236
|
return element.name.trim();
|
|
14237
14237
|
}
|
|
14238
|
-
if ((0,
|
|
14238
|
+
if ((0, chunk7DGKSEIU_js.dist_exports.hasTextProperties)(element) && element.text && element.text.trim().length > 0) {
|
|
14239
14239
|
return element.text.trim().slice(0, 32);
|
|
14240
14240
|
}
|
|
14241
14241
|
const label = TYPE_LABELS[element.type] ?? "Object";
|
|
@@ -14408,7 +14408,7 @@ function SelectionPane({
|
|
|
14408
14408
|
setDragIndex(null);
|
|
14409
14409
|
setDragOverIndex(null);
|
|
14410
14410
|
},
|
|
14411
|
-
className:
|
|
14411
|
+
className: chunk7DGKSEIU_js.cn(
|
|
14412
14412
|
"flex items-center gap-1.5 px-2 py-1 text-xs cursor-pointer transition-colors",
|
|
14413
14413
|
isSelected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground",
|
|
14414
14414
|
dragOverIndex === realIndex ? "border-t-2 border-primary" : ""
|
|
@@ -14462,13 +14462,13 @@ function SelectionPane({
|
|
|
14462
14462
|
}
|
|
14463
14463
|
var INPUT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
|
|
14464
14464
|
var SELECT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
|
|
14465
|
-
var ENTRANCE_PRESETS =
|
|
14465
|
+
var ENTRANCE_PRESETS = chunk7DGKSEIU_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14466
14466
|
(o) => o.value === "fadeIn" || o.value === "flyIn" || o.value === "zoomIn"
|
|
14467
14467
|
);
|
|
14468
|
-
var EXIT_PRESETS =
|
|
14468
|
+
var EXIT_PRESETS = chunk7DGKSEIU_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14469
14469
|
(o) => o.value === "fadeOut" || o.value === "flyOut" || o.value === "zoomOut"
|
|
14470
14470
|
);
|
|
14471
|
-
var EMPHASIS_PRESETS =
|
|
14471
|
+
var EMPHASIS_PRESETS = chunk7DGKSEIU_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14472
14472
|
(o) => o.value === "spin" || o.value === "pulse" || o.value === "colorWave" || o.value === "bounce" || o.value === "flash" || o.value === "growShrink" || o.value === "teeter"
|
|
14473
14473
|
);
|
|
14474
14474
|
var TIMING_CURVE_OPTIONS = [
|
|
@@ -14634,7 +14634,7 @@ function AnimationTimelineSection({
|
|
|
14634
14634
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-6 rounded bg-muted/50 border border-border overflow-hidden", children: timelineBarData.map((bar) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
14635
14635
|
"div",
|
|
14636
14636
|
{
|
|
14637
|
-
className:
|
|
14637
|
+
className: chunk7DGKSEIU_js.cn(
|
|
14638
14638
|
"absolute top-0.5 bottom-0.5 rounded-sm transition-colors",
|
|
14639
14639
|
animationTypeColor(bar.anim),
|
|
14640
14640
|
bar.anim.elementId === selectedElementId && "ring-1 ring-primary"
|
|
@@ -14663,7 +14663,7 @@ function AnimationTimelineSection({
|
|
|
14663
14663
|
onDragLeave: handleDragLeave,
|
|
14664
14664
|
onDrop: (e) => handleDrop(index, e),
|
|
14665
14665
|
title: t("pptx.animation.nativeEffectHint"),
|
|
14666
|
-
className:
|
|
14666
|
+
className: chunk7DGKSEIU_js.cn(
|
|
14667
14667
|
"flex items-center gap-1 px-1 py-0.5 rounded text-[10px] italic",
|
|
14668
14668
|
"bg-muted/20 text-muted-foreground/70",
|
|
14669
14669
|
isDragOver && "border-t-2 border-primary"
|
|
@@ -14702,7 +14702,7 @@ function AnimationTimelineSection({
|
|
|
14702
14702
|
onDragEnd: handleDragEnd,
|
|
14703
14703
|
onMouseEnter: () => handleAnimationHover(anim),
|
|
14704
14704
|
onMouseLeave: handleAnimationHoverEnd,
|
|
14705
|
-
className:
|
|
14705
|
+
className: chunk7DGKSEIU_js.cn(
|
|
14706
14706
|
"flex items-center gap-1 px-1 py-0.5 rounded text-[10px] cursor-grab transition-colors",
|
|
14707
14707
|
isSelected ? "bg-primary/30 text-primary" : "bg-muted/50 text-muted-foreground",
|
|
14708
14708
|
isDragging && "opacity-40",
|
|
@@ -14834,7 +14834,7 @@ function EffectSoundRow({
|
|
|
14834
14834
|
}
|
|
14835
14835
|
const asset = pptx.getEffectSoundAsset(soundState.catalogueId);
|
|
14836
14836
|
if (asset) {
|
|
14837
|
-
|
|
14837
|
+
chunkTVSTM5J5_js.playAnimationSound(asset.dataUrl);
|
|
14838
14838
|
}
|
|
14839
14839
|
};
|
|
14840
14840
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -15009,7 +15009,7 @@ function useAnimationPreview({
|
|
|
15009
15009
|
}) {
|
|
15010
15010
|
const handleAnimationHover = React99.useCallback((anim) => {
|
|
15011
15011
|
if (anim.motionPath) {
|
|
15012
|
-
|
|
15012
|
+
chunk7DGKSEIU_js.startMotionPathPreview(anim.elementId, anim.motionPath, {
|
|
15013
15013
|
durationMs: anim.durationMs,
|
|
15014
15014
|
delayMs: anim.delayMs,
|
|
15015
15015
|
timingCurve: anim.timingCurve
|
|
@@ -15020,19 +15020,19 @@ function useAnimationPreview({
|
|
|
15020
15020
|
if (!preset || preset === "none") {
|
|
15021
15021
|
return;
|
|
15022
15022
|
}
|
|
15023
|
-
|
|
15023
|
+
chunk7DGKSEIU_js.startPreviewAnimation(anim.elementId, preset, {
|
|
15024
15024
|
direction: anim.direction,
|
|
15025
15025
|
durationMs: anim.durationMs ?? 500,
|
|
15026
15026
|
timingCurve: anim.timingCurve
|
|
15027
15027
|
});
|
|
15028
15028
|
}, []);
|
|
15029
|
-
const handleAnimationHoverEnd = React99.useCallback(() =>
|
|
15029
|
+
const handleAnimationHoverEnd = React99.useCallback(() => chunk7DGKSEIU_js.stopPreviewAnimation(), []);
|
|
15030
15030
|
const handlePreviewClick = React99.useCallback(() => {
|
|
15031
15031
|
if (!selectedElementAnimation) {
|
|
15032
15032
|
return;
|
|
15033
15033
|
}
|
|
15034
15034
|
if (selectedElementAnimation.motionPath) {
|
|
15035
|
-
|
|
15035
|
+
chunk7DGKSEIU_js.startMotionPathPreview(selectedElementId, selectedElementAnimation.motionPath, {
|
|
15036
15036
|
durationMs: selectedElementAnimation.durationMs,
|
|
15037
15037
|
delayMs: selectedElementAnimation.delayMs,
|
|
15038
15038
|
timingCurve: selectedElementAnimation.timingCurve
|
|
@@ -15043,7 +15043,7 @@ function useAnimationPreview({
|
|
|
15043
15043
|
if (!preset || preset === "none") {
|
|
15044
15044
|
return;
|
|
15045
15045
|
}
|
|
15046
|
-
|
|
15046
|
+
chunk7DGKSEIU_js.startPreviewAnimation(selectedElementId, preset, {
|
|
15047
15047
|
direction: selectedElementAnimation.direction,
|
|
15048
15048
|
durationMs: selectedElementAnimation.durationMs ?? 500,
|
|
15049
15049
|
timingCurve: selectedElementAnimation.timingCurve
|
|
@@ -15277,8 +15277,8 @@ function useAnimationHandlers({
|
|
|
15277
15277
|
if (!el) {
|
|
15278
15278
|
return anim.elementId.slice(0, 8);
|
|
15279
15279
|
}
|
|
15280
|
-
const text = (0,
|
|
15281
|
-
return text ||
|
|
15280
|
+
const text = (0, chunk7DGKSEIU_js.dist_exports.hasTextProperties)(el) ? el.text : void 0;
|
|
15281
|
+
return text || chunk7DGKSEIU_js.getElementLabel(el);
|
|
15282
15282
|
},
|
|
15283
15283
|
[activeSlide.elements]
|
|
15284
15284
|
);
|
|
@@ -15288,8 +15288,8 @@ function useAnimationHandlers({
|
|
|
15288
15288
|
if (!el) {
|
|
15289
15289
|
return id.slice(0, 8);
|
|
15290
15290
|
}
|
|
15291
|
-
const text = (0,
|
|
15292
|
-
return text ||
|
|
15291
|
+
const text = (0, chunk7DGKSEIU_js.dist_exports.hasTextProperties)(el) ? el.text : void 0;
|
|
15292
|
+
return text || chunk7DGKSEIU_js.getElementLabel(el);
|
|
15293
15293
|
}).join(", "),
|
|
15294
15294
|
[activeSlide.elements]
|
|
15295
15295
|
);
|
|
@@ -15346,7 +15346,7 @@ function AnimationPanel({
|
|
|
15346
15346
|
onUpdateSlide
|
|
15347
15347
|
}) {
|
|
15348
15348
|
const { t } = reactI18next.useTranslation();
|
|
15349
|
-
const { viewportWidth } =
|
|
15349
|
+
const { viewportWidth } = chunkTVSTM5J5_js.useIsMobile();
|
|
15350
15350
|
const directionBtnPx = Math.max(28, pptx.getDensePanelTouchTargetPx(viewportWidth));
|
|
15351
15351
|
const fieldStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
|
|
15352
15352
|
const handlers = useAnimationHandlers({
|
|
@@ -15474,7 +15474,7 @@ function AnimationPanel({
|
|
|
15474
15474
|
type: "button",
|
|
15475
15475
|
disabled: !canEdit,
|
|
15476
15476
|
style: { minWidth: directionBtnPx, minHeight: directionBtnPx },
|
|
15477
|
-
className:
|
|
15477
|
+
className: chunk7DGKSEIU_js.cn(
|
|
15478
15478
|
"flex items-center justify-center rounded border transition-colors",
|
|
15479
15479
|
isActive ? "border-primary bg-primary/20 text-primary" : "border-border bg-muted text-muted-foreground hover:bg-accent"
|
|
15480
15480
|
),
|
|
@@ -15552,7 +15552,7 @@ function AnimationPanel({
|
|
|
15552
15552
|
style: fieldStyle,
|
|
15553
15553
|
children: [
|
|
15554
15554
|
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: t("pptx.animation.trigger.selectShape") }),
|
|
15555
|
-
activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children:
|
|
15555
|
+
activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children: chunk7DGKSEIU_js.getElementLabel(el) }, el.id))
|
|
15556
15556
|
]
|
|
15557
15557
|
}
|
|
15558
15558
|
)
|
|
@@ -15700,7 +15700,7 @@ function ActionTargetFields({
|
|
|
15700
15700
|
type: "text",
|
|
15701
15701
|
disabled: !canEdit,
|
|
15702
15702
|
"aria-label": t(urlLabelKey),
|
|
15703
|
-
className:
|
|
15703
|
+
className: chunk7DGKSEIU_js.cn(INPUT2, "w-full"),
|
|
15704
15704
|
placeholder: "https://...",
|
|
15705
15705
|
value: url ?? "",
|
|
15706
15706
|
onChange: (e) => onChange({ url: e.target.value })
|
|
@@ -15714,7 +15714,7 @@ function ActionTargetFields({
|
|
|
15714
15714
|
type: "number",
|
|
15715
15715
|
disabled: !canEdit,
|
|
15716
15716
|
"aria-label": t("pptx.action.gotoSlide"),
|
|
15717
|
-
className:
|
|
15717
|
+
className: chunk7DGKSEIU_js.cn(INPUT2, "w-full"),
|
|
15718
15718
|
placeholder: t("pptx.action.slideNumberPlaceholder"),
|
|
15719
15719
|
min: 1,
|
|
15720
15720
|
max: slideCount,
|
|
@@ -15736,7 +15736,7 @@ function ActionTargetFields({
|
|
|
15736
15736
|
"data-testid": "pptx-action-custom-show",
|
|
15737
15737
|
disabled: !canEdit,
|
|
15738
15738
|
"aria-label": t("pptx.hyperlink.customShowLabel"),
|
|
15739
|
-
className:
|
|
15739
|
+
className: chunk7DGKSEIU_js.cn(INPUT2, "w-full"),
|
|
15740
15740
|
value: customShowId ?? "",
|
|
15741
15741
|
onChange: (e) => onChange({ customShowId: e.target.value, returnAfter }),
|
|
15742
15742
|
children: [
|
|
@@ -15769,11 +15769,11 @@ function ActionSettingsPanel({
|
|
|
15769
15769
|
onUpdateElement
|
|
15770
15770
|
}) {
|
|
15771
15771
|
const { t } = reactI18next.useTranslation();
|
|
15772
|
-
const clickAction = selectedElement.actionClick ? (0,
|
|
15773
|
-
const hoverAction = selectedElement.actionHover ? (0,
|
|
15772
|
+
const clickAction = selectedElement.actionClick ? (0, chunk7DGKSEIU_js.dist_exports.pptxActionToElementAction)(selectedElement.actionClick, "click") : void 0;
|
|
15773
|
+
const hoverAction = selectedElement.actionHover ? (0, chunk7DGKSEIU_js.dist_exports.pptxActionToElementAction)(selectedElement.actionHover, "hover") : void 0;
|
|
15774
15774
|
const updateAction = (trigger, type, patch) => {
|
|
15775
15775
|
const ea = { trigger, type, ...patch };
|
|
15776
|
-
const pa = (0,
|
|
15776
|
+
const pa = (0, chunk7DGKSEIU_js.dist_exports.elementActionToPptxAction)(ea);
|
|
15777
15777
|
if (trigger === "click") {
|
|
15778
15778
|
onUpdateElement({ actionClick: pa });
|
|
15779
15779
|
} else {
|
|
@@ -15858,7 +15858,7 @@ function ActionTriggerSection({
|
|
|
15858
15858
|
{
|
|
15859
15859
|
disabled: !canEdit,
|
|
15860
15860
|
"aria-label": label,
|
|
15861
|
-
className:
|
|
15861
|
+
className: chunk7DGKSEIU_js.cn(INPUT2, "w-full"),
|
|
15862
15862
|
value: effectiveType,
|
|
15863
15863
|
onChange: (e) => changeType(e.target.value),
|
|
15864
15864
|
children: pptx.ELEMENT_ACTION_TYPE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.labelKey) }, o.value))
|
|
@@ -16246,7 +16246,7 @@ function ChartDataGrid({
|
|
|
16246
16246
|
}) {
|
|
16247
16247
|
const { t } = reactI18next.useTranslation();
|
|
16248
16248
|
const highlightRef = React99.useRef(null);
|
|
16249
|
-
const { viewportWidth } =
|
|
16249
|
+
const { viewportWidth } = chunkTVSTM5J5_js.useIsMobile();
|
|
16250
16250
|
const gridPlan = pptx.getDenseGridLayoutPlan(viewportWidth);
|
|
16251
16251
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
16252
16252
|
const rowHeaderClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10 bg-card" : "";
|
|
@@ -17603,8 +17603,8 @@ function ChartUserShapeOptions({
|
|
|
17603
17603
|
}
|
|
17604
17604
|
function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
|
|
17605
17605
|
const chartData = selectedElement.chartData;
|
|
17606
|
-
const followDataPoint =
|
|
17607
|
-
const { selection: partSelection } =
|
|
17606
|
+
const followDataPoint = chunkTVSTM5J5_js.useViewerOptionsContext().advanced.chartPropertiesFollowDataPoint;
|
|
17607
|
+
const { selection: partSelection } = chunkTVSTM5J5_js.useChartPartSelection();
|
|
17608
17608
|
const canvasPart = partSelection?.elementId === selectedElement.id ? partSelection.part : null;
|
|
17609
17609
|
const title = chartData?.title;
|
|
17610
17610
|
const chartType = chartData?.chartType;
|
|
@@ -17818,40 +17818,40 @@ function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
|
|
|
17818
17818
|
[chartData, selectedElement, replaceChartData]
|
|
17819
17819
|
);
|
|
17820
17820
|
const setAxisLogScale = React99.useCallback(
|
|
17821
|
-
(axisType, opts) => applyChartOp((el) => (0,
|
|
17821
|
+
(axisType, opts) => applyChartOp((el) => (0, chunk7DGKSEIU_js.dist_exports.setChartAxisLogScale)(el, axisType, opts)),
|
|
17822
17822
|
[applyChartOp]
|
|
17823
17823
|
);
|
|
17824
17824
|
const setAxisTitleStyle = React99.useCallback(
|
|
17825
|
-
(axisType, edit) => applyChartOp((el) => (0,
|
|
17825
|
+
(axisType, edit) => applyChartOp((el) => (0, chunk7DGKSEIU_js.dist_exports.setChartAxisTitleStyle)(el, axisType, edit)),
|
|
17826
17826
|
[applyChartOp]
|
|
17827
17827
|
);
|
|
17828
17828
|
const setGridlineStyle = React99.useCallback(
|
|
17829
|
-
(axisType, which, edit) => applyChartOp((el) => (0,
|
|
17829
|
+
(axisType, which, edit) => applyChartOp((el) => (0, chunk7DGKSEIU_js.dist_exports.setChartAxisGridlineStyle)(el, axisType, which, edit)),
|
|
17830
17830
|
[applyChartOp]
|
|
17831
17831
|
);
|
|
17832
17832
|
const setSeriesMarker = React99.useCallback(
|
|
17833
|
-
(index, marker) => applyChartOp((el) => (0,
|
|
17833
|
+
(index, marker) => applyChartOp((el) => (0, chunk7DGKSEIU_js.dist_exports.setChartSeriesMarker)(el, index, marker)),
|
|
17834
17834
|
[applyChartOp]
|
|
17835
17835
|
);
|
|
17836
17836
|
const setSeriesType = React99.useCallback(
|
|
17837
|
-
(index, seriesType) => applyChartOp((el) => (0,
|
|
17837
|
+
(index, seriesType) => applyChartOp((el) => (0, chunk7DGKSEIU_js.dist_exports.setChartSeriesChartType)(el, index, seriesType)),
|
|
17838
17838
|
[applyChartOp]
|
|
17839
17839
|
);
|
|
17840
17840
|
const setPointFill = React99.useCallback(
|
|
17841
|
-
(seriesIndex, pointIndex, color) => applyChartOp((el) => (0,
|
|
17841
|
+
(seriesIndex, pointIndex, color) => applyChartOp((el) => (0, chunk7DGKSEIU_js.dist_exports.setChartDataPointFill)(el, seriesIndex, pointIndex, color)),
|
|
17842
17842
|
[applyChartOp]
|
|
17843
17843
|
);
|
|
17844
17844
|
const setPointExplosion = React99.useCallback(
|
|
17845
|
-
(seriesIndex, pointIndex, explosion) => applyChartOp((el) => (0,
|
|
17845
|
+
(seriesIndex, pointIndex, explosion) => applyChartOp((el) => (0, chunk7DGKSEIU_js.dist_exports.setChartDataPointExplosion)(el, seriesIndex, pointIndex, explosion)),
|
|
17846
17846
|
[applyChartOp]
|
|
17847
17847
|
);
|
|
17848
17848
|
const setPointMarker = React99.useCallback(
|
|
17849
|
-
(seriesIndex, pointIndex, marker) => applyChartOp((el) => (0,
|
|
17849
|
+
(seriesIndex, pointIndex, marker) => applyChartOp((el) => (0, chunk7DGKSEIU_js.dist_exports.setChartDataPointMarker)(el, seriesIndex, pointIndex, marker)),
|
|
17850
17850
|
[applyChartOp]
|
|
17851
17851
|
);
|
|
17852
17852
|
const setPointLabel = React99.useCallback(
|
|
17853
17853
|
(seriesIndex, pointIndex, text) => applyChartOp(
|
|
17854
|
-
(el) => (0,
|
|
17854
|
+
(el) => (0, chunk7DGKSEIU_js.dist_exports.setChartDataPointLabel)(el, seriesIndex, pointIndex, text !== null ? { text } : null)
|
|
17855
17855
|
),
|
|
17856
17856
|
[applyChartOp]
|
|
17857
17857
|
);
|
|
@@ -18119,17 +18119,17 @@ function OleEditorDialog({
|
|
|
18119
18119
|
const kind = descriptor.contentTab.kind;
|
|
18120
18120
|
const load = async () => {
|
|
18121
18121
|
if (kind === "sheet") {
|
|
18122
|
-
const value = await (0,
|
|
18122
|
+
const value = await (0, chunk7DGKSEIU_js.dist_exports.getOleSheetGrid)(element);
|
|
18123
18123
|
if (!cancelled) {
|
|
18124
18124
|
setGrid(value);
|
|
18125
18125
|
}
|
|
18126
18126
|
} else if (kind === "document") {
|
|
18127
|
-
const value = await (0,
|
|
18127
|
+
const value = await (0, chunk7DGKSEIU_js.dist_exports.getOleDocumentParagraphs)(element);
|
|
18128
18128
|
if (!cancelled) {
|
|
18129
18129
|
setParagraphs(value);
|
|
18130
18130
|
}
|
|
18131
18131
|
} else if (kind === "deck") {
|
|
18132
|
-
const value = await (0,
|
|
18132
|
+
const value = await (0, chunk7DGKSEIU_js.dist_exports.getOleNestedDeckDetail)(element);
|
|
18133
18133
|
if (!cancelled) {
|
|
18134
18134
|
setDeckSlides(value);
|
|
18135
18135
|
}
|
|
@@ -18155,9 +18155,9 @@ function OleEditorDialog({
|
|
|
18155
18155
|
const handleCellEdit = React99.useCallback(
|
|
18156
18156
|
async (row, col, value) => {
|
|
18157
18157
|
try {
|
|
18158
|
-
const updated = await (0,
|
|
18158
|
+
const updated = await (0, chunk7DGKSEIU_js.dist_exports.applyOleSheetCellEdit)(element, { row, col, value });
|
|
18159
18159
|
commit(updated);
|
|
18160
|
-
const refreshed = await (0,
|
|
18160
|
+
const refreshed = await (0, chunk7DGKSEIU_js.dist_exports.getOleSheetGrid)(updated);
|
|
18161
18161
|
if (mountedRef.current) {
|
|
18162
18162
|
setGrid(refreshed);
|
|
18163
18163
|
}
|
|
@@ -18172,9 +18172,9 @@ function OleEditorDialog({
|
|
|
18172
18172
|
const handleParagraphEdit = React99.useCallback(
|
|
18173
18173
|
async (index, text) => {
|
|
18174
18174
|
try {
|
|
18175
|
-
const updated = await (0,
|
|
18175
|
+
const updated = await (0, chunk7DGKSEIU_js.dist_exports.applyOleDocumentParagraphEdit)(element, index, text);
|
|
18176
18176
|
commit(updated);
|
|
18177
|
-
const refreshed = await (0,
|
|
18177
|
+
const refreshed = await (0, chunk7DGKSEIU_js.dist_exports.getOleDocumentParagraphs)(updated);
|
|
18178
18178
|
if (mountedRef.current) {
|
|
18179
18179
|
setParagraphs(refreshed);
|
|
18180
18180
|
}
|
|
@@ -18189,14 +18189,14 @@ function OleEditorDialog({
|
|
|
18189
18189
|
const handleDeckElementEdit = React99.useCallback(
|
|
18190
18190
|
async (slideIndex, deckElementId, text) => {
|
|
18191
18191
|
try {
|
|
18192
|
-
const updated = await (0,
|
|
18192
|
+
const updated = await (0, chunk7DGKSEIU_js.dist_exports.applyOleNestedDeckElementTextEdit)(
|
|
18193
18193
|
element,
|
|
18194
18194
|
slideIndex,
|
|
18195
18195
|
deckElementId,
|
|
18196
18196
|
text
|
|
18197
18197
|
);
|
|
18198
18198
|
commit(updated);
|
|
18199
|
-
const refreshed = await (0,
|
|
18199
|
+
const refreshed = await (0, chunk7DGKSEIU_js.dist_exports.getOleNestedDeckDetail)(updated);
|
|
18200
18200
|
if (mountedRef.current) {
|
|
18201
18201
|
setDeckSlides(refreshed);
|
|
18202
18202
|
}
|
|
@@ -18212,7 +18212,7 @@ function OleEditorDialog({
|
|
|
18212
18212
|
async (file) => {
|
|
18213
18213
|
try {
|
|
18214
18214
|
const bytes = new Uint8Array(await file.arrayBuffer());
|
|
18215
|
-
const updated = await (0,
|
|
18215
|
+
const updated = await (0, chunk7DGKSEIU_js.dist_exports.replaceOleFile)(element, bytes, file.name);
|
|
18216
18216
|
commit(updated);
|
|
18217
18217
|
if (mountedRef.current) {
|
|
18218
18218
|
onClose();
|
|
@@ -18361,7 +18361,7 @@ function ConnectorArrowsSection({
|
|
|
18361
18361
|
},
|
|
18362
18362
|
disabled: !canEdit,
|
|
18363
18363
|
className: SELECT_CLS2,
|
|
18364
|
-
children:
|
|
18364
|
+
children: chunk7DGKSEIU_js.CONNECTOR_ARROW_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18365
18365
|
}
|
|
18366
18366
|
)
|
|
18367
18367
|
] }, end);
|
|
@@ -18385,7 +18385,7 @@ function ConnectorArrowsSection({
|
|
|
18385
18385
|
},
|
|
18386
18386
|
disabled: !canEdit,
|
|
18387
18387
|
className: SELECT_CLS2,
|
|
18388
|
-
children:
|
|
18388
|
+
children: chunk7DGKSEIU_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18389
18389
|
}
|
|
18390
18390
|
)
|
|
18391
18391
|
] }),
|
|
@@ -18404,7 +18404,7 @@ function ConnectorArrowsSection({
|
|
|
18404
18404
|
},
|
|
18405
18405
|
disabled: !canEdit,
|
|
18406
18406
|
className: SELECT_CLS2,
|
|
18407
|
-
children:
|
|
18407
|
+
children: chunk7DGKSEIU_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18408
18408
|
}
|
|
18409
18409
|
)
|
|
18410
18410
|
] })
|
|
@@ -18484,7 +18484,7 @@ function OlePropertiesPanel({
|
|
|
18484
18484
|
] }),
|
|
18485
18485
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
18486
18486
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.ole.type") }),
|
|
18487
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground truncate", children: (0,
|
|
18487
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground truncate", children: (0, chunk7DGKSEIU_js.dist_exports.getOleObjectTypeLabel)(ole.oleObjectType) })
|
|
18488
18488
|
] }),
|
|
18489
18489
|
ole.fileName && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
18490
18490
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.ole.fileName") }),
|
|
@@ -18495,7 +18495,7 @@ function OlePropertiesPanel({
|
|
|
18495
18495
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
18496
18496
|
"span",
|
|
18497
18497
|
{
|
|
18498
|
-
className:
|
|
18498
|
+
className: chunk7DGKSEIU_js.cn(
|
|
18499
18499
|
"inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium",
|
|
18500
18500
|
ole.isLinked ? "bg-blue-500/20 text-blue-400" : "bg-green-500/20 text-green-400"
|
|
18501
18501
|
),
|
|
@@ -18563,7 +18563,7 @@ function LayerOrderButtons({
|
|
|
18563
18563
|
"button",
|
|
18564
18564
|
{
|
|
18565
18565
|
type: "button",
|
|
18566
|
-
className:
|
|
18566
|
+
className: chunk7DGKSEIU_js.cn("flex-1", BTN2),
|
|
18567
18567
|
disabled: !canEdit,
|
|
18568
18568
|
onClick: () => onMoveLayer("forward"),
|
|
18569
18569
|
children: "\u2191 Forward"
|
|
@@ -18573,7 +18573,7 @@ function LayerOrderButtons({
|
|
|
18573
18573
|
"button",
|
|
18574
18574
|
{
|
|
18575
18575
|
type: "button",
|
|
18576
|
-
className:
|
|
18576
|
+
className: chunk7DGKSEIU_js.cn("flex-1", BTN2),
|
|
18577
18577
|
disabled: !canEdit,
|
|
18578
18578
|
onClick: () => onMoveLayer("backward"),
|
|
18579
18579
|
children: "\u2193 Backward"
|
|
@@ -18597,7 +18597,7 @@ function ArtisticEffectsGallery({
|
|
|
18597
18597
|
{
|
|
18598
18598
|
type: "button",
|
|
18599
18599
|
disabled: !canEdit,
|
|
18600
|
-
className:
|
|
18600
|
+
className: chunk7DGKSEIU_js.cn(
|
|
18601
18601
|
"flex flex-col items-center gap-0.5 rounded border p-0.5 hover:bg-accent/50",
|
|
18602
18602
|
isActive ? "border-primary bg-primary/10" : "border-border"
|
|
18603
18603
|
),
|
|
@@ -18659,7 +18659,7 @@ function ColorChangeSection({
|
|
|
18659
18659
|
DebouncedColorInput,
|
|
18660
18660
|
{
|
|
18661
18661
|
disabled: !canEdit,
|
|
18662
|
-
value:
|
|
18662
|
+
value: chunk7DGKSEIU_js.normalizeHexColor(cc.clrFrom, "#ffffff"),
|
|
18663
18663
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
18664
18664
|
onCommit: (hex) => updateEffects({
|
|
18665
18665
|
clrChange: {
|
|
@@ -18677,7 +18677,7 @@ function ColorChangeSection({
|
|
|
18677
18677
|
DebouncedColorInput,
|
|
18678
18678
|
{
|
|
18679
18679
|
disabled: !canEdit || Boolean(cc.clrToTransparent),
|
|
18680
|
-
value:
|
|
18680
|
+
value: chunk7DGKSEIU_js.normalizeHexColor(cc.clrTo, "#000000"),
|
|
18681
18681
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
18682
18682
|
onCommit: (hex) => updateEffects({
|
|
18683
18683
|
clrChange: {
|
|
@@ -18737,7 +18737,7 @@ function ColorWashSection({
|
|
|
18737
18737
|
DebouncedColorInput,
|
|
18738
18738
|
{
|
|
18739
18739
|
disabled: !canEdit,
|
|
18740
|
-
value:
|
|
18740
|
+
value: chunk7DGKSEIU_js.normalizeHexColor(wash.color, "#0066cc"),
|
|
18741
18741
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
18742
18742
|
onCommit: (hex) => updateEffects({
|
|
18743
18743
|
colorWash: { color: hex, opacity: wash.opacity ?? 40 }
|
|
@@ -18840,8 +18840,8 @@ function DuotonePanel({
|
|
|
18840
18840
|
}
|
|
18841
18841
|
});
|
|
18842
18842
|
}, [effects, onUpdateElement]);
|
|
18843
|
-
const shadowColor =
|
|
18844
|
-
const highlightColor =
|
|
18843
|
+
const shadowColor = chunk7DGKSEIU_js.normalizeHexColor(effects?.duotone?.color1, "#000000");
|
|
18844
|
+
const highlightColor = chunk7DGKSEIU_js.normalizeHexColor(effects?.duotone?.color2, "#ffffff");
|
|
18845
18845
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px]", children: [
|
|
18846
18846
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground font-medium", children: t("pptx.image.duotone") }),
|
|
18847
18847
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
@@ -18872,7 +18872,7 @@ function DuotonePanel({
|
|
|
18872
18872
|
] }),
|
|
18873
18873
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
18874
18874
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground text-[10px]", children: t("pptx.image.duotonePresets") }),
|
|
18875
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children:
|
|
18875
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: chunkTVSTM5J5_js.DUOTONE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
18876
18876
|
"button",
|
|
18877
18877
|
{
|
|
18878
18878
|
type: "button",
|
|
@@ -19010,7 +19010,7 @@ function ImageCropSection({
|
|
|
19010
19010
|
onUpdateElement
|
|
19011
19011
|
}) {
|
|
19012
19012
|
const { t } = reactI18next.useTranslation();
|
|
19013
|
-
if (!(0,
|
|
19013
|
+
if (!(0, chunk7DGKSEIU_js.dist_exports.isImageLikeElement)(selectedElement)) {
|
|
19014
19014
|
return null;
|
|
19015
19015
|
}
|
|
19016
19016
|
const croppable = pptx.cropResetState(selectedElement, canEdit, true).enabled;
|
|
@@ -19027,7 +19027,7 @@ function ImageCropSection({
|
|
|
19027
19027
|
max: MAX_CROP_PERCENT,
|
|
19028
19028
|
disabled: !croppable,
|
|
19029
19029
|
className: "accent-primary",
|
|
19030
|
-
value: Math.round(
|
|
19030
|
+
value: Math.round(chunk7DGKSEIU_js.clampCropValue(selectedElement[key]) * 100),
|
|
19031
19031
|
onChange: (e) => onUpdateElement({
|
|
19032
19032
|
[key]: Number(e.target.value) / 100
|
|
19033
19033
|
})
|
|
@@ -19091,7 +19091,7 @@ function ImagePropertiesPanel({
|
|
|
19091
19091
|
{
|
|
19092
19092
|
rows: 2,
|
|
19093
19093
|
disabled: !canEdit,
|
|
19094
|
-
className:
|
|
19094
|
+
className: chunk7DGKSEIU_js.cn(INPUT2, "resize-none text-[11px]"),
|
|
19095
19095
|
value: selectedElement.altText ?? "",
|
|
19096
19096
|
onChange: (e) => onUpdateElement({
|
|
19097
19097
|
altText: e.target.value
|
|
@@ -20031,7 +20031,7 @@ function AccessibilityTextSection({
|
|
|
20031
20031
|
rows: 2,
|
|
20032
20032
|
disabled: !canEdit,
|
|
20033
20033
|
placeholder: t("pptx.elementAccessibility.altTextPlaceholder"),
|
|
20034
|
-
className:
|
|
20034
|
+
className: chunk7DGKSEIU_js.cn(INPUT2, "resize-none text-[11px]"),
|
|
20035
20035
|
value: fields.altText,
|
|
20036
20036
|
onChange: (e) => onUpdateElement({ altText: e.target.value })
|
|
20037
20037
|
}
|
|
@@ -20045,7 +20045,7 @@ function AccessibilityTextSection({
|
|
|
20045
20045
|
type: "text",
|
|
20046
20046
|
disabled: !canEdit,
|
|
20047
20047
|
placeholder: t("pptx.elementAccessibility.titlePlaceholder"),
|
|
20048
|
-
className:
|
|
20048
|
+
className: chunk7DGKSEIU_js.cn(INPUT2, "text-[11px]"),
|
|
20049
20049
|
value: fields.title,
|
|
20050
20050
|
onChange: (e) => onUpdateElement({ title: e.target.value })
|
|
20051
20051
|
}
|
|
@@ -20161,7 +20161,7 @@ var SHADOW_EFFECT_CONFIGS = [
|
|
|
20161
20161
|
angle = (Math.atan2(offsetY, offsetX) * 180 / Math.PI + 360) % 360;
|
|
20162
20162
|
}
|
|
20163
20163
|
return {
|
|
20164
|
-
shadowColor:
|
|
20164
|
+
shadowColor: chunk7DGKSEIU_js.normalizeHexColor(s?.shadowColor, "#000000"),
|
|
20165
20165
|
shadowOpacity: s?.shadowOpacity ?? 0.35,
|
|
20166
20166
|
shadowBlur: s?.shadowBlur ?? 6,
|
|
20167
20167
|
shadowAngle: angle,
|
|
@@ -20177,7 +20177,7 @@ var SHADOW_EFFECT_CONFIGS = [
|
|
|
20177
20177
|
key: "sc",
|
|
20178
20178
|
label: "Shadow Color",
|
|
20179
20179
|
type: "color",
|
|
20180
|
-
read: (s) =>
|
|
20180
|
+
read: (s) => chunk7DGKSEIU_js.normalizeHexColor(s?.shadowColor, "#000000"),
|
|
20181
20181
|
write: (v) => ({ shadowColor: String(v) })
|
|
20182
20182
|
},
|
|
20183
20183
|
{
|
|
@@ -20313,7 +20313,7 @@ var SHADOW_EFFECT_CONFIGS = [
|
|
|
20313
20313
|
label: "Inner Shadow",
|
|
20314
20314
|
isOn: (s) => Boolean(s?.innerShadowColor) && s?.innerShadowColor !== "transparent",
|
|
20315
20315
|
onEnable: (s) => ({
|
|
20316
|
-
innerShadowColor:
|
|
20316
|
+
innerShadowColor: chunk7DGKSEIU_js.normalizeHexColor(s?.innerShadowColor, "#000000"),
|
|
20317
20317
|
innerShadowOpacity: s?.innerShadowOpacity ?? 0.5,
|
|
20318
20318
|
innerShadowBlur: s?.innerShadowBlur ?? 5,
|
|
20319
20319
|
innerShadowOffsetX: s?.innerShadowOffsetX ?? 0,
|
|
@@ -20325,7 +20325,7 @@ var SHADOW_EFFECT_CONFIGS = [
|
|
|
20325
20325
|
key: "isc",
|
|
20326
20326
|
label: "Color",
|
|
20327
20327
|
type: "color",
|
|
20328
|
-
read: (s) =>
|
|
20328
|
+
read: (s) => chunk7DGKSEIU_js.normalizeHexColor(s?.innerShadowColor, "#000000"),
|
|
20329
20329
|
write: (v) => ({ innerShadowColor: String(v) })
|
|
20330
20330
|
},
|
|
20331
20331
|
{
|
|
@@ -20835,7 +20835,7 @@ function ColorPickerRow({
|
|
|
20835
20835
|
pushColor(color);
|
|
20836
20836
|
};
|
|
20837
20837
|
const handleEyedropper = async () => {
|
|
20838
|
-
const color = await
|
|
20838
|
+
const color = await chunk7DGKSEIU_js.openNativeEyeDropper();
|
|
20839
20839
|
if (color) {
|
|
20840
20840
|
commit(color);
|
|
20841
20841
|
}
|
|
@@ -20918,9 +20918,9 @@ function GradientStopRow({
|
|
|
20918
20918
|
"input",
|
|
20919
20919
|
{
|
|
20920
20920
|
type: "color",
|
|
20921
|
-
value:
|
|
20921
|
+
value: chunk7DGKSEIU_js.normalizeHexColor(stop2.color, "#3b82f6"),
|
|
20922
20922
|
onChange: (e) => {
|
|
20923
|
-
const hex =
|
|
20923
|
+
const hex = chunk7DGKSEIU_js.normalizeHexColor(e.target.value, "#3b82f6");
|
|
20924
20924
|
patchStop({ color: hex, colorRef: void 0 });
|
|
20925
20925
|
pushColor(hex);
|
|
20926
20926
|
},
|
|
@@ -21045,7 +21045,7 @@ function FillAdvancedControls({
|
|
|
21045
21045
|
onClick: () => onUpdateGradientStops([
|
|
21046
21046
|
...gradientStops,
|
|
21047
21047
|
{
|
|
21048
|
-
color:
|
|
21048
|
+
color: chunk7DGKSEIU_js.normalizeHexColor(style?.fillColor, chunk7DGKSEIU_js.DEFAULT_FILL_COLOR),
|
|
21049
21049
|
position: 50,
|
|
21050
21050
|
opacity: 1
|
|
21051
21051
|
}
|
|
@@ -21059,9 +21059,9 @@ function FillAdvancedControls({
|
|
|
21059
21059
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${COL2} flex flex-col gap-2`, children: [
|
|
21060
21060
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: "Pattern" }),
|
|
21061
21061
|
/* @__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) => {
|
|
21062
|
-
const fgColor =
|
|
21063
|
-
const bgColor =
|
|
21064
|
-
const svgPattern =
|
|
21062
|
+
const fgColor = chunk7DGKSEIU_js.normalizeHexColor(style?.fillColor, chunk7DGKSEIU_js.DEFAULT_FILL_COLOR);
|
|
21063
|
+
const bgColor = chunk7DGKSEIU_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff");
|
|
21064
|
+
const svgPattern = chunk7DGKSEIU_js.getPatternSvg(opt.value, fgColor, bgColor);
|
|
21065
21065
|
const isSelected = (style.fillPatternPreset || "pct20") === opt.value;
|
|
21066
21066
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
21067
21067
|
"button",
|
|
@@ -21094,7 +21094,7 @@ function FillAdvancedControls({
|
|
|
21094
21094
|
{
|
|
21095
21095
|
label: t("pptx.fillAdvanced.foregroundColor"),
|
|
21096
21096
|
prefix: "pattern-fg",
|
|
21097
|
-
value:
|
|
21097
|
+
value: chunk7DGKSEIU_js.normalizeHexColor(style?.fillColor, chunk7DGKSEIU_js.DEFAULT_FILL_COLOR),
|
|
21098
21098
|
disabled: isLine,
|
|
21099
21099
|
onChange: (color) => onUpdateShapeStyle({ fillMode: "pattern", fillColor: color })
|
|
21100
21100
|
}
|
|
@@ -21104,7 +21104,7 @@ function FillAdvancedControls({
|
|
|
21104
21104
|
{
|
|
21105
21105
|
label: t("pptx.fillAdvanced.backgroundColor"),
|
|
21106
21106
|
prefix: "pattern-bg",
|
|
21107
|
-
value:
|
|
21107
|
+
value: chunk7DGKSEIU_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff"),
|
|
21108
21108
|
disabled: isLine,
|
|
21109
21109
|
onChange: (color) => onUpdateShapeStyle({
|
|
21110
21110
|
fillMode: "pattern",
|
|
@@ -21171,11 +21171,11 @@ function QuickStylesGallery({
|
|
|
21171
21171
|
onUpdateShapeStyle
|
|
21172
21172
|
}) {
|
|
21173
21173
|
const { t } = reactI18next.useTranslation();
|
|
21174
|
-
const { viewportWidth } =
|
|
21174
|
+
const { viewportWidth } = chunkTVSTM5J5_js.useIsMobile();
|
|
21175
21175
|
const swatchMinHeight = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
21176
21176
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
21177
21177
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: t("pptx.shape.quickStyles") }),
|
|
21178
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-6 gap-1", children:
|
|
21178
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-6 gap-1", children: chunk7DGKSEIU_js.SHAPE_QUICK_STYLES.map((qs, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
21179
21179
|
"button",
|
|
21180
21180
|
{
|
|
21181
21181
|
type: "button",
|
|
@@ -21202,7 +21202,7 @@ function StrokeEffectsSection({
|
|
|
21202
21202
|
{
|
|
21203
21203
|
label: t("pptx.inspector.stroke"),
|
|
21204
21204
|
prefix: "stroke",
|
|
21205
|
-
value:
|
|
21205
|
+
value: chunk7DGKSEIU_js.normalizeHexColor(style?.strokeColor, chunk7DGKSEIU_js.DEFAULT_STROKE_COLOR),
|
|
21206
21206
|
selectedRef: style?.strokeColorRef,
|
|
21207
21207
|
onChange: onSetStrokeColor
|
|
21208
21208
|
}
|
|
@@ -21265,7 +21265,7 @@ function StrokeEffectsSection({
|
|
|
21265
21265
|
strokeDash: e.target.value
|
|
21266
21266
|
}),
|
|
21267
21267
|
className: SEL,
|
|
21268
|
-
children:
|
|
21268
|
+
children: chunk7DGKSEIU_js.STROKE_DASH_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
21269
21269
|
}
|
|
21270
21270
|
)
|
|
21271
21271
|
] }),
|
|
@@ -21355,10 +21355,10 @@ function FillStrokeProperties({
|
|
|
21355
21355
|
return;
|
|
21356
21356
|
}
|
|
21357
21357
|
if (nextMode === "gradient") {
|
|
21358
|
-
const existing =
|
|
21358
|
+
const existing = chunk7DGKSEIU_js.sanitizeGradientStops(style?.fillGradientStops);
|
|
21359
21359
|
const stops = existing.length >= 2 ? existing : [
|
|
21360
21360
|
{
|
|
21361
|
-
color:
|
|
21361
|
+
color: chunk7DGKSEIU_js.normalizeHexColor(style?.fillColor, chunk7DGKSEIU_js.DEFAULT_FILL_COLOR),
|
|
21362
21362
|
position: 0,
|
|
21363
21363
|
opacity: 1
|
|
21364
21364
|
},
|
|
@@ -21383,7 +21383,7 @@ function FillStrokeProperties({
|
|
|
21383
21383
|
onUpdateShapeStyle({ fillMode: "solid" });
|
|
21384
21384
|
};
|
|
21385
21385
|
const gradientStops = selectedGradientStops.length > 0 ? selectedGradientStops : [
|
|
21386
|
-
{ color:
|
|
21386
|
+
{ color: chunk7DGKSEIU_js.DEFAULT_FILL_COLOR, position: 0 },
|
|
21387
21387
|
{ color: "#ffffff", position: 100 }
|
|
21388
21388
|
];
|
|
21389
21389
|
const showGradient = style?.fillMode === "gradient" || selectedGradientStops.length > 0;
|
|
@@ -21410,7 +21410,7 @@ function FillStrokeProperties({
|
|
|
21410
21410
|
{
|
|
21411
21411
|
label: t("pptx.fill.fill"),
|
|
21412
21412
|
prefix: "fill",
|
|
21413
|
-
value:
|
|
21413
|
+
value: chunk7DGKSEIU_js.normalizeHexColor(style?.fillColor, chunk7DGKSEIU_js.DEFAULT_FILL_COLOR),
|
|
21414
21414
|
selectedRef: style?.fillColorRef,
|
|
21415
21415
|
disabled: line,
|
|
21416
21416
|
onChange: onSetFillColor
|
|
@@ -21494,7 +21494,7 @@ function Text3DProperties({
|
|
|
21494
21494
|
"input",
|
|
21495
21495
|
{
|
|
21496
21496
|
type: "color",
|
|
21497
|
-
value:
|
|
21497
|
+
value: chunk7DGKSEIU_js.normalizeHexColor(t3d?.extrusionColor, "#888888"),
|
|
21498
21498
|
onChange: (e) => {
|
|
21499
21499
|
update3d({ extrusionColor: e.target.value });
|
|
21500
21500
|
pushColor(e.target.value);
|
|
@@ -21685,7 +21685,7 @@ function AdvancedTextFormatting({
|
|
|
21685
21685
|
"input",
|
|
21686
21686
|
{
|
|
21687
21687
|
type: "color",
|
|
21688
|
-
value:
|
|
21688
|
+
value: chunk7DGKSEIU_js.normalizeHexColor(ts?.highlightColor, "#ffff00"),
|
|
21689
21689
|
onChange: (e) => {
|
|
21690
21690
|
onUpdateTextStyle({ highlightColor: e.target.value });
|
|
21691
21691
|
pushColor(e.target.value);
|
|
@@ -21989,7 +21989,7 @@ function TextEffectsPanel({
|
|
|
21989
21989
|
"input",
|
|
21990
21990
|
{
|
|
21991
21991
|
type: "color",
|
|
21992
|
-
value:
|
|
21992
|
+
value: chunk7DGKSEIU_js.normalizeHexColor(ts?.textShadowColor, "#000000"),
|
|
21993
21993
|
onChange: (e) => {
|
|
21994
21994
|
onUpdateTextStyle({ textShadowColor: e.target.value });
|
|
21995
21995
|
pushColor(e.target.value);
|
|
@@ -22096,7 +22096,7 @@ function TextEffectsPanel({
|
|
|
22096
22096
|
"input",
|
|
22097
22097
|
{
|
|
22098
22098
|
type: "color",
|
|
22099
|
-
value:
|
|
22099
|
+
value: chunk7DGKSEIU_js.normalizeHexColor(ts?.textGlowColor, "#ffff00"),
|
|
22100
22100
|
onChange: (e) => {
|
|
22101
22101
|
onUpdateTextStyle({ textGlowColor: e.target.value });
|
|
22102
22102
|
pushColor(e.target.value);
|
|
@@ -22195,7 +22195,7 @@ function TextAdvancedSections({
|
|
|
22195
22195
|
canEdit,
|
|
22196
22196
|
onUpdateTextStyle
|
|
22197
22197
|
}) {
|
|
22198
|
-
if (!(0,
|
|
22198
|
+
if (!(0, chunk7DGKSEIU_js.dist_exports.hasTextProperties)(selectedElement)) {
|
|
22199
22199
|
return null;
|
|
22200
22200
|
}
|
|
22201
22201
|
const ts = selectedElement.textStyle;
|
|
@@ -22224,22 +22224,22 @@ function ShapeTextPanels({
|
|
|
22224
22224
|
}) {
|
|
22225
22225
|
const { t } = reactI18next.useTranslation();
|
|
22226
22226
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
22227
|
-
(0,
|
|
22227
|
+
(0, chunk7DGKSEIU_js.dist_exports.hasShapeProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
22228
22228
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.shape.type", "Shape Type") }),
|
|
22229
22229
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22230
22230
|
WebSelect,
|
|
22231
22231
|
{
|
|
22232
22232
|
value: selectedElement.shapeType || "rect",
|
|
22233
22233
|
disabled: !canEdit,
|
|
22234
|
-
className:
|
|
22234
|
+
className: chunk7DGKSEIU_js.cn(INPUT2, "w-full"),
|
|
22235
22235
|
onChange: (e) => onUpdateElement({
|
|
22236
22236
|
shapeType: e.target.value
|
|
22237
22237
|
}),
|
|
22238
|
-
children:
|
|
22238
|
+
children: chunk7DGKSEIU_js.SHAPE_PRESETS.filter((p) => p.type !== "connector").map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.type, children: t(p.i18nKey) }, p.type))
|
|
22239
22239
|
}
|
|
22240
22240
|
)
|
|
22241
22241
|
] }),
|
|
22242
|
-
(0,
|
|
22242
|
+
(0, chunk7DGKSEIU_js.dist_exports.hasShapeProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, "data-pptx-fill-stroke": true, "data-pptx-inspector-section": "fill-stroke", children: [
|
|
22243
22243
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.shape.fillStroke", "Fill & Stroke") }),
|
|
22244
22244
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22245
22245
|
FillStrokeProperties,
|
|
@@ -22247,7 +22247,7 @@ function ShapeTextPanels({
|
|
|
22247
22247
|
selectedElement,
|
|
22248
22248
|
selectedShapeStyle: selectedElement.shapeStyle,
|
|
22249
22249
|
selectedShapeType: selectedElement.shapeType,
|
|
22250
|
-
selectedGradientStops:
|
|
22250
|
+
selectedGradientStops: chunk7DGKSEIU_js.sanitizeGradientStops(
|
|
22251
22251
|
selectedElement.shapeStyle?.fillGradientStops
|
|
22252
22252
|
),
|
|
22253
22253
|
canEdit,
|
|
@@ -22257,7 +22257,7 @@ function ShapeTextPanels({
|
|
|
22257
22257
|
}
|
|
22258
22258
|
)
|
|
22259
22259
|
] }),
|
|
22260
|
-
(0,
|
|
22260
|
+
(0, chunk7DGKSEIU_js.dist_exports.hasTextProperties)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, "data-pptx-text-card": true, children: [
|
|
22261
22261
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.text.title", "Text") }),
|
|
22262
22262
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-1.5 text-[11px]", children: [
|
|
22263
22263
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -22283,7 +22283,7 @@ function ShapeTextPanels({
|
|
|
22283
22283
|
{
|
|
22284
22284
|
disabled: !canEdit,
|
|
22285
22285
|
ariaLabel: "Text Color",
|
|
22286
|
-
value:
|
|
22286
|
+
value: chunk7DGKSEIU_js.normalizeHexColor(selectedElement.textStyle?.color, "#000000"),
|
|
22287
22287
|
className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
|
|
22288
22288
|
onCommit: (hex) => onUpdateTextStyle({ color: hex, colorRef: void 0 })
|
|
22289
22289
|
}
|
|
@@ -22375,7 +22375,7 @@ function TextFormatToggle({
|
|
|
22375
22375
|
{
|
|
22376
22376
|
type: "button",
|
|
22377
22377
|
disabled,
|
|
22378
|
-
className:
|
|
22378
|
+
className: chunk7DGKSEIU_js.cn(
|
|
22379
22379
|
"px-2 py-1 rounded text-[11px] transition-colors max-md:min-w-[44px]! max-md:min-h-[44px]!",
|
|
22380
22380
|
italic && "italic",
|
|
22381
22381
|
underline && "underline",
|
|
@@ -22533,7 +22533,7 @@ var THUMB_COMPONENTS = {
|
|
|
22533
22533
|
chevron: ChevronThumb,
|
|
22534
22534
|
bending: BendingThumb
|
|
22535
22535
|
};
|
|
22536
|
-
var LAYOUT_DESCRIPTORS =
|
|
22536
|
+
var LAYOUT_DESCRIPTORS = chunk7DGKSEIU_js.dist_exports.SWITCHABLE_LAYOUT_TYPES.map((type) => ({
|
|
22537
22537
|
type,
|
|
22538
22538
|
i18nKey: `pptx.smartart.category.${type}`
|
|
22539
22539
|
}));
|
|
@@ -22561,7 +22561,7 @@ function SmartArtLayoutSwitcher({
|
|
|
22561
22561
|
type: "button",
|
|
22562
22562
|
"data-testid": `smartart-layout-${type}`,
|
|
22563
22563
|
disabled: !canEdit,
|
|
22564
|
-
className:
|
|
22564
|
+
className: chunk7DGKSEIU_js.cn(
|
|
22565
22565
|
"flex flex-col items-center gap-0.5 rounded border p-1.5 transition-colors",
|
|
22566
22566
|
"text-[9px] leading-tight",
|
|
22567
22567
|
isActive ? "border-primary bg-primary/15 text-primary" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
@@ -22640,7 +22640,7 @@ function SmartArtNodeStyleControls({
|
|
|
22640
22640
|
disabled: !canEdit,
|
|
22641
22641
|
"aria-label": `Bold ${label}`,
|
|
22642
22642
|
"aria-pressed": bold,
|
|
22643
|
-
className:
|
|
22643
|
+
className: chunk7DGKSEIU_js.cn(
|
|
22644
22644
|
EMPHASIS_BTN,
|
|
22645
22645
|
"font-bold",
|
|
22646
22646
|
bold ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground"
|
|
@@ -22656,7 +22656,7 @@ function SmartArtNodeStyleControls({
|
|
|
22656
22656
|
disabled: !canEdit,
|
|
22657
22657
|
"aria-label": `Italic ${label}`,
|
|
22658
22658
|
"aria-pressed": italic,
|
|
22659
|
-
className:
|
|
22659
|
+
className: chunk7DGKSEIU_js.cn(
|
|
22660
22660
|
EMPHASIS_BTN,
|
|
22661
22661
|
"italic",
|
|
22662
22662
|
italic ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground"
|
|
@@ -22695,7 +22695,7 @@ function SmartArtNodeRow({
|
|
|
22695
22695
|
"div",
|
|
22696
22696
|
{
|
|
22697
22697
|
role: "listitem",
|
|
22698
|
-
className:
|
|
22698
|
+
className: chunk7DGKSEIU_js.cn(
|
|
22699
22699
|
"rounded border bg-background/60 p-1.5",
|
|
22700
22700
|
isChild ? "border-border/60 ml-4" : "border-border"
|
|
22701
22701
|
),
|
|
@@ -22710,7 +22710,7 @@ function SmartArtNodeRow({
|
|
|
22710
22710
|
"data-testid": "smartart-node-text",
|
|
22711
22711
|
disabled: !canEdit,
|
|
22712
22712
|
"aria-label": label,
|
|
22713
|
-
className:
|
|
22713
|
+
className: chunk7DGKSEIU_js.cn(INPUT2, "flex-1 text-[11px] py-0.5"),
|
|
22714
22714
|
value: text,
|
|
22715
22715
|
onChange: (e) => onChangeText(nodeId, e.target.value),
|
|
22716
22716
|
onKeyDown: (e) => onKeyDown(e, nodeId),
|
|
@@ -22759,7 +22759,7 @@ function SmartArtNodeRow({
|
|
|
22759
22759
|
{
|
|
22760
22760
|
type: "button",
|
|
22761
22761
|
disabled: !canEdit || removeDisabled,
|
|
22762
|
-
className:
|
|
22762
|
+
className: chunk7DGKSEIU_js.cn(MINI_BTN, "hover:text-red-400"),
|
|
22763
22763
|
onClick: () => onRemove(nodeId),
|
|
22764
22764
|
"aria-label": `Remove ${label}`,
|
|
22765
22765
|
title: removeDisabled ? t("pptx.smartArt.layoutMinimum") : t("pptx.smartArt.remove"),
|
|
@@ -22802,7 +22802,7 @@ function SmartArtStyleControls({
|
|
|
22802
22802
|
disabled: !canEdit,
|
|
22803
22803
|
"data-testid": "smartart-color-scheme",
|
|
22804
22804
|
"aria-label": t("pptx.smartart.colorScheme"),
|
|
22805
|
-
className:
|
|
22805
|
+
className: chunk7DGKSEIU_js.cn(INPUT2, "w-full"),
|
|
22806
22806
|
value: colorScheme,
|
|
22807
22807
|
onChange: (e) => onChangeColorScheme(e.target.value),
|
|
22808
22808
|
children: colorSchemes.map((cs) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: cs, children: pptx.schemaLabel(pptx.SMARTART_COLOR_SCHEME_LABEL_KEYS, cs, translate) }, cs))
|
|
@@ -22817,7 +22817,7 @@ function SmartArtStyleControls({
|
|
|
22817
22817
|
type: "button",
|
|
22818
22818
|
disabled: !canEdit,
|
|
22819
22819
|
"aria-pressed": style === s,
|
|
22820
|
-
className:
|
|
22820
|
+
className: chunk7DGKSEIU_js.cn(
|
|
22821
22821
|
"flex-1 px-2 py-1 text-[10px] rounded border transition-colors",
|
|
22822
22822
|
style === s ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground hover:bg-muted"
|
|
22823
22823
|
),
|
|
@@ -22863,7 +22863,7 @@ function SmartArtPropertiesPanel({
|
|
|
22863
22863
|
const reflowed = box ? pptx.rebuildDrawingShapesIfCleared(
|
|
22864
22864
|
newData,
|
|
22865
22865
|
newData.layout,
|
|
22866
|
-
|
|
22866
|
+
chunkTVSTM5J5_js.resolveSmartArtDataPalette(newData),
|
|
22867
22867
|
newData.style ?? "flat",
|
|
22868
22868
|
"inspector",
|
|
22869
22869
|
box
|
|
@@ -22874,10 +22874,10 @@ function SmartArtPropertiesPanel({
|
|
|
22874
22874
|
applySmartArtData({ ...smartArtData, ...patch });
|
|
22875
22875
|
};
|
|
22876
22876
|
const handleUpdateNodeText = (nodeId, text) => {
|
|
22877
|
-
applySmartArtData((0,
|
|
22877
|
+
applySmartArtData((0, chunk7DGKSEIU_js.dist_exports.updateSmartArtNodeText)(smartArtData, nodeId, text));
|
|
22878
22878
|
};
|
|
22879
22879
|
const handleChangeNodeStyle = (nodeId, patch) => {
|
|
22880
|
-
const next = (0,
|
|
22880
|
+
const next = (0, chunk7DGKSEIU_js.dist_exports.setSmartArtNodeStyle)(smartArtData, nodeId, patch);
|
|
22881
22881
|
if (next !== smartArtData) {
|
|
22882
22882
|
applySmartArtData(next);
|
|
22883
22883
|
}
|
|
@@ -22886,17 +22886,17 @@ function SmartArtPropertiesPanel({
|
|
|
22886
22886
|
if (!pptx.canAddTopLevelNode(layout, topLevelCount)) {
|
|
22887
22887
|
return;
|
|
22888
22888
|
}
|
|
22889
|
-
applySmartArtData((0,
|
|
22889
|
+
applySmartArtData((0, chunk7DGKSEIU_js.dist_exports.addSmartArtNodeAsChild)(smartArtData));
|
|
22890
22890
|
};
|
|
22891
22891
|
const addSubItem = (parentId) => {
|
|
22892
|
-
applySmartArtData((0,
|
|
22892
|
+
applySmartArtData((0, chunk7DGKSEIU_js.dist_exports.addSmartArtNodeAsChild)(smartArtData, parentId, "Sub-item"));
|
|
22893
22893
|
};
|
|
22894
22894
|
const removeNode = (nodeId) => {
|
|
22895
22895
|
const isTopLevel = !nodes.find((n) => n.id === nodeId)?.parentId;
|
|
22896
22896
|
if (isTopLevel && !pptx.canRemoveTopLevelNode(layout, topLevelCount)) {
|
|
22897
22897
|
return;
|
|
22898
22898
|
}
|
|
22899
|
-
applySmartArtData((0,
|
|
22899
|
+
applySmartArtData((0, chunk7DGKSEIU_js.dist_exports.removeSmartArtNode)(smartArtData, nodeId));
|
|
22900
22900
|
};
|
|
22901
22901
|
const moveNode = (nodeId, direction) => {
|
|
22902
22902
|
const next = pptx.reorder(smartArtData, nodeId, direction);
|
|
@@ -23052,7 +23052,7 @@ function TableDataGrid({
|
|
|
23052
23052
|
}) {
|
|
23053
23053
|
const { t } = reactI18next.useTranslation();
|
|
23054
23054
|
const grid = pptx.buildTableDataGrid(tableElement);
|
|
23055
|
-
const { viewportWidth } =
|
|
23055
|
+
const { viewportWidth } = chunkTVSTM5J5_js.useIsMobile();
|
|
23056
23056
|
const gridPlan = pptx.getDenseGridLayoutPlan(viewportWidth);
|
|
23057
23057
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
23058
23058
|
const stickyGutterClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10" : "";
|
|
@@ -23464,7 +23464,7 @@ function TableCellColorField({
|
|
|
23464
23464
|
disabled,
|
|
23465
23465
|
onCommit
|
|
23466
23466
|
}) {
|
|
23467
|
-
const hex =
|
|
23467
|
+
const hex = chunk7DGKSEIU_js.normalizeHexColor(value, fallback);
|
|
23468
23468
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
23469
23469
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: label }),
|
|
23470
23470
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -23575,7 +23575,7 @@ function TableCellFormattingPanel({
|
|
|
23575
23575
|
{
|
|
23576
23576
|
type: "button",
|
|
23577
23577
|
disabled: !canEdit,
|
|
23578
|
-
className:
|
|
23578
|
+
className: chunk7DGKSEIU_js.cn(
|
|
23579
23579
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
23580
23580
|
cls,
|
|
23581
23581
|
cs[key] ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
@@ -23594,7 +23594,7 @@ function TableCellFormattingPanel({
|
|
|
23594
23594
|
{
|
|
23595
23595
|
type: "button",
|
|
23596
23596
|
disabled: !canEdit,
|
|
23597
|
-
className:
|
|
23597
|
+
className: chunk7DGKSEIU_js.cn(
|
|
23598
23598
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
23599
23599
|
cs.align === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
23600
23600
|
),
|
|
@@ -23612,7 +23612,7 @@ function TableCellFormattingPanel({
|
|
|
23612
23612
|
{
|
|
23613
23613
|
type: "button",
|
|
23614
23614
|
disabled: !canEdit,
|
|
23615
|
-
className:
|
|
23615
|
+
className: chunk7DGKSEIU_js.cn(
|
|
23616
23616
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
23617
23617
|
cs.vAlign === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
23618
23618
|
),
|
|
@@ -23635,7 +23635,7 @@ function TableCellFormattingPanel({
|
|
|
23635
23635
|
DebouncedColorInput,
|
|
23636
23636
|
{
|
|
23637
23637
|
disabled: !canEdit,
|
|
23638
|
-
value:
|
|
23638
|
+
value: chunk7DGKSEIU_js.normalizeHexColor(cs[colorKey], "#374151"),
|
|
23639
23639
|
className: "w-7 h-6 rounded border border-border bg-transparent cursor-pointer shrink-0",
|
|
23640
23640
|
onCommit: (hex) => updateCellStyle({ [colorKey]: hex })
|
|
23641
23641
|
}
|
|
@@ -23645,7 +23645,7 @@ function TableCellFormattingPanel({
|
|
|
23645
23645
|
{
|
|
23646
23646
|
type: "number",
|
|
23647
23647
|
disabled: !canEdit,
|
|
23648
|
-
className:
|
|
23648
|
+
className: chunk7DGKSEIU_js.cn(INPUT2, "w-14"),
|
|
23649
23649
|
min: 0,
|
|
23650
23650
|
max: 10,
|
|
23651
23651
|
value: cs[widthKey] ?? 1,
|
|
@@ -23661,7 +23661,7 @@ function TableCellFormattingPanel({
|
|
|
23661
23661
|
{
|
|
23662
23662
|
type: "button",
|
|
23663
23663
|
disabled: !canEdit,
|
|
23664
|
-
className:
|
|
23664
|
+
className: chunk7DGKSEIU_js.cn(BTN2, "text-center"),
|
|
23665
23665
|
onClick: () => {
|
|
23666
23666
|
const newRows = pptx.computeMergeCellRight(td, rowIndex, columnIndex);
|
|
23667
23667
|
if (newRows) {
|
|
@@ -23676,7 +23676,7 @@ function TableCellFormattingPanel({
|
|
|
23676
23676
|
{
|
|
23677
23677
|
type: "button",
|
|
23678
23678
|
disabled: !canEdit,
|
|
23679
|
-
className:
|
|
23679
|
+
className: chunk7DGKSEIU_js.cn(BTN2, "text-center"),
|
|
23680
23680
|
onClick: () => {
|
|
23681
23681
|
const newRows = pptx.computeMergeCellDown(td, rowIndex, columnIndex);
|
|
23682
23682
|
if (newRows) {
|
|
@@ -23691,7 +23691,7 @@ function TableCellFormattingPanel({
|
|
|
23691
23691
|
{
|
|
23692
23692
|
type: "button",
|
|
23693
23693
|
disabled: !canEdit,
|
|
23694
|
-
className:
|
|
23694
|
+
className: chunk7DGKSEIU_js.cn(BTN2, "text-center"),
|
|
23695
23695
|
onClick: () => {
|
|
23696
23696
|
const newRows = pptx.computeSplitCell(td, rowIndex, columnIndex);
|
|
23697
23697
|
if (newRows) {
|
|
@@ -23877,7 +23877,7 @@ function TableStyleEditor({
|
|
|
23877
23877
|
const { t } = reactI18next.useTranslation();
|
|
23878
23878
|
const themeColorMap = useThemeColorMap();
|
|
23879
23879
|
const [activeStyleId, setActiveStyleId] = React99.useState(
|
|
23880
|
-
styleId ? (0,
|
|
23880
|
+
styleId ? (0, chunk7DGKSEIU_js.dist_exports.normalizeTableStyleGuid)(styleId) : ""
|
|
23881
23881
|
);
|
|
23882
23882
|
const [selectedPart, setSelectedPart] = React99.useState("wholeTbl");
|
|
23883
23883
|
const entry = activeStyleId ? styleMap?.[activeStyleId] : void 0;
|
|
@@ -23898,8 +23898,8 @@ function TableStyleEditor({
|
|
|
23898
23898
|
return;
|
|
23899
23899
|
}
|
|
23900
23900
|
const nextMap = { ...styleMap ?? {} };
|
|
23901
|
-
const created = (0,
|
|
23902
|
-
(0,
|
|
23901
|
+
const created = (0, chunk7DGKSEIU_js.dist_exports.createTableStyleEntry)(nextMap, { styleName: name, basedOn: entry });
|
|
23902
|
+
(0, chunk7DGKSEIU_js.dist_exports.addTableStyleToMap)(nextMap, created);
|
|
23903
23903
|
onStyleMapChange(nextMap);
|
|
23904
23904
|
setActiveStyleId(created.styleId);
|
|
23905
23905
|
onAssignStyle?.(created.styleId);
|
|
@@ -23909,7 +23909,7 @@ function TableStyleEditor({
|
|
|
23909
23909
|
return;
|
|
23910
23910
|
}
|
|
23911
23911
|
const nextMap = { ...styleMap };
|
|
23912
|
-
(0,
|
|
23912
|
+
(0, chunk7DGKSEIU_js.dist_exports.deleteTableStyleFromMap)(nextMap, entry.styleId);
|
|
23913
23913
|
onStyleMapChange(nextMap);
|
|
23914
23914
|
onDeleteStyle(entry.styleId);
|
|
23915
23915
|
onClose();
|
|
@@ -23963,7 +23963,7 @@ function TablePropertiesPanel({
|
|
|
23963
23963
|
const updateMergeRows = (rows) => {
|
|
23964
23964
|
const tableData = { ...td, rows };
|
|
23965
23965
|
const updates = { tableData };
|
|
23966
|
-
const rawXml = (0,
|
|
23966
|
+
const rawXml = (0, chunk7DGKSEIU_js.dist_exports.updateMergeAttrsInRawXml)(tableElement, tableData);
|
|
23967
23967
|
if (rawXml) {
|
|
23968
23968
|
updates.rawXml = rawXml;
|
|
23969
23969
|
}
|
|
@@ -24029,7 +24029,7 @@ function TablePropertiesPanel({
|
|
|
24029
24029
|
] }),
|
|
24030
24030
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
24031
24031
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.table.stylePresets") }),
|
|
24032
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children:
|
|
24032
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children: chunk7DGKSEIU_js.TABLE_STYLE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
24033
24033
|
"button",
|
|
24034
24034
|
{
|
|
24035
24035
|
type: "button",
|
|
@@ -24257,7 +24257,7 @@ function ElementInspectorBody({
|
|
|
24257
24257
|
box: { width: selectedElement.width, height: selectedElement.height }
|
|
24258
24258
|
}
|
|
24259
24259
|
),
|
|
24260
|
-
(0,
|
|
24260
|
+
(0, chunk7DGKSEIU_js.dist_exports.isImageLikeElement)(selectedElement) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
24261
24261
|
ImagePropertiesPanel,
|
|
24262
24262
|
{
|
|
24263
24263
|
selectedElement,
|
|
@@ -24422,7 +24422,7 @@ function CommentMentionTextarea({
|
|
|
24422
24422
|
"data-testid": "pptx-comment-mention-option",
|
|
24423
24423
|
role: "option",
|
|
24424
24424
|
"aria-selected": index === safeHighlighted,
|
|
24425
|
-
className:
|
|
24425
|
+
className: chunk7DGKSEIU_js.cn(
|
|
24426
24426
|
"block w-full px-2 py-1 text-left text-[11px] hover:bg-accent",
|
|
24427
24427
|
index === safeHighlighted && "bg-accent"
|
|
24428
24428
|
),
|
|
@@ -24545,7 +24545,7 @@ function InspectorCommentRow({
|
|
|
24545
24545
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
24546
24546
|
"div",
|
|
24547
24547
|
{
|
|
24548
|
-
className:
|
|
24548
|
+
className: chunk7DGKSEIU_js.cn(
|
|
24549
24549
|
"rounded border border-border bg-card p-2",
|
|
24550
24550
|
depth > 0 && "ml-3 border-l-2 border-l-primary/40"
|
|
24551
24551
|
),
|
|
@@ -24558,7 +24558,7 @@ function InspectorCommentRow({
|
|
|
24558
24558
|
t("pptx.comments.resolved")
|
|
24559
24559
|
] })
|
|
24560
24560
|
] }),
|
|
24561
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children:
|
|
24561
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children: chunk7DGKSEIU_js.formatCommentTimestamp(comment.createdAt) })
|
|
24562
24562
|
] }),
|
|
24563
24563
|
comment.elementId && (targetElement ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
24564
24564
|
"button",
|
|
@@ -24566,12 +24566,12 @@ function InspectorCommentRow({
|
|
|
24566
24566
|
type: "button",
|
|
24567
24567
|
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",
|
|
24568
24568
|
title: t("pptx.comments.commentingOn", {
|
|
24569
|
-
element:
|
|
24569
|
+
element: chunk7DGKSEIU_js.getElementLabel(targetElement)
|
|
24570
24570
|
}),
|
|
24571
24571
|
onClick: () => onSelectElement(targetElement.id),
|
|
24572
24572
|
children: [
|
|
24573
24573
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
|
|
24574
|
-
|
|
24574
|
+
chunk7DGKSEIU_js.getElementLabel(targetElement)
|
|
24575
24575
|
]
|
|
24576
24576
|
}
|
|
24577
24577
|
) : /* @__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") })),
|
|
@@ -24640,7 +24640,7 @@ function InspectorCommentRow({
|
|
|
24640
24640
|
"button",
|
|
24641
24641
|
{
|
|
24642
24642
|
type: "button",
|
|
24643
|
-
className:
|
|
24643
|
+
className: chunk7DGKSEIU_js.cn(
|
|
24644
24644
|
"inline-flex items-center justify-center p-1.5 border-l border-border transition-colors",
|
|
24645
24645
|
comment.resolved ? "bg-green-900/40 text-green-300 hover:bg-green-900/60" : "hover:bg-accent text-foreground hover:text-foreground"
|
|
24646
24646
|
),
|
|
@@ -24783,7 +24783,7 @@ function InspectorCommentsSection({
|
|
|
24783
24783
|
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: [
|
|
24784
24784
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
|
|
24785
24785
|
t("pptx.comments.commentingOn", {
|
|
24786
|
-
element:
|
|
24786
|
+
element: chunk7DGKSEIU_js.getElementLabel(selectedElement)
|
|
24787
24787
|
})
|
|
24788
24788
|
] }),
|
|
24789
24789
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -24794,7 +24794,7 @@ function InspectorCommentsSection({
|
|
|
24794
24794
|
authors: commentAuthors,
|
|
24795
24795
|
rows: 2,
|
|
24796
24796
|
placeholder: selectedElement ? t("pptx.comments.addOnElement", {
|
|
24797
|
-
element:
|
|
24797
|
+
element: chunk7DGKSEIU_js.getElementLabel(selectedElement)
|
|
24798
24798
|
}) : t("pptx.comments.addPlaceholder"),
|
|
24799
24799
|
className: "w-full bg-muted border border-border rounded px-2 py-1 text-xs resize-y outline-none focus:border-primary",
|
|
24800
24800
|
onChange: onSetCommentDraft,
|
|
@@ -24807,7 +24807,7 @@ function InspectorCommentsSection({
|
|
|
24807
24807
|
type: "button",
|
|
24808
24808
|
onClick: onAddComment,
|
|
24809
24809
|
disabled: !commentDraft.trim(),
|
|
24810
|
-
className:
|
|
24810
|
+
className: chunk7DGKSEIU_js.cn(
|
|
24811
24811
|
"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]!",
|
|
24812
24812
|
commentDraft.trim() ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
|
|
24813
24813
|
),
|
|
@@ -24821,7 +24821,7 @@ function InspectorCommentsSection({
|
|
|
24821
24821
|
] });
|
|
24822
24822
|
}
|
|
24823
24823
|
function elementLabel(element) {
|
|
24824
|
-
const text = (0,
|
|
24824
|
+
const text = (0, chunk7DGKSEIU_js.dist_exports.hasTextProperties)(element) ? (element.text || "").slice(0, 24) : void 0;
|
|
24825
24825
|
return text || element.type;
|
|
24826
24826
|
}
|
|
24827
24827
|
function InspectorElementsTab({
|
|
@@ -24848,13 +24848,13 @@ function InspectorElementsTab({
|
|
|
24848
24848
|
};
|
|
24849
24849
|
if (!activeSlide) {
|
|
24850
24850
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
24851
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
24851
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk7DGKSEIU_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
|
|
24852
24852
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground italic", children: t("pptx.inspector.noSlideSelected") })
|
|
24853
24853
|
] });
|
|
24854
24854
|
}
|
|
24855
24855
|
const elements = activeSlide.elements || [];
|
|
24856
24856
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", "data-pptx-elements-tab": true, children: [
|
|
24857
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
24857
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk7DGKSEIU_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
|
|
24858
24858
|
[...elements].reverse().map((el, reversedIndex) => {
|
|
24859
24859
|
const index = elements.length - 1 - reversedIndex;
|
|
24860
24860
|
const selected = selectedElementId === el.id || selectedElementIds.includes(el.id);
|
|
@@ -24862,7 +24862,7 @@ function InspectorElementsTab({
|
|
|
24862
24862
|
"div",
|
|
24863
24863
|
{
|
|
24864
24864
|
title: `${el.type} - ${el.id}`,
|
|
24865
|
-
className:
|
|
24865
|
+
className: chunk7DGKSEIU_js.cn(
|
|
24866
24866
|
"flex items-center gap-2 px-2 py-1 rounded cursor-pointer transition-colors",
|
|
24867
24867
|
selected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground"
|
|
24868
24868
|
),
|
|
@@ -24899,7 +24899,7 @@ function InspectorPaneHeader({
|
|
|
24899
24899
|
onClose
|
|
24900
24900
|
}) {
|
|
24901
24901
|
const { t } = reactI18next.useTranslation();
|
|
24902
|
-
const { viewportWidth } =
|
|
24902
|
+
const { viewportWidth } = chunkTVSTM5J5_js.useIsMobile();
|
|
24903
24903
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
24904
24904
|
const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
24905
24905
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -24922,7 +24922,7 @@ function InspectorPaneHeader({
|
|
|
24922
24922
|
type: "button",
|
|
24923
24923
|
title: t(labelKey),
|
|
24924
24924
|
style: touchBtnStyle,
|
|
24925
|
-
className:
|
|
24925
|
+
className: chunk7DGKSEIU_js.cn(
|
|
24926
24926
|
"flex items-center justify-center gap-1 px-2 py-1 rounded text-[11px] transition-colors",
|
|
24927
24927
|
activeTab === key ? "bg-primary text-white" : "text-muted-foreground hover:text-foreground hover:bg-accent"
|
|
24928
24928
|
),
|
|
@@ -25036,7 +25036,7 @@ function CustomPropertiesBlock({
|
|
|
25036
25036
|
"button",
|
|
25037
25037
|
{
|
|
25038
25038
|
type: "button",
|
|
25039
|
-
className:
|
|
25039
|
+
className: chunk7DGKSEIU_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
|
|
25040
25040
|
onClick: () => onUpdate(customProperties.filter((_, i) => i !== index)),
|
|
25041
25041
|
children: "\xD7"
|
|
25042
25042
|
}
|
|
@@ -25364,7 +25364,7 @@ function PresentationSettingsCard({
|
|
|
25364
25364
|
min: 1,
|
|
25365
25365
|
max: 16,
|
|
25366
25366
|
disabled: !canEdit,
|
|
25367
|
-
className:
|
|
25367
|
+
className: chunk7DGKSEIU_js.cn(INPUT2, "w-20"),
|
|
25368
25368
|
value: pptx.printPropertiesSlidesPerPage(presentationProperties.printProperties),
|
|
25369
25369
|
onChange: (e) => onUpdate({
|
|
25370
25370
|
printProperties: pptx.withSlidesPerPage(
|
|
@@ -25452,14 +25452,14 @@ function SlideThemeOverridePanel({
|
|
|
25452
25452
|
const translate = React99.useCallback((key) => t(key), [t]);
|
|
25453
25453
|
const override = activeSlide?.clrMapOverride;
|
|
25454
25454
|
const isOverrideActive = override !== void 0;
|
|
25455
|
-
const targetSlotOptions = React99.useMemo(() => [...
|
|
25455
|
+
const targetSlotOptions = React99.useMemo(() => [...chunk7DGKSEIU_js.dist_exports.THEME_COLOR_SCHEME_KEYS], []);
|
|
25456
25456
|
const commitOverride = React99.useCallback(
|
|
25457
25457
|
(nextOverride) => {
|
|
25458
25458
|
if (!activeSlide || !theme?.colorScheme) {
|
|
25459
25459
|
onUpdateSlide({ clrMapOverride: nextOverride });
|
|
25460
25460
|
return;
|
|
25461
25461
|
}
|
|
25462
|
-
const nextSlide = (0,
|
|
25462
|
+
const nextSlide = (0, chunk7DGKSEIU_js.dist_exports.applyThemeOverrideToSlide)(activeSlide, theme.colorScheme, nextOverride);
|
|
25463
25463
|
onUpdateSlide({
|
|
25464
25464
|
clrMapOverride: nextSlide.clrMapOverride,
|
|
25465
25465
|
backgroundColor: nextSlide.backgroundColor,
|
|
@@ -25472,8 +25472,8 @@ function SlideThemeOverridePanel({
|
|
|
25472
25472
|
(enabled) => {
|
|
25473
25473
|
if (enabled) {
|
|
25474
25474
|
const defaultMap = {};
|
|
25475
|
-
for (const key of
|
|
25476
|
-
defaultMap[key] =
|
|
25475
|
+
for (const key of chunk7DGKSEIU_js.dist_exports.COLOR_MAP_ALIAS_KEYS) {
|
|
25476
|
+
defaultMap[key] = chunk7DGKSEIU_js.dist_exports.DEFAULT_COLOR_MAP[key];
|
|
25477
25477
|
}
|
|
25478
25478
|
commitOverride(defaultMap);
|
|
25479
25479
|
} else {
|
|
@@ -25486,9 +25486,9 @@ function SlideThemeOverridePanel({
|
|
|
25486
25486
|
(alias, targetSlot) => {
|
|
25487
25487
|
const current = override ?? {};
|
|
25488
25488
|
const next = { ...current, [alias]: targetSlot };
|
|
25489
|
-
for (const key of
|
|
25489
|
+
for (const key of chunk7DGKSEIU_js.dist_exports.COLOR_MAP_ALIAS_KEYS) {
|
|
25490
25490
|
if (!next[key]) {
|
|
25491
|
-
next[key] =
|
|
25491
|
+
next[key] = chunk7DGKSEIU_js.dist_exports.DEFAULT_COLOR_MAP[key];
|
|
25492
25492
|
}
|
|
25493
25493
|
}
|
|
25494
25494
|
commitOverride(next);
|
|
@@ -25520,8 +25520,8 @@ function SlideThemeOverridePanel({
|
|
|
25520
25520
|
),
|
|
25521
25521
|
t("pptx.themeOverride.enableOverride")
|
|
25522
25522
|
] }),
|
|
25523
|
-
isOverrideActive && override && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-1.5", children:
|
|
25524
|
-
const currentTarget = override[alias] ??
|
|
25523
|
+
isOverrideActive && override && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-1.5", children: chunk7DGKSEIU_js.dist_exports.COLOR_MAP_ALIAS_KEYS.map((alias) => {
|
|
25524
|
+
const currentTarget = override[alias] ?? chunk7DGKSEIU_js.dist_exports.DEFAULT_COLOR_MAP[alias];
|
|
25525
25525
|
const resolvedHex = resolveSlotColor(currentTarget);
|
|
25526
25526
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
25527
25527
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-24 truncate text-muted-foreground", title: ALIAS_LABELS[alias], children: ALIAS_LABELS[alias] }),
|
|
@@ -25600,7 +25600,7 @@ function TransitionPreview({
|
|
|
25600
25600
|
const { t } = reactI18next.useTranslation();
|
|
25601
25601
|
const durationMs = transition.durationMs ?? 500;
|
|
25602
25602
|
const animations = React99.useMemo(
|
|
25603
|
-
() =>
|
|
25603
|
+
() => chunkTVSTM5J5_js.getSlideTransitionAnimations(
|
|
25604
25604
|
transition.type,
|
|
25605
25605
|
durationMs,
|
|
25606
25606
|
transition.direction,
|
|
@@ -25669,7 +25669,7 @@ function TransitionPreview({
|
|
|
25669
25669
|
]
|
|
25670
25670
|
}
|
|
25671
25671
|
),
|
|
25672
|
-
/* @__PURE__ */ jsxRuntime.jsx("style", { children:
|
|
25672
|
+
/* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkTVSTM5J5_js.SLIDE_TRANSITION_KEYFRAMES })
|
|
25673
25673
|
] });
|
|
25674
25674
|
}
|
|
25675
25675
|
var DEFAULT_DURATION_MS = 320;
|
|
@@ -25686,13 +25686,13 @@ function SlideTransitionSection({
|
|
|
25686
25686
|
return null;
|
|
25687
25687
|
}
|
|
25688
25688
|
const transitionType = activeSlide.transition?.type ?? "none";
|
|
25689
|
-
const validDirections =
|
|
25689
|
+
const validDirections = chunk7DGKSEIU_js.dist_exports.TRANSITION_VALID_DIRECTIONS[transitionType];
|
|
25690
25690
|
const hasDirections = validDirections !== void 0 && validDirections.length > 0;
|
|
25691
25691
|
const usesOrientation = pptx.TRANSITION_ORIENTATION_TYPES.has(transitionType);
|
|
25692
25692
|
const isWheel = transitionType === "wheel";
|
|
25693
25693
|
const isMorph = transitionType === "morph";
|
|
25694
|
-
const patternOptions =
|
|
25695
|
-
const hasThruBlk =
|
|
25694
|
+
const patternOptions = chunk7DGKSEIU_js.dist_exports.TRANSITION_PATTERN_OPTIONS[transitionType];
|
|
25695
|
+
const hasThruBlk = chunk7DGKSEIU_js.dist_exports.TRANSITION_THRUBLK_TYPES.has(transitionType);
|
|
25696
25696
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
25697
25697
|
"div",
|
|
25698
25698
|
{
|
|
@@ -25712,7 +25712,7 @@ function SlideTransitionSection({
|
|
|
25712
25712
|
type: e.target.value
|
|
25713
25713
|
}),
|
|
25714
25714
|
className: "bg-muted border border-border rounded px-2 py-1 max-md:min-h-[44px]!",
|
|
25715
|
-
children:
|
|
25715
|
+
children: chunk7DGKSEIU_js.SLIDE_TRANSITION_OPTIONS.map((option) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: option.value, children: t(option.i18nKey) }, option.value))
|
|
25716
25716
|
}
|
|
25717
25717
|
)
|
|
25718
25718
|
] }),
|
|
@@ -25928,7 +25928,7 @@ function TagsSection({
|
|
|
25928
25928
|
"button",
|
|
25929
25929
|
{
|
|
25930
25930
|
type: "button",
|
|
25931
|
-
className:
|
|
25931
|
+
className: chunk7DGKSEIU_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
|
|
25932
25932
|
title: t("pptx.tags.deleteTag"),
|
|
25933
25933
|
onClick: () => deleteTag(tag.colIdx, tag.tagIdx),
|
|
25934
25934
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuTrash2, { className: "w-3 h-3" })
|
|
@@ -26057,7 +26057,7 @@ function PresentationPropertiesPanel({
|
|
|
26057
26057
|
canEdit
|
|
26058
26058
|
}
|
|
26059
26059
|
),
|
|
26060
|
-
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
26060
|
+
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk7DGKSEIU_js.cn(CARD2, "space-y-1"), children: [
|
|
26061
26061
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: "Slide" }),
|
|
26062
26062
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[11px] text-muted-foreground", children: [
|
|
26063
26063
|
activeSlide.elements?.length ?? 0,
|
|
@@ -26078,14 +26078,14 @@ function SlideBackgroundPanel({
|
|
|
26078
26078
|
const { t } = reactI18next.useTranslation();
|
|
26079
26079
|
const bgImageInputRef = React99.useRef(null);
|
|
26080
26080
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
26081
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
26081
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk7DGKSEIU_js.cn(CARD2, "space-y-2"), children: [
|
|
26082
26082
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.viewer.background") }),
|
|
26083
26083
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
26084
26084
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-10 shrink-0", children: t("pptx.slideBackground.colour") }),
|
|
26085
26085
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26086
26086
|
DebouncedColorInput,
|
|
26087
26087
|
{
|
|
26088
|
-
value:
|
|
26088
|
+
value: chunk7DGKSEIU_js.normalizeHexColor(activeSlide.backgroundColor, "#ffffff"),
|
|
26089
26089
|
disabled: !canEdit,
|
|
26090
26090
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
26091
26091
|
onCommit: (hex) => onUpdateSlide({ backgroundColor: hex })
|
|
@@ -26124,7 +26124,7 @@ function SlideBackgroundPanel({
|
|
|
26124
26124
|
"button",
|
|
26125
26125
|
{
|
|
26126
26126
|
type: "button",
|
|
26127
|
-
className:
|
|
26127
|
+
className: chunk7DGKSEIU_js.cn(BTN2, "flex-1 text-center"),
|
|
26128
26128
|
disabled: !canEdit,
|
|
26129
26129
|
onClick: () => bgImageInputRef.current?.click(),
|
|
26130
26130
|
children: activeSlide.backgroundImage ? t("pptx.slideBackground.replaceImage") : t("pptx.slideBackground.chooseImage")
|
|
@@ -26157,7 +26157,7 @@ function SlideBackgroundPanel({
|
|
|
26157
26157
|
"button",
|
|
26158
26158
|
{
|
|
26159
26159
|
type: "button",
|
|
26160
|
-
className:
|
|
26160
|
+
className: chunk7DGKSEIU_js.cn(BTN2, "w-full text-center text-red-400 hover:text-red-300"),
|
|
26161
26161
|
disabled: !pptx.slideBackgroundClearState(activeSlide, canEdit).enabled,
|
|
26162
26162
|
onClick: () => onUpdateSlide(pptx.slideBackgroundClearPatch()),
|
|
26163
26163
|
children: t("pptx.slideBackground.clearBackground")
|
|
@@ -26201,14 +26201,14 @@ function TemplateBackgroundCard({
|
|
|
26201
26201
|
t("pptx.master.layout"),
|
|
26202
26202
|
t("pptx.master.master")
|
|
26203
26203
|
);
|
|
26204
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
26204
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk7DGKSEIU_js.cn(CARD2, "space-y-2"), children: [
|
|
26205
26205
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.slideBackground.templateBackgroundsHeading") }),
|
|
26206
26206
|
rows.layout && /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
26207
26207
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-14 shrink-0 truncate", title: rows.layout.title, children: t("pptx.master.layout") }),
|
|
26208
26208
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26209
26209
|
DebouncedColorInput,
|
|
26210
26210
|
{
|
|
26211
|
-
value:
|
|
26211
|
+
value: chunk7DGKSEIU_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.layout.path), "#ffffff"),
|
|
26212
26212
|
disabled: !canEdit,
|
|
26213
26213
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
26214
26214
|
onCommit: (hex) => onSetTemplateBackground(rows.layout.path, hex)
|
|
@@ -26221,7 +26221,7 @@ function TemplateBackgroundCard({
|
|
|
26221
26221
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26222
26222
|
DebouncedColorInput,
|
|
26223
26223
|
{
|
|
26224
|
-
value:
|
|
26224
|
+
value: chunk7DGKSEIU_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.master.path), "#ffffff"),
|
|
26225
26225
|
disabled: !canEdit,
|
|
26226
26226
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
26227
26227
|
onCommit: (hex) => onSetTemplateBackground(rows.master.path, hex)
|
|
@@ -26332,7 +26332,7 @@ function InspectorPane(props) {
|
|
|
26332
26332
|
} = props;
|
|
26333
26333
|
const hasSelection = selectedElement !== null;
|
|
26334
26334
|
const { t } = reactI18next.useTranslation();
|
|
26335
|
-
const { dragY, handlers: dragHandlers } =
|
|
26335
|
+
const { dragY, handlers: dragHandlers } = chunkTVSTM5J5_js.useSheetDismissDrag(onClose);
|
|
26336
26336
|
const {
|
|
26337
26337
|
animationPanelHeight,
|
|
26338
26338
|
effectiveThemeOptions,
|
|
@@ -26354,7 +26354,7 @@ function InspectorPane(props) {
|
|
|
26354
26354
|
"div",
|
|
26355
26355
|
{
|
|
26356
26356
|
"data-pptx-chrome": "inspector",
|
|
26357
|
-
className:
|
|
26357
|
+
className: chunk7DGKSEIU_js.cn(
|
|
26358
26358
|
// Shared styles
|
|
26359
26359
|
"bg-background flex flex-col text-xs text-foreground shadow-xl",
|
|
26360
26360
|
// Mobile: absolute bottom sheet overlay sized via dvh so it
|
|
@@ -26745,7 +26745,7 @@ function PresentationTouchControls({
|
|
|
26745
26745
|
hideNavigation = false
|
|
26746
26746
|
}) {
|
|
26747
26747
|
const { t } = reactI18next.useTranslation();
|
|
26748
|
-
const { isTouchDevice } =
|
|
26748
|
+
const { isTouchDevice } = chunkTVSTM5J5_js.useIsMobile();
|
|
26749
26749
|
if (!isTouchDevice) {
|
|
26750
26750
|
return null;
|
|
26751
26751
|
}
|
|
@@ -27050,13 +27050,13 @@ function PrintPreview({
|
|
|
27050
27050
|
}) {
|
|
27051
27051
|
const { t } = reactI18next.useTranslation();
|
|
27052
27052
|
const pages = React99.useMemo(
|
|
27053
|
-
() =>
|
|
27053
|
+
() => chunk7DGKSEIU_js.computeHandoutLayout(slideIndices, slidesPerPage, orientation),
|
|
27054
27054
|
[slideIndices, slidesPerPage, orientation]
|
|
27055
27055
|
);
|
|
27056
|
-
const printable = React99.useMemo(() =>
|
|
27056
|
+
const printable = React99.useMemo(() => chunk7DGKSEIU_js.getPrintableArea(orientation), [orientation]);
|
|
27057
27057
|
const visiblePages = pages.slice(0, maxPages);
|
|
27058
27058
|
const isThreePerPage = slidesPerPage === 3;
|
|
27059
|
-
const noteLineCount =
|
|
27059
|
+
const noteLineCount = chunk7DGKSEIU_js.generateNoteLineCount();
|
|
27060
27060
|
const scaledW = printable.width * PREVIEW_SCALE3;
|
|
27061
27061
|
const scaledH = printable.height * PREVIEW_SCALE3;
|
|
27062
27062
|
const noteAreaFraction = 0.5;
|
|
@@ -27391,11 +27391,11 @@ function PrintDialog({
|
|
|
27391
27391
|
defaultFrameSlides
|
|
27392
27392
|
}) {
|
|
27393
27393
|
const { t } = reactI18next.useTranslation();
|
|
27394
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
27395
|
-
const { viewportWidth } =
|
|
27394
|
+
const { panelStyle, handlers: dragHandlers } = chunkTVSTM5J5_js.useModalDismissDrag(onClose);
|
|
27395
|
+
const { viewportWidth } = chunkTVSTM5J5_js.useIsMobile();
|
|
27396
27396
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
27397
27397
|
const closeBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
27398
|
-
const printOptionDefaults = pptx.resolveDefaultPrintSettings(
|
|
27398
|
+
const printOptionDefaults = pptx.resolveDefaultPrintSettings(chunkTVSTM5J5_js.useViewerOptionsContext());
|
|
27399
27399
|
const [printWhat, setPrintWhat] = React99.useState(printOptionDefaults?.printWhat ?? "slides");
|
|
27400
27400
|
const [orientation, setOrientation] = React99.useState("landscape");
|
|
27401
27401
|
const [colorMode, setColorMode] = React99.useState(
|
|
@@ -27898,14 +27898,14 @@ function BroadcastDialog({
|
|
|
27898
27898
|
defaultServerUrl
|
|
27899
27899
|
}) {
|
|
27900
27900
|
const { t } = reactI18next.useTranslation();
|
|
27901
|
-
const collab =
|
|
27901
|
+
const collab = chunkTVSTM5J5_js.useCollaboration();
|
|
27902
27902
|
const isBroadcasting = collab !== null && collab.status !== "disconnected" && collab.status !== "error" && collab.config.role === "owner";
|
|
27903
27903
|
const [roomId, setRoomId] = React99.useState("");
|
|
27904
27904
|
const [userName, setUserName] = React99.useState("");
|
|
27905
27905
|
const [serverUrl, setServerUrl] = React99.useState("");
|
|
27906
27906
|
const [copied, setCopied] = React99.useState(false);
|
|
27907
27907
|
const dialogRef = React99.useRef(null);
|
|
27908
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
27908
|
+
const { panelStyle, handlers: dragHandlers } = chunkTVSTM5J5_js.useModalDismissDrag(onClose);
|
|
27909
27909
|
useModalFocus(open, dialogRef, onClose);
|
|
27910
27910
|
React99.useEffect(() => {
|
|
27911
27911
|
if (open && !isBroadcasting) {
|
|
@@ -28208,7 +28208,7 @@ function ActiveSessionView({
|
|
|
28208
28208
|
onCopyRoomId,
|
|
28209
28209
|
onStopCollaboration
|
|
28210
28210
|
}) {
|
|
28211
|
-
const { t } = reactI18next.useTranslation(), viewerOptions =
|
|
28211
|
+
const { t } = reactI18next.useTranslation(), viewerOptions = chunkTVSTM5J5_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({
|
|
28212
28212
|
localUserName: activeCollaboration?.userName ?? collab.config.userName,
|
|
28213
28213
|
localUserInitials: viewerOptions.general.userInitials,
|
|
28214
28214
|
localUserColor: collab.config.userColor,
|
|
@@ -28307,7 +28307,7 @@ function StartSessionForm({
|
|
|
28307
28307
|
onRetry
|
|
28308
28308
|
}) {
|
|
28309
28309
|
const { t } = reactI18next.useTranslation();
|
|
28310
|
-
const { viewportWidth } =
|
|
28310
|
+
const { viewportWidth } = chunkTVSTM5J5_js.useIsMobile();
|
|
28311
28311
|
const tabBtnStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
|
|
28312
28312
|
const inputReadOnlyClass = preconfigured ? " opacity-70 cursor-not-allowed" : "";
|
|
28313
28313
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
@@ -28441,7 +28441,7 @@ function ShareDialog({
|
|
|
28441
28441
|
defaultUserName,
|
|
28442
28442
|
defaultServerUrl
|
|
28443
28443
|
}) {
|
|
28444
|
-
const collab =
|
|
28444
|
+
const collab = chunkTVSTM5J5_js.useCollaboration();
|
|
28445
28445
|
const isActive = collab !== null && collab.status !== "disconnected" && collab.status !== "error";
|
|
28446
28446
|
const { t } = reactI18next.useTranslation();
|
|
28447
28447
|
const [roomId, setRoomId] = React99.useState(defaultRoomId ?? "");
|
|
@@ -28451,9 +28451,9 @@ function ShareDialog({
|
|
|
28451
28451
|
const [invitation, setInvitation] = React99.useState("");
|
|
28452
28452
|
const [copied, setCopied] = React99.useState(false);
|
|
28453
28453
|
const dialogRef = React99.useRef(null);
|
|
28454
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
28454
|
+
const { panelStyle, handlers: dragHandlers } = chunkTVSTM5J5_js.useModalDismissDrag(onClose);
|
|
28455
28455
|
useModalFocus(open, dialogRef, onClose);
|
|
28456
|
-
const { viewportWidth, viewportHeight } =
|
|
28456
|
+
const { viewportWidth, viewportHeight } = chunkTVSTM5J5_js.useIsMobile();
|
|
28457
28457
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
28458
28458
|
const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
28459
28459
|
const stickyFooterClass = pptx.shouldStickyActionRow(viewportWidth, viewportHeight) ? "sticky bottom-0 bg-popover" : "";
|
|
@@ -28736,12 +28736,12 @@ function HyperlinkEditDialog({
|
|
|
28736
28736
|
onCancel
|
|
28737
28737
|
}) {
|
|
28738
28738
|
const { t } = reactI18next.useTranslation();
|
|
28739
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
28739
|
+
const { panelStyle, handlers: dragHandlers } = chunkTVSTM5J5_js.useModalDismissDrag(onCancel);
|
|
28740
28740
|
const inputRef = React99.useRef(null);
|
|
28741
|
-
const detectedType =
|
|
28742
|
-
const emailParts =
|
|
28743
|
-
const detectedSlide =
|
|
28744
|
-
const detectedVerb = initialAction ?
|
|
28741
|
+
const detectedType = chunkTVSTM5J5_js.detectTargetType(initialUrl, initialAction);
|
|
28742
|
+
const emailParts = chunkTVSTM5J5_js.parseEmailUrl(initialUrl || "");
|
|
28743
|
+
const detectedSlide = chunkTVSTM5J5_js.parseSlideFromUrl(initialUrl, initialAction);
|
|
28744
|
+
const detectedVerb = initialAction ? chunkTVSTM5J5_js.ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
|
|
28745
28745
|
const [targetType, setTargetType] = React99.useState(detectedType);
|
|
28746
28746
|
const [url, setUrl] = React99.useState(
|
|
28747
28747
|
detectedType === "email" || detectedType === "slide" || detectedType === "action" ? "" : initialUrl || ""
|
|
@@ -28772,7 +28772,7 @@ function HyperlinkEditDialog({
|
|
|
28772
28772
|
actionVerb
|
|
28773
28773
|
});
|
|
28774
28774
|
};
|
|
28775
|
-
const tabCls = (active) =>
|
|
28775
|
+
const tabCls = (active) => chunk7DGKSEIU_js.cn(
|
|
28776
28776
|
"px-3 py-1.5 text-xs rounded-t border-b-2 transition-colors",
|
|
28777
28777
|
active ? "border-primary text-primary font-medium" : "border-transparent text-muted-foreground hover:text-foreground hover:border-border"
|
|
28778
28778
|
);
|
|
@@ -29009,7 +29009,7 @@ function ViewerBottomPanels({
|
|
|
29009
29009
|
notesStyle,
|
|
29010
29010
|
onNotesHeightChange
|
|
29011
29011
|
}) {
|
|
29012
|
-
const { isHidden } =
|
|
29012
|
+
const { isHidden } = chunkTVSTM5J5_js.useToolbarVisibility(hiddenActions);
|
|
29013
29013
|
const customization = useViewerCustomizationContext();
|
|
29014
29014
|
const showNotes = pptx.isPanelVisible(customization, "notes");
|
|
29015
29015
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
@@ -29355,7 +29355,7 @@ function ViewerToolbarSection(props) {
|
|
|
29355
29355
|
[activeSlide, propertyHandlers]
|
|
29356
29356
|
);
|
|
29357
29357
|
const scopedLayoutOptions = React99__default.default.useMemo(
|
|
29358
|
-
() =>
|
|
29358
|
+
() => chunkTVSTM5J5_js.scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
|
|
29359
29359
|
[s.layoutOptions, activeSlide]
|
|
29360
29360
|
);
|
|
29361
29361
|
const handleResetSlide = React99.useCallback(() => {
|
|
@@ -29759,7 +29759,7 @@ function ViewerToolbarSection(props) {
|
|
|
29759
29759
|
isCommentsPanelOpen: s.isInspectorPaneOpen,
|
|
29760
29760
|
slideCommentCount: activeSlide?.comments?.length ?? 0,
|
|
29761
29761
|
formatPainterActive: s.formatPainterActive,
|
|
29762
|
-
canActivateFormatPainter:
|
|
29762
|
+
canActivateFormatPainter: chunk7DGKSEIU_js.hasCopyableFormat(selectedElement),
|
|
29763
29763
|
onToggleFormatPainter: onToggleFormatPainterProp ?? (() => s.setFormatPainterActive((p) => !p)),
|
|
29764
29764
|
isSelectionPaneOpen: s.isSelectionPaneOpen,
|
|
29765
29765
|
onToggleSelectionPane: () => s.setIsSelectionPaneOpen((p) => !p),
|
|
@@ -29846,7 +29846,7 @@ function EquationEditorDialog({
|
|
|
29846
29846
|
existingOmml
|
|
29847
29847
|
}) {
|
|
29848
29848
|
const { t } = reactI18next.useTranslation();
|
|
29849
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
29849
|
+
const { panelStyle, handlers: dragHandlers } = chunkTVSTM5J5_js.useModalDismissDrag(onClose);
|
|
29850
29850
|
const initialLatex = React99.useMemo(() => {
|
|
29851
29851
|
if (!existingOmml) {
|
|
29852
29852
|
return "";
|
|
@@ -29968,7 +29968,7 @@ function EquationEditorDialog({
|
|
|
29968
29968
|
{
|
|
29969
29969
|
type: "button",
|
|
29970
29970
|
onClick: () => handleTemplateClick(tmpl.latex),
|
|
29971
|
-
className:
|
|
29971
|
+
className: chunk7DGKSEIU_js.cn(
|
|
29972
29972
|
"flex flex-col items-center gap-1 p-2 rounded-lg border transition-colors",
|
|
29973
29973
|
latex === tmpl.latex ? "border-primary bg-primary/10" : "border-border bg-muted/40 hover:bg-accent/60 hover:border-border"
|
|
29974
29974
|
),
|
|
@@ -30034,7 +30034,7 @@ function getPreviewForLayout(layout) {
|
|
|
30034
30034
|
transform: `scale(${scale})`,
|
|
30035
30035
|
transformOrigin: "top left"
|
|
30036
30036
|
},
|
|
30037
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
30037
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(chunkTVSTM5J5_js.SmartArtRenderer, { element: pptx.buildSmartArtPreviewElement(layout) })
|
|
30038
30038
|
}
|
|
30039
30039
|
)
|
|
30040
30040
|
}
|
|
@@ -30046,7 +30046,7 @@ function InsertSmartArtDialog({
|
|
|
30046
30046
|
onInsert
|
|
30047
30047
|
}) {
|
|
30048
30048
|
const { t } = reactI18next.useTranslation();
|
|
30049
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
30049
|
+
const { panelStyle, handlers: dragHandlers } = chunkTVSTM5J5_js.useModalDismissDrag(onClose);
|
|
30050
30050
|
const [activeCategory, setActiveCategory] = React99.useState("list");
|
|
30051
30051
|
const [selectedLayout, setSelectedLayout] = React99.useState(null);
|
|
30052
30052
|
const dialogRef = React99.useRef(null);
|
|
@@ -30127,7 +30127,7 @@ function InsertSmartArtDialog({
|
|
|
30127
30127
|
setActiveCategory(cat.id);
|
|
30128
30128
|
setSelectedLayout(null);
|
|
30129
30129
|
},
|
|
30130
|
-
className:
|
|
30130
|
+
className: chunk7DGKSEIU_js.cn(
|
|
30131
30131
|
"w-full text-left px-3 py-1.5 text-xs transition-colors",
|
|
30132
30132
|
activeCategory === cat.id ? "bg-primary text-white" : "text-foreground hover:bg-muted"
|
|
30133
30133
|
),
|
|
@@ -30155,7 +30155,7 @@ function InsertSmartArtDialog({
|
|
|
30155
30155
|
onInsert(preset.layout, preset.defaultItems);
|
|
30156
30156
|
onClose();
|
|
30157
30157
|
},
|
|
30158
|
-
className:
|
|
30158
|
+
className: chunk7DGKSEIU_js.cn(
|
|
30159
30159
|
"flex flex-col items-center gap-1 p-2 rounded border transition-colors",
|
|
30160
30160
|
selectedLayout === preset.layout ? "border-primary bg-primary/20" : "border-border hover:border-border hover:bg-muted/50"
|
|
30161
30161
|
),
|
|
@@ -30652,11 +30652,11 @@ function PresentationStage({
|
|
|
30652
30652
|
})
|
|
30653
30653
|
},
|
|
30654
30654
|
children: [
|
|
30655
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30655
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkTVSTM5J5_js.SlideBackgroundImageLayer, { slide: activeSlide }),
|
|
30656
30656
|
/* @__PURE__ */ jsxRuntime.jsx("style", { children: pptx.PRESENTATION_HIT_TEST_CSS }),
|
|
30657
30657
|
presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
|
|
30658
30658
|
templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
30659
|
-
|
|
30659
|
+
chunkTVSTM5J5_js.ElementRenderer,
|
|
30660
30660
|
{
|
|
30661
30661
|
element,
|
|
30662
30662
|
activeSlide,
|
|
@@ -30693,7 +30693,7 @@ function PresentationStage({
|
|
|
30693
30693
|
`tpl-${element.id}`
|
|
30694
30694
|
)),
|
|
30695
30695
|
activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
30696
|
-
|
|
30696
|
+
chunkTVSTM5J5_js.ElementRenderer,
|
|
30697
30697
|
{
|
|
30698
30698
|
element,
|
|
30699
30699
|
activeSlide,
|
|
@@ -30814,8 +30814,8 @@ function ViewerCanvasArea(props) {
|
|
|
30814
30814
|
aiCanvasActive = false
|
|
30815
30815
|
} = props;
|
|
30816
30816
|
const { t } = reactI18next.useTranslation();
|
|
30817
|
-
const { isHidden } =
|
|
30818
|
-
const viewerOptions =
|
|
30817
|
+
const { isHidden } = chunkTVSTM5J5_js.useToolbarVisibility(hiddenActions);
|
|
30818
|
+
const viewerOptions = chunkTVSTM5J5_js.useViewerOptionsContext();
|
|
30819
30819
|
const outlineAuthoring = useOutlineAuthoring({
|
|
30820
30820
|
state: s,
|
|
30821
30821
|
updateElement: canvasHandlers.handleUpdateSmartArtElement,
|
|
@@ -30844,7 +30844,7 @@ function ViewerCanvasArea(props) {
|
|
|
30844
30844
|
${url}`)) {
|
|
30845
30845
|
return;
|
|
30846
30846
|
}
|
|
30847
|
-
|
|
30847
|
+
chunk7DGKSEIU_js.safeOpenUrl(url);
|
|
30848
30848
|
},
|
|
30849
30849
|
[viewerOptions, t]
|
|
30850
30850
|
);
|
|
@@ -30865,9 +30865,9 @@ ${url}`)) {
|
|
|
30865
30865
|
);
|
|
30866
30866
|
const handleHyperlinkClick = React99.useCallback(
|
|
30867
30867
|
(url) => {
|
|
30868
|
-
if (
|
|
30868
|
+
if (chunk7DGKSEIU_js.isPpactionUrl(url)) {
|
|
30869
30869
|
if (mode === "present") {
|
|
30870
|
-
const parsed =
|
|
30870
|
+
const parsed = chunk7DGKSEIU_js.parsePpactionUrl(url);
|
|
30871
30871
|
if (parsed) {
|
|
30872
30872
|
const action = {
|
|
30873
30873
|
action: parsed.action,
|
|
@@ -30952,7 +30952,7 @@ ${url}`)) {
|
|
|
30952
30952
|
s.setActiveSlideIndex((i) => Math.max(0, i - 1));
|
|
30953
30953
|
}
|
|
30954
30954
|
}, [mode, presentation, s]);
|
|
30955
|
-
const swipe =
|
|
30955
|
+
const swipe = chunkTVSTM5J5_js.useSwipeNavigation({
|
|
30956
30956
|
enabled: swipeEnabled,
|
|
30957
30957
|
onNext: handleSwipeNext,
|
|
30958
30958
|
onPrev: handleSwipePrev
|
|
@@ -31026,7 +31026,7 @@ ${url}`)) {
|
|
|
31026
31026
|
),
|
|
31027
31027
|
children: (stageScale) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31028
31028
|
presentation.transitionOverlay && slides[presentation.transitionOverlay.outgoingSlideIndex] && /* @__PURE__ */ jsxRuntime.jsx(
|
|
31029
|
-
|
|
31029
|
+
chunkTVSTM5J5_js.PresentationTransitionOverlay,
|
|
31030
31030
|
{
|
|
31031
31031
|
outgoingSlide: slides[presentation.transitionOverlay.outgoingSlideIndex],
|
|
31032
31032
|
templateElements,
|
|
@@ -31137,14 +31137,14 @@ ${url}`)) {
|
|
|
31137
31137
|
outlineAuthoring,
|
|
31138
31138
|
collaborationOverlay: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31139
31139
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
31140
|
-
|
|
31140
|
+
chunkTVSTM5J5_js.RemoteSelectionOverlay,
|
|
31141
31141
|
{
|
|
31142
31142
|
elements: effectiveSlide?.elements ?? [],
|
|
31143
31143
|
activeSlideIndex
|
|
31144
31144
|
}
|
|
31145
31145
|
),
|
|
31146
31146
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
31147
|
-
|
|
31147
|
+
chunkTVSTM5J5_js.CollaborationCursorOverlay,
|
|
31148
31148
|
{
|
|
31149
31149
|
activeSlideIndex,
|
|
31150
31150
|
canvasWidth: canvasSize.width,
|
|
@@ -31284,7 +31284,7 @@ function useTableStyleMapHandlers(input) {
|
|
|
31284
31284
|
var AiChatPanel = React99.lazy(async () => {
|
|
31285
31285
|
const [{ useChat }, { default: Panel }] = await Promise.all([
|
|
31286
31286
|
import('@ai-sdk/react'),
|
|
31287
|
-
import('./AiChatPanel-
|
|
31287
|
+
import('./AiChatPanel-ONHWZEPV.js')
|
|
31288
31288
|
]);
|
|
31289
31289
|
function BoundAiChatPanel(props) {
|
|
31290
31290
|
return /* @__PURE__ */ jsxRuntime.jsx(Panel, { ...props, useChat });
|
|
@@ -31445,7 +31445,7 @@ function MobileDismissSheet({
|
|
|
31445
31445
|
children
|
|
31446
31446
|
}) {
|
|
31447
31447
|
const { t } = reactI18next.useTranslation();
|
|
31448
|
-
const { dragY, handlers } =
|
|
31448
|
+
const { dragY, handlers } = chunkTVSTM5J5_js.useSheetDismissDrag(onClose);
|
|
31449
31449
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31450
31450
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
31451
31451
|
"button",
|
|
@@ -31714,7 +31714,7 @@ function ThemeThumbnail({
|
|
|
31714
31714
|
{
|
|
31715
31715
|
type: "button",
|
|
31716
31716
|
onClick,
|
|
31717
|
-
className:
|
|
31717
|
+
className: chunk7DGKSEIU_js.cn(
|
|
31718
31718
|
"group relative flex flex-col rounded-lg border-2 transition-all overflow-hidden",
|
|
31719
31719
|
selected ? "border-primary shadow-lg scale-[1.02]" : "border-border hover:border-primary/50 hover:shadow-md"
|
|
31720
31720
|
),
|
|
@@ -31900,7 +31900,7 @@ function ViewerSidePanels(props) {
|
|
|
31900
31900
|
const customization = useViewerCustomizationContext();
|
|
31901
31901
|
const inspectorOpen = (mode === "edit" || mode === "master") && s.isInspectorPaneOpen && pptx.isPanelVisible(customization, "inspector");
|
|
31902
31902
|
const currentBuiltInTheme = BUILT_IN_THEMES.find(
|
|
31903
|
-
(candidate) => (0,
|
|
31903
|
+
(candidate) => (0, chunk7DGKSEIU_js.dist_exports.themeColorSchemesEqual)(s.theme?.colorScheme, candidate.colorScheme)
|
|
31904
31904
|
) ?? null;
|
|
31905
31905
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31906
31906
|
inspectorOpen && onResizeRight && /* @__PURE__ */ jsxRuntime.jsx(ResizeHandle, { direction: "horizontal", onResize: onResizeRight }),
|
|
@@ -32186,7 +32186,7 @@ function ViewerMainContent(props) {
|
|
|
32186
32186
|
);
|
|
32187
32187
|
const layoutGalleryAnchorRef = React99.useRef(null);
|
|
32188
32188
|
const layoutGalleryPreviews = useLayoutPreviews(loadLayoutPreviews, layoutGalleryAnchor !== null);
|
|
32189
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
32189
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkTVSTM5J5_js.ChartPartSelectionProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "body", className: "relative z-10 flex flex-1 min-h-0", children: [
|
|
32190
32190
|
showSlidesPane && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
32191
32191
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
32192
32192
|
SlidesPaneSidebar,
|
|
@@ -32676,7 +32676,7 @@ function MobileChromeOverlay(props) {
|
|
|
32676
32676
|
slideSectionGroups,
|
|
32677
32677
|
canEdit,
|
|
32678
32678
|
commentCount
|
|
32679
|
-
} = props, { keyboardInset, isKeyboardOpen } =
|
|
32679
|
+
} = props, { keyboardInset, isKeyboardOpen } = chunkTVSTM5J5_js.useKeyboardInsets(), activeSheet = s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null, closeAllSheets = () => {
|
|
32680
32680
|
s.setIsSlidesPaneOpen(false);
|
|
32681
32681
|
s.setIsInspectorPaneOpen(false);
|
|
32682
32682
|
s.setIsSlideNotesCollapsed(true);
|
|
@@ -32882,7 +32882,7 @@ function AddinTable({
|
|
|
32882
32882
|
"tr",
|
|
32883
32883
|
{
|
|
32884
32884
|
onClick: () => onSelect(row.id),
|
|
32885
|
-
className:
|
|
32885
|
+
className: chunk7DGKSEIU_js.cn(
|
|
32886
32886
|
"cursor-pointer border-b border-border/40 transition-colors",
|
|
32887
32887
|
selectedId === row.id ? "bg-primary/10" : "hover:bg-accent"
|
|
32888
32888
|
),
|
|
@@ -32949,18 +32949,18 @@ function ControlRow({
|
|
|
32949
32949
|
onOptionChange: emitChange
|
|
32950
32950
|
}) {
|
|
32951
32951
|
const { t } = reactI18next.useTranslation();
|
|
32952
|
-
const { viewportWidth } =
|
|
32952
|
+
const { viewportWidth } = chunkTVSTM5J5_js.useIsMobile();
|
|
32953
32953
|
const fieldMinHeight = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
32954
32954
|
const value = readValue(options, control);
|
|
32955
32955
|
const label = t(control.labelKey);
|
|
32956
32956
|
const info = control.infoKey ? /* @__PURE__ */ jsxRuntime.jsx(InfoTip, { text: t(control.infoKey) }) : null;
|
|
32957
|
-
const rowClass =
|
|
32957
|
+
const rowClass = chunk7DGKSEIU_js.cn("flex items-center justify-between gap-3 py-1.5", control.indent && "pl-6");
|
|
32958
32958
|
const rowStyle = { minHeight: fieldMinHeight };
|
|
32959
32959
|
const locked = control.readOnly === true;
|
|
32960
32960
|
const lockedTitle = locked ? t("pptx.options.lockedByHost") : void 0;
|
|
32961
32961
|
const onOptionChange = locked ? IGNORE_CHANGE : emitChange;
|
|
32962
32962
|
if (control.kind === "toggle") {
|
|
32963
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className:
|
|
32963
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: chunk7DGKSEIU_js.cn(rowClass, "cursor-pointer select-none"), style: rowStyle, children: [
|
|
32964
32964
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-sm text-foreground", children: [
|
|
32965
32965
|
label,
|
|
32966
32966
|
info
|
|
@@ -33112,7 +33112,7 @@ function CommandList({
|
|
|
33112
33112
|
role: "option",
|
|
33113
33113
|
"aria-selected": selectedId === id,
|
|
33114
33114
|
onClick: () => onSelect(id),
|
|
33115
|
-
className:
|
|
33115
|
+
className: chunk7DGKSEIU_js.cn(
|
|
33116
33116
|
"flex w-full items-center rounded px-2 py-1.5 text-left text-sm transition-colors",
|
|
33117
33117
|
selectedId === id ? "bg-primary/15 text-primary" : "text-foreground hover:bg-accent"
|
|
33118
33118
|
),
|
|
@@ -33256,7 +33256,7 @@ function OptionsRibbonPane({
|
|
|
33256
33256
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
33257
33257
|
"label",
|
|
33258
33258
|
{
|
|
33259
|
-
className:
|
|
33259
|
+
className: chunk7DGKSEIU_js.cn(
|
|
33260
33260
|
"flex items-center gap-2 rounded px-2 py-1.5",
|
|
33261
33261
|
isFile ? "cursor-not-allowed opacity-60" : "cursor-pointer hover:bg-accent"
|
|
33262
33262
|
),
|
|
@@ -33290,7 +33290,7 @@ function OptionsRibbonPane({
|
|
|
33290
33290
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: pptx.SHORTCUT_REFERENCE_ITEMS.map((shortcut, i) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
33291
33291
|
"div",
|
|
33292
33292
|
{
|
|
33293
|
-
className:
|
|
33293
|
+
className: chunk7DGKSEIU_js.cn(
|
|
33294
33294
|
"flex items-center justify-between gap-3 rounded px-3 py-2",
|
|
33295
33295
|
i % 2 === 0 ? "bg-muted/60" : ""
|
|
33296
33296
|
),
|
|
@@ -33311,7 +33311,7 @@ async function exportAiChatLogs(options) {
|
|
|
33311
33311
|
chats,
|
|
33312
33312
|
{ format: options?.format, detailed: options?.detailed, now: options?.now },
|
|
33313
33313
|
(filename, content, mime) => {
|
|
33314
|
-
|
|
33314
|
+
chunkTVSTM5J5_js.downloadBlob(new Blob([content], { type: mime }), filename);
|
|
33315
33315
|
}
|
|
33316
33316
|
);
|
|
33317
33317
|
}
|
|
@@ -33419,7 +33419,7 @@ function SettingsAppearanceTab({
|
|
|
33419
33419
|
type: "button",
|
|
33420
33420
|
onClick: () => onSelectTheme(entry.key),
|
|
33421
33421
|
"aria-pressed": isActive,
|
|
33422
|
-
className:
|
|
33422
|
+
className: chunk7DGKSEIU_js.cn(
|
|
33423
33423
|
"flex items-center gap-3 rounded-lg border px-3 py-2.5 text-left transition-colors",
|
|
33424
33424
|
isActive ? "border-primary bg-primary/10" : "border-border hover:border-primary/50 hover:bg-accent"
|
|
33425
33425
|
),
|
|
@@ -33436,7 +33436,7 @@ function SettingsAppearanceTab({
|
|
|
33436
33436
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
33437
33437
|
"span",
|
|
33438
33438
|
{
|
|
33439
|
-
className:
|
|
33439
|
+
className: chunk7DGKSEIU_js.cn("text-xs font-medium", isActive ? "text-primary" : "text-foreground"),
|
|
33440
33440
|
children: t(entry.labelKey)
|
|
33441
33441
|
}
|
|
33442
33442
|
)
|
|
@@ -33516,7 +33516,7 @@ function SettingsLanguageTab({
|
|
|
33516
33516
|
type: "button",
|
|
33517
33517
|
onClick: () => onSelectLocale(locale.code),
|
|
33518
33518
|
"aria-pressed": isActive,
|
|
33519
|
-
className:
|
|
33519
|
+
className: chunk7DGKSEIU_js.cn(
|
|
33520
33520
|
"flex w-full items-center justify-between rounded px-3 py-2.5 text-left transition-colors",
|
|
33521
33521
|
isActive ? "bg-primary/10 text-primary" : "text-foreground hover:bg-accent"
|
|
33522
33522
|
),
|
|
@@ -33556,8 +33556,8 @@ function SettingsDialog({
|
|
|
33556
33556
|
const [activeTabId, setActiveTabId] = React99.useState("general");
|
|
33557
33557
|
const { t } = reactI18next.useTranslation();
|
|
33558
33558
|
const customization = useViewerCustomizationContext();
|
|
33559
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
33560
|
-
const { viewportWidth, viewportHeight } =
|
|
33559
|
+
const { panelStyle, handlers: dragHandlers } = chunkTVSTM5J5_js.useModalDismissDrag(onClose);
|
|
33560
|
+
const { viewportWidth, viewportHeight } = chunkTVSTM5J5_js.useIsMobile();
|
|
33561
33561
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
33562
33562
|
const navBtnStyle = { minHeight: touchTargetPx, minWidth: touchTargetPx };
|
|
33563
33563
|
const closeBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
@@ -33665,7 +33665,7 @@ function SettingsDialog({
|
|
|
33665
33665
|
onClick: () => setActiveTabId(tab.id),
|
|
33666
33666
|
"aria-current": currentTabId === tab.id,
|
|
33667
33667
|
style: navBtnStyle,
|
|
33668
|
-
className:
|
|
33668
|
+
className: chunk7DGKSEIU_js.cn(
|
|
33669
33669
|
"flex w-full items-center whitespace-nowrap rounded px-3 py-2 text-left text-sm transition-colors max-md:w-auto",
|
|
33670
33670
|
currentTabId === tab.id ? "bg-primary/10 font-medium text-primary" : "text-foreground hover:bg-accent"
|
|
33671
33671
|
),
|
|
@@ -33680,7 +33680,7 @@ function SettingsDialog({
|
|
|
33680
33680
|
onClick: () => setActiveTabId(AI_TAB_ID),
|
|
33681
33681
|
"aria-current": aiActive,
|
|
33682
33682
|
style: navBtnStyle,
|
|
33683
|
-
className:
|
|
33683
|
+
className: chunk7DGKSEIU_js.cn(
|
|
33684
33684
|
"flex w-full items-center whitespace-nowrap rounded px-3 py-2 text-left text-sm transition-colors max-md:w-auto",
|
|
33685
33685
|
aiActive ? "bg-primary/10 font-medium text-primary" : "text-foreground hover:bg-accent"
|
|
33686
33686
|
),
|
|
@@ -33826,7 +33826,7 @@ function ViewerOptionsProvider({
|
|
|
33826
33826
|
store,
|
|
33827
33827
|
children
|
|
33828
33828
|
}) {
|
|
33829
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
33829
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkTVSTM5J5_js.ViewerOptionsStoreContext.Provider, { value: store, children: /* @__PURE__ */ jsxRuntime.jsx(chunkTVSTM5J5_js.ViewerOptionsContext.Provider, { value: options, children }) });
|
|
33830
33830
|
}
|
|
33831
33831
|
function useAiBridge(input) {
|
|
33832
33832
|
const ref = React99.useRef(input);
|
|
@@ -34147,7 +34147,7 @@ function useMasterViewCrud(input) {
|
|
|
34147
34147
|
if (id === "renameLayout" || id === "renameMaster") {
|
|
34148
34148
|
const master = slideMasters[target.masterIndex];
|
|
34149
34149
|
const current = id === "renameLayout" ? master?.layouts?.[target.layoutIndex ?? -1]?.name ?? "" : master?.name ?? "";
|
|
34150
|
-
const next =
|
|
34150
|
+
const next = chunkTVSTM5J5_js.safePrompt(t("pptx.masterView.renamePrompt"), current)?.trim();
|
|
34151
34151
|
if (!next) {
|
|
34152
34152
|
return;
|
|
34153
34153
|
}
|
|
@@ -34608,7 +34608,7 @@ var PowerPointViewer = React99.forwardRef(
|
|
|
34608
34608
|
}
|
|
34609
34609
|
})();
|
|
34610
34610
|
}, []);
|
|
34611
|
-
const { optionsStore, options: viewerOptions } =
|
|
34611
|
+
const { optionsStore, options: viewerOptions } = chunkTVSTM5J5_js.useViewerOptions();
|
|
34612
34612
|
const custom = useViewerCustomization(customization, legacyHiddenActions, optionsStore);
|
|
34613
34613
|
const { resolved: customizationResolved, hiddenActions } = custom;
|
|
34614
34614
|
const aiEnabled = Boolean(ai) && pptx.isFeatureEnabled(customizationResolved, "ai");
|
|
@@ -34622,8 +34622,8 @@ var PowerPointViewer = React99.forwardRef(
|
|
|
34622
34622
|
const handleEnableEditing = React99.useCallback(() => {
|
|
34623
34623
|
setProtectedViewOverridden(true);
|
|
34624
34624
|
}, []);
|
|
34625
|
-
const readOnlyRec =
|
|
34626
|
-
const compatToastsState =
|
|
34625
|
+
const readOnlyRec = chunkTVSTM5J5_js.useReadOnlyRecommendationState(content);
|
|
34626
|
+
const compatToastsState = chunkTVSTM5J5_js.useCompatibilityToastsState();
|
|
34627
34627
|
const [notesBarHeight, setNotesBarHeight] = React99.useState(0);
|
|
34628
34628
|
const runProgramNoticesState = useRunProgramNoticesState();
|
|
34629
34629
|
const [collaborationReadOnly, setCollaborationReadOnly] = React99.useState(Boolean(collaboration));
|
|
@@ -34638,8 +34638,8 @@ var PowerPointViewer = React99.forwardRef(
|
|
|
34638
34638
|
filePath
|
|
34639
34639
|
});
|
|
34640
34640
|
const [isShareDialogOpen, setIsShareDialogOpen] = React99.useState(false);
|
|
34641
|
-
const { reducedMotion, toggleReducedMotion } =
|
|
34642
|
-
const state =
|
|
34641
|
+
const { reducedMotion, toggleReducedMotion } = chunkTVSTM5J5_js.useReducedMotion();
|
|
34642
|
+
const state = chunkTVSTM5J5_js.useViewerState({ content, canEdit });
|
|
34643
34643
|
const {
|
|
34644
34644
|
containerRef,
|
|
34645
34645
|
mode,
|
|
@@ -34664,7 +34664,7 @@ var PowerPointViewer = React99.forwardRef(
|
|
|
34664
34664
|
[state.recentColors, pushColor]
|
|
34665
34665
|
);
|
|
34666
34666
|
const themeColorMapValue = React99.useMemo(
|
|
34667
|
-
() => state.theme?.colorScheme ? (0,
|
|
34667
|
+
() => state.theme?.colorScheme ? (0, chunk7DGKSEIU_js.dist_exports.buildThemeColorMap)(state.theme.colorScheme) : void 0,
|
|
34668
34668
|
[state.theme?.colorScheme]
|
|
34669
34669
|
);
|
|
34670
34670
|
const settings = React99.useMemo(
|
|
@@ -34751,16 +34751,16 @@ var PowerPointViewer = React99.forwardRef(
|
|
|
34751
34751
|
}
|
|
34752
34752
|
}, [settings, optionsStore]);
|
|
34753
34753
|
const handleClearOptionsCache2 = useAutosaveCacheMaintenance(viewerOptions);
|
|
34754
|
-
const mobile =
|
|
34754
|
+
const mobile = chunkTVSTM5J5_js.useIsMobile();
|
|
34755
34755
|
const { isMobile, isTouchDevice, isVirtualKeyboardOpen } = mobile;
|
|
34756
|
-
const resizablePanels =
|
|
34756
|
+
const resizablePanels = chunkTVSTM5J5_js.useResizablePanels();
|
|
34757
34757
|
const {
|
|
34758
34758
|
gridSpacingPx,
|
|
34759
34759
|
visibleSlideIndexes,
|
|
34760
34760
|
slideSectionGroups,
|
|
34761
34761
|
masterPseudoSlide,
|
|
34762
34762
|
authoredRange
|
|
34763
|
-
} =
|
|
34763
|
+
} = chunkTVSTM5J5_js.useDerivedSlideState({
|
|
34764
34764
|
slides,
|
|
34765
34765
|
sections: state.sections,
|
|
34766
34766
|
customShows: state.customShows,
|
|
@@ -34785,7 +34785,7 @@ var PowerPointViewer = React99.forwardRef(
|
|
|
34785
34785
|
state.cropSessionRef
|
|
34786
34786
|
]
|
|
34787
34787
|
);
|
|
34788
|
-
const zoom =
|
|
34788
|
+
const zoom = chunkTVSTM5J5_js.useZoomViewport({
|
|
34789
34789
|
canvasSize,
|
|
34790
34790
|
selectedElements: state.selectedElements,
|
|
34791
34791
|
fitPadding: props.fitPadding,
|
|
@@ -34795,7 +34795,7 @@ var PowerPointViewer = React99.forwardRef(
|
|
|
34795
34795
|
const markDocumentDirty = React99.useCallback(() => {
|
|
34796
34796
|
setIsDirty(true);
|
|
34797
34797
|
}, [setIsDirty]);
|
|
34798
|
-
const history =
|
|
34798
|
+
const history = chunkTVSTM5J5_js.useEditorHistory({
|
|
34799
34799
|
slides,
|
|
34800
34800
|
canvasSize,
|
|
34801
34801
|
activeSlideIndex,
|
|
@@ -34821,7 +34821,7 @@ var PowerPointViewer = React99.forwardRef(
|
|
|
34821
34821
|
setEditTemplateMode: state.setEditTemplateMode,
|
|
34822
34822
|
setHeaderFooter: state.setHeaderFooter
|
|
34823
34823
|
});
|
|
34824
|
-
const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } =
|
|
34824
|
+
const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = chunkTVSTM5J5_js.usePresentationSetup({
|
|
34825
34825
|
mode,
|
|
34826
34826
|
slides,
|
|
34827
34827
|
visibleSlideIndexes,
|
|
@@ -34896,7 +34896,7 @@ ${url}`)
|
|
|
34896
34896
|
loading,
|
|
34897
34897
|
error
|
|
34898
34898
|
]);
|
|
34899
|
-
|
|
34899
|
+
chunkTVSTM5J5_js.useTouchGestures({
|
|
34900
34900
|
targetRef: zoom.canvasViewportRef,
|
|
34901
34901
|
currentScale: zoom.scale,
|
|
34902
34902
|
callbacks: {
|
|
@@ -34918,7 +34918,7 @@ ${url}`)
|
|
|
34918
34918
|
},
|
|
34919
34919
|
enabled: isTouchDevice
|
|
34920
34920
|
});
|
|
34921
|
-
const dialogs =
|
|
34921
|
+
const dialogs = chunkTVSTM5J5_js.useViewerDialogs({
|
|
34922
34922
|
mode,
|
|
34923
34923
|
slides,
|
|
34924
34924
|
activeSlide,
|
|
@@ -34967,7 +34967,7 @@ ${url}`)
|
|
|
34967
34967
|
zoom.handleZoomToFit();
|
|
34968
34968
|
zoom.canvasViewportRef.current?.scrollTo({ left: 0, top: 0 });
|
|
34969
34969
|
}, [mode]);
|
|
34970
|
-
const editorOps =
|
|
34970
|
+
const editorOps = chunkTVSTM5J5_js.useEditorOperations({
|
|
34971
34971
|
state,
|
|
34972
34972
|
history,
|
|
34973
34973
|
zoom,
|
|
@@ -35009,7 +35009,7 @@ ${url}`)
|
|
|
35009
35009
|
setIsEncryptedDialogOpen,
|
|
35010
35010
|
handlerRef,
|
|
35011
35011
|
loadVersion
|
|
35012
|
-
} =
|
|
35012
|
+
} = chunkTVSTM5J5_js.useViewerIntegration({
|
|
35013
35013
|
transformCommittedText: (text) => pptx.applyAutoCorrect(text, viewerOptions.proofing),
|
|
35014
35014
|
state,
|
|
35015
35015
|
zoom,
|
|
@@ -35083,7 +35083,7 @@ ${url}`)
|
|
|
35083
35083
|
updateThemeFontScheme: themeHandlers.handleUpdateThemeFontScheme
|
|
35084
35084
|
});
|
|
35085
35085
|
const ribbonScope = useRibbonScopeToken();
|
|
35086
|
-
const viewPreferencesSync =
|
|
35086
|
+
const viewPreferencesSync = chunkTVSTM5J5_js.useViewPreferencesSync({
|
|
35087
35087
|
loadVersion,
|
|
35088
35088
|
viewProperties: state.viewProperties,
|
|
35089
35089
|
setViewProperties: state.setViewProperties,
|
|
@@ -35121,7 +35121,7 @@ ${url}`)
|
|
|
35121
35121
|
},
|
|
35122
35122
|
[state]
|
|
35123
35123
|
);
|
|
35124
|
-
const layoutSwitching =
|
|
35124
|
+
const layoutSwitching = chunkTVSTM5J5_js.useLayoutSwitching({
|
|
35125
35125
|
handler: handlerRef.current,
|
|
35126
35126
|
slides,
|
|
35127
35127
|
activeSlideIndex,
|
|
@@ -35217,7 +35217,7 @@ ${url}`)
|
|
|
35217
35217
|
"data-pptx-editor-chrome": "",
|
|
35218
35218
|
...{ [pptx.RIBBON_SCOPE_ATTR]: ribbonScope },
|
|
35219
35219
|
"aria-busy": loading,
|
|
35220
|
-
className:
|
|
35220
|
+
className: chunk7DGKSEIU_js.cn(
|
|
35221
35221
|
"h-full w-full bg-background text-foreground relative",
|
|
35222
35222
|
...pptx.resolveOptionRootClasses(viewerOptions, "pptx")
|
|
35223
35223
|
),
|
|
@@ -35608,8 +35608,8 @@ ${url}`)
|
|
|
35608
35608
|
// Nothing previously provided it, so every one of those consumers was
|
|
35609
35609
|
// silently reading `DEFAULT_VIEWER_OPTIONS` forever, no matter what
|
|
35610
35610
|
// the user changed in the Options dialog.
|
|
35611
|
-
/* @__PURE__ */ jsxRuntime.jsx(ViewerOptionsProvider, { options: viewerOptions, store: optionsStore, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCustomizationContext.Provider, { value: customizationResolved, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonAddInsContext.Provider, { value: ribbonAddIns ?? NO_RIBBON_ADD_INS, children: /* @__PURE__ */ jsxRuntime.jsx(AccountAuthContext.Provider, { value: accountAuth, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
35612
|
-
|
|
35611
|
+
/* @__PURE__ */ jsxRuntime.jsx(ViewerOptionsProvider, { options: viewerOptions, store: optionsStore, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCustomizationContext.Provider, { value: customizationResolved, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonAddInsContext.Provider, { value: ribbonAddIns ?? NO_RIBBON_ADD_INS, children: /* @__PURE__ */ jsxRuntime.jsx(AccountAuthContext.Provider, { value: accountAuth, children: /* @__PURE__ */ jsxRuntime.jsx(chunkTVSTM5J5_js.Rendering3DFlagsContext.Provider, { value: effective3D, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
35612
|
+
chunkTVSTM5J5_js.CollaborationProvider,
|
|
35613
35613
|
{
|
|
35614
35614
|
config: collaboration,
|
|
35615
35615
|
canvasWidth: canvasSize.width,
|
|
@@ -35667,7 +35667,7 @@ ${url}`)
|
|
|
35667
35667
|
);
|
|
35668
35668
|
PowerPointViewer.displayName = "PowerPointViewer";
|
|
35669
35669
|
function CollaborationStatusStrip() {
|
|
35670
|
-
const collab =
|
|
35670
|
+
const collab = chunkTVSTM5J5_js.useCollaboration();
|
|
35671
35671
|
if (!collab) {
|
|
35672
35672
|
return null;
|
|
35673
35673
|
}
|
|
@@ -35691,8 +35691,8 @@ function CollaborationDocumentSync({
|
|
|
35691
35691
|
deckSaveState,
|
|
35692
35692
|
onReadOnlyChange
|
|
35693
35693
|
}) {
|
|
35694
|
-
const collab =
|
|
35695
|
-
|
|
35694
|
+
const collab = chunkTVSTM5J5_js.useCollaboration();
|
|
35695
|
+
chunkTVSTM5J5_js.useCollaborationDocumentSync({
|
|
35696
35696
|
collaboration: collab,
|
|
35697
35697
|
slides,
|
|
35698
35698
|
templateElementsBySlideId,
|
|
@@ -35711,14 +35711,14 @@ function CollaborationFollowLayer({
|
|
|
35711
35711
|
setActiveSlideIndex,
|
|
35712
35712
|
slideCount
|
|
35713
35713
|
}) {
|
|
35714
|
-
const collab =
|
|
35715
|
-
const { followedClientId, followUser } =
|
|
35714
|
+
const collab = chunkTVSTM5J5_js.useCollaboration();
|
|
35715
|
+
const { followedClientId, followUser } = chunkTVSTM5J5_js.useFollowMode({
|
|
35716
35716
|
collab,
|
|
35717
35717
|
activeSlideIndex,
|
|
35718
35718
|
setActiveSlideIndex,
|
|
35719
35719
|
slideCount
|
|
35720
35720
|
});
|
|
35721
|
-
|
|
35721
|
+
chunkTVSTM5J5_js.useBroadcastFollower({
|
|
35722
35722
|
collab,
|
|
35723
35723
|
activeSlideIndex,
|
|
35724
35724
|
setActiveSlideIndex,
|