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