pptx-react-viewer 4.64.0 → 4.64.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/dist/{AiChatPanel-DRY6JUQE.js → AiChatPanel-7AFFNYEN.js} +19 -19
- package/dist/AiChatPanel-7AFFNYEN.js.br +0 -0
- package/dist/AiChatPanel-7AFFNYEN.js.gz +0 -0
- package/dist/{AiChatPanel-KBSDSD5Y.mjs → AiChatPanel-7U7IJRNY.mjs} +1 -1
- package/dist/AiChatPanel-7U7IJRNY.mjs.br +0 -0
- package/dist/AiChatPanel-7U7IJRNY.mjs.gz +0 -0
- package/dist/ai.js +2 -2
- package/dist/ai.js.br +0 -0
- package/dist/ai.js.gz +0 -0
- package/dist/ai.mjs +1 -1
- package/dist/ai.mjs.br +0 -0
- package/dist/ai.mjs.gz +0 -0
- package/dist/{chunk-JKSUB7DR.js → chunk-5DBKW7F3.js} +3 -3
- package/dist/chunk-5DBKW7F3.js.br +0 -0
- package/dist/{chunk-JKSUB7DR.js.gz → chunk-5DBKW7F3.js.gz} +0 -0
- package/dist/{chunk-46VMP4EH.mjs → chunk-5ZW3GP6C.mjs} +4 -4
- package/dist/chunk-5ZW3GP6C.mjs.br +0 -0
- package/dist/chunk-5ZW3GP6C.mjs.gz +0 -0
- package/dist/{chunk-FYYQ4OGF.mjs → chunk-G5JGUSBL.mjs} +12 -5
- package/dist/chunk-G5JGUSBL.mjs.br +0 -0
- package/dist/chunk-G5JGUSBL.mjs.gz +0 -0
- package/dist/{chunk-PX46BOMQ.js → chunk-GXL2XMST.js} +560 -560
- package/dist/chunk-GXL2XMST.js.br +0 -0
- package/dist/chunk-GXL2XMST.js.gz +0 -0
- package/dist/{chunk-SHI3PQ5F.mjs → chunk-HZBEKG5R.mjs} +4 -4
- package/dist/chunk-HZBEKG5R.mjs.br +0 -0
- package/dist/chunk-HZBEKG5R.mjs.gz +0 -0
- package/dist/{chunk-7UFO4OZQ.js → chunk-PNDORR6S.js} +1 -1
- package/dist/chunk-PNDORR6S.js.br +0 -0
- package/dist/chunk-PNDORR6S.js.gz +0 -0
- package/dist/{chunk-73SDWM6K.js → chunk-VGU5S37T.js} +212 -205
- package/dist/chunk-VGU5S37T.js.br +0 -0
- package/dist/chunk-VGU5S37T.js.gz +0 -0
- package/dist/{chunk-SGWF6GUX.mjs → chunk-WAIX4VJ2.mjs} +1 -1
- package/dist/chunk-WAIX4VJ2.mjs.br +0 -0
- package/dist/chunk-WAIX4VJ2.mjs.gz +0 -0
- package/dist/index.js +27 -27
- 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.js +81 -81
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/internals.mjs +2 -2
- package/dist/internals.mjs.br +0 -0
- package/dist/internals.mjs.gz +0 -0
- package/dist/pptx-viewer-canvas.css +1 -1
- package/dist/pptx-viewer-canvas.css.br +0 -0
- package/dist/pptx-viewer-canvas.css.gz +0 -0
- package/dist/pptx-viewer.css +1 -1
- package/dist/pptx-viewer.css.br +0 -0
- package/dist/pptx-viewer.css.gz +0 -0
- package/dist/viewer/index.js +21 -21
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/viewer/index.mjs +4 -4
- package/dist/viewer/index.mjs.br +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +3 -3
- package/dist/AiChatPanel-DRY6JUQE.js.br +0 -0
- package/dist/AiChatPanel-DRY6JUQE.js.gz +0 -0
- package/dist/AiChatPanel-KBSDSD5Y.mjs.br +0 -0
- package/dist/AiChatPanel-KBSDSD5Y.mjs.gz +0 -0
- package/dist/chunk-46VMP4EH.mjs.br +0 -0
- package/dist/chunk-46VMP4EH.mjs.gz +0 -0
- package/dist/chunk-73SDWM6K.js.br +0 -0
- package/dist/chunk-73SDWM6K.js.gz +0 -0
- package/dist/chunk-7UFO4OZQ.js.br +0 -0
- package/dist/chunk-7UFO4OZQ.js.gz +0 -0
- package/dist/chunk-FYYQ4OGF.mjs.br +0 -0
- package/dist/chunk-FYYQ4OGF.mjs.gz +0 -0
- package/dist/chunk-JKSUB7DR.js.br +0 -0
- package/dist/chunk-PX46BOMQ.js.br +0 -0
- package/dist/chunk-PX46BOMQ.js.gz +0 -0
- package/dist/chunk-SGWF6GUX.mjs.br +0 -0
- package/dist/chunk-SGWF6GUX.mjs.gz +0 -0
- package/dist/chunk-SHI3PQ5F.mjs.br +0 -0
- package/dist/chunk-SHI3PQ5F.mjs.gz +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
3
|
+
var chunkPNDORR6S_js = require('./chunk-PNDORR6S.js');
|
|
4
|
+
var chunkVGU5S37T_js = require('./chunk-VGU5S37T.js');
|
|
5
|
+
var chunk5DBKW7F3_js = require('./chunk-5DBKW7F3.js');
|
|
6
6
|
var pptx = require('ooxml-ui/pptx');
|
|
7
7
|
var React108 = require('react');
|
|
8
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -49,7 +49,7 @@ function AvatarCircle({
|
|
|
49
49
|
avatar,
|
|
50
50
|
isLocal
|
|
51
51
|
}) {
|
|
52
|
-
const { t } =
|
|
52
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
53
53
|
const initials = getInitials(name);
|
|
54
54
|
const title = isLocal ? t("pptx.collaboration.youLabel", { name }) : name;
|
|
55
55
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -84,7 +84,7 @@ function UserAvatarBar({
|
|
|
84
84
|
status,
|
|
85
85
|
maxVisible = 5
|
|
86
86
|
}) {
|
|
87
|
-
const { t } =
|
|
87
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
88
88
|
if (status === "disconnected" || status === "error") {
|
|
89
89
|
return null;
|
|
90
90
|
}
|
|
@@ -158,7 +158,7 @@ function CollaborationStatusIndicator({
|
|
|
158
158
|
connectedCount,
|
|
159
159
|
onRetry
|
|
160
160
|
}) {
|
|
161
|
-
const { t } =
|
|
161
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
162
162
|
const style = STATUS_STYLES[status];
|
|
163
163
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
164
164
|
"div",
|
|
@@ -199,7 +199,7 @@ function FollowModeBar({
|
|
|
199
199
|
followedClientId,
|
|
200
200
|
onFollow
|
|
201
201
|
}) {
|
|
202
|
-
const { t } =
|
|
202
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
203
203
|
if (presences.length === 0) {
|
|
204
204
|
return null;
|
|
205
205
|
}
|
|
@@ -304,7 +304,7 @@ function SectionContextMenu({
|
|
|
304
304
|
onAddSection,
|
|
305
305
|
onClose
|
|
306
306
|
}) {
|
|
307
|
-
const { t } =
|
|
307
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
308
308
|
React108.useEffect(() => {
|
|
309
309
|
const onKeyDown = (event) => {
|
|
310
310
|
if (event.key === "Escape") {
|
|
@@ -405,7 +405,7 @@ function SectionHeader({
|
|
|
405
405
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
406
406
|
lu.LuChevronDown,
|
|
407
407
|
{
|
|
408
|
-
className:
|
|
408
|
+
className: chunk5DBKW7F3_js.cn(
|
|
409
409
|
"h-3 w-3 flex-shrink-0 transition-transform",
|
|
410
410
|
isCollapsed ? "-rotate-90" : "rotate-0"
|
|
411
411
|
)
|
|
@@ -480,7 +480,7 @@ function SlideContextMenu({
|
|
|
480
480
|
onAddSection,
|
|
481
481
|
onClose
|
|
482
482
|
}) {
|
|
483
|
-
const { t } =
|
|
483
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
484
484
|
const selected = state.selectedIndexes;
|
|
485
485
|
const selectedSlides = selected.map((i) => slides[i]).filter((s) => Boolean(s));
|
|
486
486
|
const entries = pptx.buildSlidePaneContextMenuEntries({
|
|
@@ -544,14 +544,14 @@ function SlideThumbnailImpl({
|
|
|
544
544
|
}) {
|
|
545
545
|
const safeCanvasWidth = Math.max(canvasSize.width, 1);
|
|
546
546
|
const safeCanvasHeight = Math.max(canvasSize.height, 1);
|
|
547
|
-
const width = previewWidth ??
|
|
547
|
+
const width = previewWidth ?? chunk5DBKW7F3_js.SLIDE_NAV_THUMBNAIL_WIDTH;
|
|
548
548
|
const scale = width / safeCanvasWidth;
|
|
549
549
|
const previewHeight = pptx.editorThumbnailHeight(safeCanvasWidth, safeCanvasHeight, width);
|
|
550
550
|
const previewElements = pptx.buildPreviewElements(slide, templateElements);
|
|
551
551
|
const slideFieldContext = pptx.deriveSlideFieldContext(fieldContext, slide);
|
|
552
|
-
const { t } =
|
|
552
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
553
553
|
const transitionLabel = slide.transition ? (() => {
|
|
554
|
-
const opt =
|
|
554
|
+
const opt = chunk5DBKW7F3_js.SLIDE_TRANSITION_OPTIONS.find((o) => o.value === slide.transition?.type);
|
|
555
555
|
return opt ? t(opt.i18nKey) : slide.transition.type;
|
|
556
556
|
})() : void 0;
|
|
557
557
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -577,7 +577,7 @@ function SlideThumbnailImpl({
|
|
|
577
577
|
...pptx.deviceStrokeStageStyle(scale)
|
|
578
578
|
},
|
|
579
579
|
children: [
|
|
580
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
580
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVGU5S37T_js.SlideBackgroundImageLayer, { slide }),
|
|
581
581
|
slide.transition && slide.transition.type !== "none" && slide.transition.type !== "cut" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
582
582
|
"div",
|
|
583
583
|
{
|
|
@@ -587,7 +587,7 @@ function SlideThumbnailImpl({
|
|
|
587
587
|
}
|
|
588
588
|
),
|
|
589
589
|
previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
590
|
-
|
|
590
|
+
chunkVGU5S37T_js.StaticElementRenderer,
|
|
591
591
|
{
|
|
592
592
|
element,
|
|
593
593
|
activeSlide: slide,
|
|
@@ -713,7 +713,7 @@ function LazyThumbnailInner({
|
|
|
713
713
|
}
|
|
714
714
|
var LazyThumbnail = /* @__PURE__ */ React108__default.default.memo(LazyThumbnailInner);
|
|
715
715
|
function declaredSectionFacts(groups, sectionId) {
|
|
716
|
-
const declared = groups.filter((group) => group.id !==
|
|
716
|
+
const declared = groups.filter((group) => group.id !== chunk5DBKW7F3_js.DEFAULT_SECTION_GROUP_ID && group.id !== chunk5DBKW7F3_js.UNGROUPED_SECTION_ID).map((group) => group.id);
|
|
717
717
|
return {
|
|
718
718
|
isDeclared: declared.includes(sectionId),
|
|
719
719
|
index: declared.indexOf(sectionId),
|
|
@@ -770,7 +770,7 @@ function SlideItemInner({
|
|
|
770
770
|
onDrop,
|
|
771
771
|
slideRef
|
|
772
772
|
}) {
|
|
773
|
-
const { t } =
|
|
773
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
774
774
|
const isHidden = Boolean(slide.hidden);
|
|
775
775
|
const cue = pptx.hiddenSlideCue(slide.hidden, "rail", slideIndex);
|
|
776
776
|
const handleContextMenu = React108.useCallback(
|
|
@@ -798,7 +798,7 @@ function SlideItemInner({
|
|
|
798
798
|
"data-pptx-chrome": "slide-row",
|
|
799
799
|
"aria-describedby": cue.labelId,
|
|
800
800
|
"data-pptx-slide-hidden": cue.marker,
|
|
801
|
-
className:
|
|
801
|
+
className: chunk5DBKW7F3_js.cn(
|
|
802
802
|
"group relative flex w-full items-center gap-1 cursor-pointer border-0 bg-transparent py-0.5 px-1 text-left transition-all",
|
|
803
803
|
isActive && "bg-accent/40 before:absolute before:left-0 before:top-1 before:bottom-1 before:w-[3px] before:bg-primary before:rounded-r",
|
|
804
804
|
isSelected && !isActive && "bg-accent/20 ring-1 ring-inset ring-primary/50",
|
|
@@ -820,7 +820,7 @@ function SlideItemInner({
|
|
|
820
820
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
821
821
|
"span",
|
|
822
822
|
{
|
|
823
|
-
className:
|
|
823
|
+
className: chunk5DBKW7F3_js.cn(
|
|
824
824
|
"text-[10px] tabular-nums text-right select-none w-full",
|
|
825
825
|
isActive ? "text-primary font-medium" : "text-muted-foreground"
|
|
826
826
|
),
|
|
@@ -843,7 +843,7 @@ function SlideItemInner({
|
|
|
843
843
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
844
844
|
"div",
|
|
845
845
|
{
|
|
846
|
-
className:
|
|
846
|
+
className: chunk5DBKW7F3_js.cn(
|
|
847
847
|
"relative shrink-0 overflow-hidden border transition-colors bg-white",
|
|
848
848
|
isActive ? "border-primary/60" : "border-transparent group-hover:border-border/40"
|
|
849
849
|
),
|
|
@@ -1041,8 +1041,8 @@ function SlidesPaneSidebar({
|
|
|
1041
1041
|
fieldContext,
|
|
1042
1042
|
tableStyleContext
|
|
1043
1043
|
}) {
|
|
1044
|
-
const { t } =
|
|
1045
|
-
const collab =
|
|
1044
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
1045
|
+
const collab = chunkVGU5S37T_js.useCollaboration();
|
|
1046
1046
|
const slideRefs = React108.useRef(/* @__PURE__ */ new Map());
|
|
1047
1047
|
const renameInputRef = React108.useRef(null);
|
|
1048
1048
|
const slidePresenceMap = React108.useMemo(() => {
|
|
@@ -1067,7 +1067,7 @@ function SlidesPaneSidebar({
|
|
|
1067
1067
|
() => estimateSlideItemHeight(canvasSize.width, canvasSize.height, previewWidth),
|
|
1068
1068
|
[canvasSize.width, canvasSize.height, previewWidth]
|
|
1069
1069
|
);
|
|
1070
|
-
const showSectionHeaders = sectionGroups.some((group) => group.id !==
|
|
1070
|
+
const showSectionHeaders = sectionGroups.some((group) => group.id !== chunk5DBKW7F3_js.DEFAULT_SECTION_GROUP_ID);
|
|
1071
1071
|
const {
|
|
1072
1072
|
collapsedSections,
|
|
1073
1073
|
renamingSectionId,
|
|
@@ -1137,7 +1137,7 @@ function SlidesPaneSidebar({
|
|
|
1137
1137
|
[sectionGroups, showSectionHeaders, effectiveCollapsed]
|
|
1138
1138
|
);
|
|
1139
1139
|
const shouldVirtualize = slides.length >= VIRTUALIZATION_THRESHOLD;
|
|
1140
|
-
const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } =
|
|
1140
|
+
const { startIndex, endIndex, totalHeight, offsetY, scrollContainerRef, scrollToIndex } = chunkVGU5S37T_js.useVirtualizedSlides({
|
|
1141
1141
|
totalItems: shouldVirtualize ? flatItems.length : 0,
|
|
1142
1142
|
itemHeight: estimatedItemHeight
|
|
1143
1143
|
});
|
|
@@ -1421,7 +1421,7 @@ function SlideTemplatePreview({
|
|
|
1421
1421
|
transformOrigin: "top left"
|
|
1422
1422
|
},
|
|
1423
1423
|
children: previewSlide.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1424
|
-
|
|
1424
|
+
chunkVGU5S37T_js.StaticElementRenderer,
|
|
1425
1425
|
{
|
|
1426
1426
|
element,
|
|
1427
1427
|
activeSlide: previewSlide,
|
|
@@ -1489,8 +1489,8 @@ function SlideTemplateGalleryDialog({
|
|
|
1489
1489
|
onInsert,
|
|
1490
1490
|
scheme
|
|
1491
1491
|
}) {
|
|
1492
|
-
const { t } =
|
|
1493
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
1492
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
1493
|
+
const { panelStyle, handlers: dragHandlers } = chunkVGU5S37T_js.useModalDismissDrag(onClose);
|
|
1494
1494
|
const [selected, setSelected] = React108.useState(null);
|
|
1495
1495
|
const dialogRef = React108.useRef(null);
|
|
1496
1496
|
useModalFocus(isOpen, dialogRef, onClose);
|
|
@@ -1575,7 +1575,7 @@ function SlideTemplateGalleryDialog({
|
|
|
1575
1575
|
onInsert(spec.id);
|
|
1576
1576
|
onClose();
|
|
1577
1577
|
},
|
|
1578
|
-
className:
|
|
1578
|
+
className: chunk5DBKW7F3_js.cn(
|
|
1579
1579
|
"flex flex-col items-center gap-1 p-2 rounded border transition-colors",
|
|
1580
1580
|
selected === spec.id ? "border-primary bg-primary/20" : "border-border hover:border-border hover:bg-muted/50"
|
|
1581
1581
|
),
|
|
@@ -1785,7 +1785,7 @@ function nowLocalInputValue() {
|
|
|
1785
1785
|
return `${now.getFullYear()}-${pad(now.getMonth() + 1)}-${pad(now.getDate())}T${pad(now.getHours())}:${pad(now.getMinutes())}`;
|
|
1786
1786
|
}
|
|
1787
1787
|
function DateTimeFieldDialog(p) {
|
|
1788
|
-
const { t } =
|
|
1788
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
1789
1789
|
const [datePickerValue, setDatePickerValue] = React108.useState(nowLocalInputValue);
|
|
1790
1790
|
const [dateFormat, setDateFormat] = React108.useState("locale");
|
|
1791
1791
|
const confirmDatePicker = React108.useCallback(() => {
|
|
@@ -1891,7 +1891,7 @@ function useViewerCustomizationContext() {
|
|
|
1891
1891
|
return React108.useContext(ViewerCustomizationContext);
|
|
1892
1892
|
}
|
|
1893
1893
|
function InsertSection(p) {
|
|
1894
|
-
const { t } =
|
|
1894
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
1895
1895
|
const customization = useViewerCustomizationContext();
|
|
1896
1896
|
const ref = React108.useRef(null);
|
|
1897
1897
|
const [datePickerOpen, setDatePickerOpen] = React108.useState(false);
|
|
@@ -2040,8 +2040,8 @@ function MobileSheet({
|
|
|
2040
2040
|
headerRight
|
|
2041
2041
|
}) {
|
|
2042
2042
|
const sheetRef = React108.useRef(null);
|
|
2043
|
-
const { t } =
|
|
2044
|
-
const { dragY, dragging, handlers } =
|
|
2043
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
2044
|
+
const { dragY, dragging, handlers } = chunkVGU5S37T_js.useSheetDismissDrag(onClose);
|
|
2045
2045
|
useModalFocus(open, sheetRef, onClose);
|
|
2046
2046
|
if (!open) {
|
|
2047
2047
|
return null;
|
|
@@ -2065,7 +2065,7 @@ function MobileSheet({
|
|
|
2065
2065
|
"aria-modal": "true",
|
|
2066
2066
|
"aria-label": typeof title === "string" ? title : t("pptx.mobileSheet.ariaLabel"),
|
|
2067
2067
|
tabIndex: -1,
|
|
2068
|
-
className:
|
|
2068
|
+
className: chunk5DBKW7F3_js.cn(
|
|
2069
2069
|
"relative bg-background border-t border-border rounded-t-2xl shadow-2xl flex flex-col overflow-hidden",
|
|
2070
2070
|
"animate-in slide-in-from-bottom duration-200",
|
|
2071
2071
|
className
|
|
@@ -2112,7 +2112,7 @@ function MobileSheet({
|
|
|
2112
2112
|
] });
|
|
2113
2113
|
}
|
|
2114
2114
|
function MobileInsertSheet(p) {
|
|
2115
|
-
const { t } =
|
|
2115
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
2116
2116
|
const close = () => p.onCloseMobileInsert?.();
|
|
2117
2117
|
const customization = useViewerCustomizationContext();
|
|
2118
2118
|
const [dateOpen, setDateOpen] = React108.useState(false);
|
|
@@ -2188,7 +2188,7 @@ function MobileInsertSheet(p) {
|
|
|
2188
2188
|
] });
|
|
2189
2189
|
}
|
|
2190
2190
|
function AnimationsSection(p) {
|
|
2191
|
-
const { t } =
|
|
2191
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
2192
2192
|
const ref = React108.useRef(null);
|
|
2193
2193
|
const [previewActive, setPreviewActive] = React108.useState(false);
|
|
2194
2194
|
const timer = React108.useRef(void 0);
|
|
@@ -2269,7 +2269,7 @@ function WebHomeControls({
|
|
|
2269
2269
|
onPopup,
|
|
2270
2270
|
layoutArtwork
|
|
2271
2271
|
}) {
|
|
2272
|
-
const { t } =
|
|
2272
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
2273
2273
|
const ref = React108.useRef(null);
|
|
2274
2274
|
React108.useEffect(() => {
|
|
2275
2275
|
if (ref.current) {
|
|
@@ -2310,7 +2310,7 @@ function WebHomeControls({
|
|
|
2310
2310
|
function ShapeArrangeExtras(p) {
|
|
2311
2311
|
const commands = useShapeFormatContext();
|
|
2312
2312
|
const crop = commands?.crop;
|
|
2313
|
-
const { isHidden } =
|
|
2313
|
+
const { isHidden } = chunkVGU5S37T_js.useToolbarVisibility(p.hiddenActions);
|
|
2314
2314
|
const { onGroupElements, onUngroupElement, onUpdateElementStyle } = p;
|
|
2315
2315
|
const controls = React108.useMemo(
|
|
2316
2316
|
() => pptx.arrangeShapeHomeControls({
|
|
@@ -2361,7 +2361,7 @@ function ShapeArrangeExtras(p) {
|
|
|
2361
2361
|
return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "arrange-shape", controls, onRequest: request });
|
|
2362
2362
|
}
|
|
2363
2363
|
function ArrangeSection(p) {
|
|
2364
|
-
const { t } =
|
|
2364
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
2365
2365
|
const {
|
|
2366
2366
|
onAlignElements,
|
|
2367
2367
|
onDistributeElements,
|
|
@@ -2468,7 +2468,7 @@ function RibbonGallery({
|
|
|
2468
2468
|
tagControl = true,
|
|
2469
2469
|
onCommand
|
|
2470
2470
|
}) {
|
|
2471
|
-
const { t } =
|
|
2471
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
2472
2472
|
const ref = React108.useRef(null);
|
|
2473
2473
|
const commands = useRibbonGalleryCommands();
|
|
2474
2474
|
const context = commands?.context;
|
|
@@ -2603,7 +2603,7 @@ function WebRibbonToggle({
|
|
|
2603
2603
|
);
|
|
2604
2604
|
}
|
|
2605
2605
|
function TransitionsSection(p) {
|
|
2606
|
-
const { t } =
|
|
2606
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
2607
2607
|
const ref = React108.useRef(null);
|
|
2608
2608
|
const draft = React108.useMemo(() => pptx.readRibbonTransitionDraft(p.activeSlide), [p.activeSlide]);
|
|
2609
2609
|
const transition = p.activeSlide?.transition;
|
|
@@ -2645,7 +2645,7 @@ function TransitionsSection(p) {
|
|
|
2645
2645
|
case "soundPreview": {
|
|
2646
2646
|
const url = pptx.ribbonTransitionStockSoundUrl(transition);
|
|
2647
2647
|
if (url) {
|
|
2648
|
-
|
|
2648
|
+
chunkVGU5S37T_js.playAnimationSound(url);
|
|
2649
2649
|
}
|
|
2650
2650
|
break;
|
|
2651
2651
|
}
|
|
@@ -2664,7 +2664,7 @@ function TransitionsSection(p) {
|
|
|
2664
2664
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-ribbon-transitions", { ref });
|
|
2665
2665
|
}
|
|
2666
2666
|
function DesignSection(p) {
|
|
2667
|
-
const { t } =
|
|
2667
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
2668
2668
|
const actions = {
|
|
2669
2669
|
"design.themes.browseThemes": p.onToggleThemeGallery,
|
|
2670
2670
|
"design.themes.editTheme": p.onToggleThemeEditor,
|
|
@@ -2727,7 +2727,7 @@ function useRecentColors() {
|
|
|
2727
2727
|
return React108.useContext(RecentColorsContext);
|
|
2728
2728
|
}
|
|
2729
2729
|
function DrawSection(p) {
|
|
2730
|
-
const { t } =
|
|
2730
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
2731
2731
|
const { pushColor, recentColors } = useRecentColors();
|
|
2732
2732
|
const ref = React108.useRef(null);
|
|
2733
2733
|
React108.useEffect(() => {
|
|
@@ -2825,7 +2825,7 @@ var AccountAuthContext = /* @__PURE__ */ React108.createContext(
|
|
|
2825
2825
|
);
|
|
2826
2826
|
var cardClass = "border border-border bg-card p-6 text-card-foreground";
|
|
2827
2827
|
function AccountPage() {
|
|
2828
|
-
const { t } =
|
|
2828
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
2829
2829
|
const accountAuth = React108.useContext(AccountAuthContext);
|
|
2830
2830
|
const storage = useViewerStorage();
|
|
2831
2831
|
const cloud = useViewerCloudFiles();
|
|
@@ -2853,7 +2853,7 @@ function AccountPage() {
|
|
|
2853
2853
|
refreshUsage();
|
|
2854
2854
|
setTimeout(() => setCleared(false), 4e3);
|
|
2855
2855
|
};
|
|
2856
|
-
const version = "4.64.
|
|
2856
|
+
const version = "4.64.1" ;
|
|
2857
2857
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-8 max-w-[700px] space-y-6", children: [
|
|
2858
2858
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { className: cardClass, children: [
|
|
2859
2859
|
/* @__PURE__ */ jsxRuntime.jsxs("h2", { className: "flex items-center gap-2 text-sm font-semibold", children: [
|
|
@@ -2893,7 +2893,7 @@ function AccountPage() {
|
|
|
2893
2893
|
"aria-label": color,
|
|
2894
2894
|
"aria-pressed": profile.avatarColor === color,
|
|
2895
2895
|
onClick: () => updateProfile({ avatarColor: color }),
|
|
2896
|
-
className:
|
|
2896
|
+
className: chunk5DBKW7F3_js.cn(
|
|
2897
2897
|
"size-7 rounded-full border-2 transition-transform",
|
|
2898
2898
|
profile.avatarColor === color ? "border-foreground scale-110" : "border-transparent hover:scale-105"
|
|
2899
2899
|
),
|
|
@@ -2968,7 +2968,7 @@ function BackstageAction(props) {
|
|
|
2968
2968
|
] });
|
|
2969
2969
|
}
|
|
2970
2970
|
function BackstageNewGallery(props) {
|
|
2971
|
-
const { t } =
|
|
2971
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
2972
2972
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2973
2973
|
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "mt-7 text-[17px] font-semibold", children: t("pptx.backstage.newHeading") }),
|
|
2974
2974
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-5 grid grid-cols-[repeat(auto-fill,minmax(150px,1fr))] gap-6", children: pptx.BACKSTAGE_TEMPLATES.map((template) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -2994,7 +2994,7 @@ function BackstageNewGallery(props) {
|
|
|
2994
2994
|
] });
|
|
2995
2995
|
}
|
|
2996
2996
|
function BackstageRecentList(props) {
|
|
2997
|
-
const { t } =
|
|
2997
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
2998
2998
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-5 border-t border-border", children: [
|
|
2999
2999
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-[1fr_120px_90px] px-3 py-2 text-[11px] font-semibold text-muted-foreground", children: [
|
|
3000
3000
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: t("pptx.backstage.columnName") }),
|
|
@@ -3048,7 +3048,7 @@ function BackstageCards({
|
|
|
3048
3048
|
props,
|
|
3049
3049
|
run
|
|
3050
3050
|
}) {
|
|
3051
|
-
const { t } =
|
|
3051
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
3052
3052
|
const handlers = {
|
|
3053
3053
|
protect: props.onOpenPasswordProtection,
|
|
3054
3054
|
inspect: props.onOpenDocumentProperties,
|
|
@@ -3110,7 +3110,7 @@ function BackstageNavIcon({ page }) {
|
|
|
3110
3110
|
return Icon ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "size-[17px] shrink-0", "aria-hidden": "true" }) : null;
|
|
3111
3111
|
}
|
|
3112
3112
|
function FileSection(p) {
|
|
3113
|
-
const { t, locale } =
|
|
3113
|
+
const { t, locale } = chunk5DBKW7F3_js.useTranslation();
|
|
3114
3114
|
const [requestedPage, setRequestedPage] = React108.useState("home");
|
|
3115
3115
|
const customization = useViewerCustomizationContext();
|
|
3116
3116
|
const nav = pptx.backstageNavEntries(pptx.BACKSTAGE_NAV, customization);
|
|
@@ -3118,7 +3118,7 @@ function FileSection(p) {
|
|
|
3118
3118
|
const page = offered(requestedPage) ? requestedPage : offered("home") ? "home" : nav.find((item) => item.id !== "save" && item.id !== "close")?.id ?? "home";
|
|
3119
3119
|
const [query, setQuery] = React108.useState("");
|
|
3120
3120
|
const [recent, setRecent] = React108.useState([]);
|
|
3121
|
-
const { isHidden } =
|
|
3121
|
+
const { isHidden } = chunkVGU5S37T_js.useToolbarVisibility(p.hiddenActions);
|
|
3122
3122
|
const exportHidden = isHidden("export");
|
|
3123
3123
|
const storage = useViewerStorage();
|
|
3124
3124
|
const cloud = useViewerCloudFiles();
|
|
@@ -3387,7 +3387,7 @@ function RibbonMenu({
|
|
|
3387
3387
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3388
3388
|
"div",
|
|
3389
3389
|
{
|
|
3390
|
-
className:
|
|
3390
|
+
className: chunk5DBKW7F3_js.cn("fixed z-50", className),
|
|
3391
3391
|
style: pos ? { left: pos.left, top: pos.top } : { visibility: "hidden" },
|
|
3392
3392
|
children
|
|
3393
3393
|
}
|
|
@@ -3397,7 +3397,7 @@ var THUMB_WIDTH = 128;
|
|
|
3397
3397
|
var THUMB_HEIGHT = 72;
|
|
3398
3398
|
var MAX_PREVIEW_ELEMENTS = 100;
|
|
3399
3399
|
function LayoutGalleryMenu(p) {
|
|
3400
|
-
const { t } =
|
|
3400
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
3401
3401
|
return /* @__PURE__ */ jsxRuntime.jsx(RibbonMenu, { anchorRef: p.anchorRef, className: "flex flex-col w-[620px] pt-1", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3402
3402
|
"div",
|
|
3403
3403
|
{
|
|
@@ -3413,7 +3413,7 @@ function LayoutGalleryMenu(p) {
|
|
|
3413
3413
|
type: "button",
|
|
3414
3414
|
"aria-current": isCurrent ? "true" : void 0,
|
|
3415
3415
|
title: isCurrent ? `${layout.name} (${t("pptx.layoutGallery.current")})` : layout.name,
|
|
3416
|
-
className:
|
|
3416
|
+
className: chunk5DBKW7F3_js.cn(
|
|
3417
3417
|
"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",
|
|
3418
3418
|
isCurrent ? "border-primary bg-primary/10" : "border-transparent"
|
|
3419
3419
|
),
|
|
@@ -3487,7 +3487,7 @@ function LayoutArtwork({
|
|
|
3487
3487
|
backgroundColor
|
|
3488
3488
|
};
|
|
3489
3489
|
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: (preview?.elements ?? []).slice(0, MAX_PREVIEW_ELEMENTS).map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
3490
|
-
|
|
3490
|
+
chunkVGU5S37T_js.StaticElementRenderer,
|
|
3491
3491
|
{
|
|
3492
3492
|
element,
|
|
3493
3493
|
activeSlide: slide,
|
|
@@ -3762,7 +3762,7 @@ function WebRibbonSection({
|
|
|
3762
3762
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-ribbon-section", { ref });
|
|
3763
3763
|
}
|
|
3764
3764
|
function ReviewSection(p) {
|
|
3765
|
-
const { t } =
|
|
3765
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
3766
3766
|
const [activeCommentId, setActiveCommentId] = React108.useState(null);
|
|
3767
3767
|
React108.useEffect(() => pptx.trackActiveComment(document, setActiveCommentId), []);
|
|
3768
3768
|
const host = p.commentsHost;
|
|
@@ -3822,7 +3822,7 @@ function SlideShowOptions({
|
|
|
3822
3822
|
children
|
|
3823
3823
|
}) {
|
|
3824
3824
|
const ref = React108.useRef(null);
|
|
3825
|
-
const { t } =
|
|
3825
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
3826
3826
|
React108.useLayoutEffect(() => {
|
|
3827
3827
|
if (!ref.current) {
|
|
3828
3828
|
return;
|
|
@@ -3841,8 +3841,8 @@ function SlideShowOptions({
|
|
|
3841
3841
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-slide-show-options", { ref, children });
|
|
3842
3842
|
}
|
|
3843
3843
|
function SubtitleSettingsControl() {
|
|
3844
|
-
const { t } =
|
|
3845
|
-
const supplied = React108.useContext(
|
|
3844
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
3845
|
+
const supplied = React108.useContext(chunkVGU5S37T_js.ViewerOptionsStoreContext);
|
|
3846
3846
|
const fallback = React108.useRef(null);
|
|
3847
3847
|
if (!supplied) {
|
|
3848
3848
|
fallback.current ??= pptx.createViewerOptionsStore({ persist: false });
|
|
@@ -3875,8 +3875,8 @@ function SubtitleSettingsControl() {
|
|
|
3875
3875
|
);
|
|
3876
3876
|
}
|
|
3877
3877
|
function SlideShowSection(p) {
|
|
3878
|
-
const { t } =
|
|
3879
|
-
const { isHidden } =
|
|
3878
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
3879
|
+
const { isHidden } = chunkVGU5S37T_js.useToolbarVisibility(p.hiddenActions);
|
|
3880
3880
|
const actions = {
|
|
3881
3881
|
"slideShow.startSlideShow.fromBeginning": p.onPresentFromBeginning ?? (() => p.onSetMode("present")),
|
|
3882
3882
|
"slideShow.startSlideShow.fromCurrent": p.onPresent,
|
|
@@ -4120,7 +4120,7 @@ function FontFormatGroup(p) {
|
|
|
4120
4120
|
return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "font", controls, onRequest: request });
|
|
4121
4121
|
}
|
|
4122
4122
|
function FontPickerGroup(p) {
|
|
4123
|
-
const { t } =
|
|
4123
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
4124
4124
|
const { enabled, fontFamily, fontSize, themeFonts, embeddedFonts, customFonts } = p;
|
|
4125
4125
|
const { onFamily, onSize } = p;
|
|
4126
4126
|
const controls = React108.useMemo(
|
|
@@ -4143,7 +4143,7 @@ function FontPickerGroup(p) {
|
|
|
4143
4143
|
return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "font-picker", controls, onRequest: request });
|
|
4144
4144
|
}
|
|
4145
4145
|
function ParagraphGroup(p) {
|
|
4146
|
-
const { t } =
|
|
4146
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
4147
4147
|
const { canMut, canFormat, effectiveTs, onUpdateTextStyle, onToggleBullets } = p;
|
|
4148
4148
|
const commands = useRibbonGalleryCommands();
|
|
4149
4149
|
const align = pptx.paragraphHomeAlign(effectiveTs?.align);
|
|
@@ -4244,7 +4244,7 @@ function useParagraphListKind(element) {
|
|
|
4244
4244
|
return React108.useSyncExternalStore(subscribe, read, readServer);
|
|
4245
4245
|
}
|
|
4246
4246
|
function TextSection(p) {
|
|
4247
|
-
const { t } =
|
|
4247
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
4248
4248
|
const hasSel = Boolean(p.selectedElement);
|
|
4249
4249
|
const canMut = hasSel && p.canEdit;
|
|
4250
4250
|
const { fontFamily, fontSize } = extractFontInfo(p.selectedElement, p.themeFonts);
|
|
@@ -4320,7 +4320,7 @@ function TextSection(p) {
|
|
|
4320
4320
|
] });
|
|
4321
4321
|
}
|
|
4322
4322
|
function ViewSection(p) {
|
|
4323
|
-
const { t } =
|
|
4323
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
4324
4324
|
const ref = React108.useRef(null);
|
|
4325
4325
|
React108.useEffect(() => {
|
|
4326
4326
|
const host = ref.current;
|
|
@@ -4393,10 +4393,10 @@ var MENU_ITEMS = [
|
|
|
4393
4393
|
{ key: "file", label: "pptx.ribbon.tab.file", icon: lu.LuFile }
|
|
4394
4394
|
];
|
|
4395
4395
|
function MobileMenuSheet(props) {
|
|
4396
|
-
const { t } =
|
|
4396
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
4397
4397
|
const { open, onClose } = props;
|
|
4398
4398
|
const [active, setActive] = React108.useState("home");
|
|
4399
|
-
const { isTabVisible } =
|
|
4399
|
+
const { isTabVisible } = chunkVGU5S37T_js.useToolbarVisibility(props.hiddenActions);
|
|
4400
4400
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4401
4401
|
MobileSheet,
|
|
4402
4402
|
{
|
|
@@ -4410,7 +4410,7 @@ function MobileMenuSheet(props) {
|
|
|
4410
4410
|
{
|
|
4411
4411
|
type: "button",
|
|
4412
4412
|
onClick: () => setActive(active === key ? null : key),
|
|
4413
|
-
className:
|
|
4413
|
+
className: chunk5DBKW7F3_js.cn(
|
|
4414
4414
|
"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]",
|
|
4415
4415
|
active === key ? "bg-primary text-white border-primary" : "border-border text-muted-foreground hover:text-foreground hover:bg-accent/40"
|
|
4416
4416
|
),
|
|
@@ -4685,10 +4685,10 @@ function MobileSectionBody({
|
|
|
4685
4685
|
}
|
|
4686
4686
|
}
|
|
4687
4687
|
function MobileToolbar(props) {
|
|
4688
|
-
const { t } =
|
|
4688
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
4689
4689
|
const { mode, canUndo, canRedo, onUndo, onRedo, onSetMode, onSaveAsPptx } = props;
|
|
4690
4690
|
const [menuOpen, setMenuOpen] = React108.useState(false);
|
|
4691
|
-
const { isHidden } =
|
|
4691
|
+
const { isHidden } = chunkVGU5S37T_js.useToolbarVisibility(props.hiddenActions);
|
|
4692
4692
|
const showEdit = mode === "edit" || mode === "master";
|
|
4693
4693
|
const hidden = [];
|
|
4694
4694
|
if (isHidden("undo")) {
|
|
@@ -4734,8 +4734,8 @@ function MobileToolbar(props) {
|
|
|
4734
4734
|
] });
|
|
4735
4735
|
}
|
|
4736
4736
|
function ChartSelectionStrip() {
|
|
4737
|
-
const { t } =
|
|
4738
|
-
const commands =
|
|
4737
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
4738
|
+
const commands = chunkVGU5S37T_js.useChartFormatContext();
|
|
4739
4739
|
const chart = commands?.chart;
|
|
4740
4740
|
const chartData = chart?.type === "chart" ? chart.chartData : void 0;
|
|
4741
4741
|
const controls = React108.useMemo(
|
|
@@ -4766,7 +4766,7 @@ function PictureSizeStrip({
|
|
|
4766
4766
|
hiddenActions
|
|
4767
4767
|
}) {
|
|
4768
4768
|
const crop = useShapeFormatContext()?.crop;
|
|
4769
|
-
const { isHidden } =
|
|
4769
|
+
const { isHidden } = chunkVGU5S37T_js.useToolbarVisibility(hiddenActions);
|
|
4770
4770
|
const controls = React108.useMemo(
|
|
4771
4771
|
() => pptx.pictureSizeHomeControls({
|
|
4772
4772
|
editable: Boolean(crop),
|
|
@@ -4783,7 +4783,7 @@ function PictureSizeStrip({
|
|
|
4783
4783
|
return /* @__PURE__ */ jsxRuntime.jsx(WebHomeControls, { family: "picture-size", controls, onRequest: request });
|
|
4784
4784
|
}
|
|
4785
4785
|
function useTranslateOr() {
|
|
4786
|
-
const { t } =
|
|
4786
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
4787
4787
|
return (key, fallback) => pptx.galleryTextLabel(t, key, fallback);
|
|
4788
4788
|
}
|
|
4789
4789
|
function ContextualTabSection({
|
|
@@ -4806,7 +4806,7 @@ function ContextualTabSection({
|
|
|
4806
4806
|
)) });
|
|
4807
4807
|
}
|
|
4808
4808
|
function DrawingGroup(p) {
|
|
4809
|
-
const { t } =
|
|
4809
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
4810
4810
|
const { recentColors, pushColor } = useRecentColors();
|
|
4811
4811
|
const themeColors = useThemeColorMap();
|
|
4812
4812
|
const commands = useRibbonGalleryCommands();
|
|
@@ -4892,7 +4892,7 @@ function DrawingGroup(p) {
|
|
|
4892
4892
|
] });
|
|
4893
4893
|
}
|
|
4894
4894
|
function EditingSection(p) {
|
|
4895
|
-
const { t } =
|
|
4895
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
4896
4896
|
const { onToggleFindReplace, onSelectAll } = p;
|
|
4897
4897
|
const controls = React108.useMemo(
|
|
4898
4898
|
() => pptx.editingHomeControls({ selectAll: Boolean(onSelectAll) }),
|
|
@@ -4938,8 +4938,8 @@ function RibbonAddInSection({ tab }) {
|
|
|
4938
4938
|
var TAB_BASE = "relative px-3.5 py-2 text-[12px] font-medium whitespace-nowrap transition-colors max-md:min-h-[36px] max-md:px-3";
|
|
4939
4939
|
var TAB_UNDERLINE = "after:absolute after:-bottom-px after:left-0 after:right-0 after:h-[2.5px] after:bg-primary";
|
|
4940
4940
|
function RibbonTabBar(p) {
|
|
4941
|
-
const { t } =
|
|
4942
|
-
const viewerOptions =
|
|
4941
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
4942
|
+
const viewerOptions = chunkVGU5S37T_js.useViewerOptionsContext();
|
|
4943
4943
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4944
4944
|
"div",
|
|
4945
4945
|
{
|
|
@@ -4947,7 +4947,7 @@ function RibbonTabBar(p) {
|
|
|
4947
4947
|
"data-pptx-chrome": "ribbon-tabs",
|
|
4948
4948
|
className: "flex items-center border-b border-border/60 px-1 max-md:overflow-x-auto max-md:scrollbar-none",
|
|
4949
4949
|
children: [
|
|
4950
|
-
|
|
4950
|
+
chunk5DBKW7F3_js.TOOLBAR_SECTIONS.filter((s) => p.isTabVisible(s.id)).map((s) => {
|
|
4951
4951
|
const selected = p.activeSection === s.id;
|
|
4952
4952
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4953
4953
|
"button",
|
|
@@ -4957,7 +4957,7 @@ function RibbonTabBar(p) {
|
|
|
4957
4957
|
"aria-selected": selected,
|
|
4958
4958
|
title: pptx.resolveScreenTip(viewerOptions, t(s.labelKey)),
|
|
4959
4959
|
onClick: () => p.onSelectSection(s.id),
|
|
4960
|
-
className:
|
|
4960
|
+
className: chunk5DBKW7F3_js.cn(
|
|
4961
4961
|
TAB_BASE,
|
|
4962
4962
|
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"
|
|
4963
4963
|
),
|
|
@@ -4977,7 +4977,7 @@ function RibbonTabBar(p) {
|
|
|
4977
4977
|
...{ [pptx.RIBBON_ADD_IN_TAB_ATTR]: tab.id },
|
|
4978
4978
|
title: pptx.resolveScreenTip(viewerOptions, tab.label),
|
|
4979
4979
|
onClick: () => p.onSelectAddIn?.(tab.id),
|
|
4980
|
-
className:
|
|
4980
|
+
className: chunk5DBKW7F3_js.cn(
|
|
4981
4981
|
TAB_BASE,
|
|
4982
4982
|
selected ? `text-foreground ${TAB_UNDERLINE}` : "text-muted-foreground hover:text-foreground hover:bg-accent/30"
|
|
4983
4983
|
),
|
|
@@ -4998,7 +4998,7 @@ function RibbonTabBar(p) {
|
|
|
4998
4998
|
...{ [pptx.RIBBON_CONTEXTUAL_TAB_ATTR]: id },
|
|
4999
4999
|
title: pptx.resolveScreenTip(viewerOptions, label),
|
|
5000
5000
|
onClick: () => p.onSelectContextual(id),
|
|
5001
|
-
className:
|
|
5001
|
+
className: chunk5DBKW7F3_js.cn(
|
|
5002
5002
|
TAB_BASE,
|
|
5003
5003
|
"text-primary",
|
|
5004
5004
|
selected ? TAB_UNDERLINE : "hover:bg-primary/10"
|
|
@@ -5015,10 +5015,10 @@ function RibbonTabBar(p) {
|
|
|
5015
5015
|
);
|
|
5016
5016
|
}
|
|
5017
5017
|
function TabRowActions(p) {
|
|
5018
|
-
const { t } =
|
|
5019
|
-
const collab =
|
|
5018
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
5019
|
+
const collab = chunkVGU5S37T_js.useCollaboration();
|
|
5020
5020
|
const isCollaborating = Boolean(collab && collab.status === "connected");
|
|
5021
|
-
const { isHidden } =
|
|
5021
|
+
const { isHidden } = chunkVGU5S37T_js.useToolbarVisibility(p.hiddenActions);
|
|
5022
5022
|
const customization = useViewerCustomizationContext();
|
|
5023
5023
|
const ref = React108.useRef(null);
|
|
5024
5024
|
const handlers = React108.useRef(p);
|
|
@@ -5072,8 +5072,8 @@ function TabRowActions(p) {
|
|
|
5072
5072
|
] });
|
|
5073
5073
|
}
|
|
5074
5074
|
function TitleBarElement(p) {
|
|
5075
|
-
const { t } =
|
|
5076
|
-
const options =
|
|
5075
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
5076
|
+
const options = chunkVGU5S37T_js.useViewerOptionsContext();
|
|
5077
5077
|
const customization = useViewerCustomizationContext();
|
|
5078
5078
|
const ref = React108.useRef(null);
|
|
5079
5079
|
const stripVisible = options.quickAccess.visible && pptx.isPanelVisible(customization, "quickAccessToolbar");
|
|
@@ -5138,7 +5138,7 @@ function CustomShowsControls({
|
|
|
5138
5138
|
onDeleteActiveCustomShow,
|
|
5139
5139
|
onToggleCurrentSlideInActiveShow
|
|
5140
5140
|
}) {
|
|
5141
|
-
const { t } =
|
|
5141
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
5142
5142
|
if (customShows.length > 0) {
|
|
5143
5143
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
5144
5144
|
sep,
|
|
@@ -5193,7 +5193,7 @@ function CustomShowsControls({
|
|
|
5193
5193
|
{
|
|
5194
5194
|
type: "button",
|
|
5195
5195
|
onClick: onToggleCurrentSlideInActiveShow,
|
|
5196
|
-
className:
|
|
5196
|
+
className: chunk5DBKW7F3_js.cn(
|
|
5197
5197
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
5198
5198
|
isCurrentSlideInActiveShow ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
5199
5199
|
),
|
|
@@ -5232,7 +5232,7 @@ function PresentDropdown({
|
|
|
5232
5232
|
onToggleSubtitles,
|
|
5233
5233
|
showSubtitles
|
|
5234
5234
|
}) {
|
|
5235
|
-
const { t } =
|
|
5235
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
5236
5236
|
const [open, setOpen] = React108.useState(false);
|
|
5237
5237
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
5238
5238
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-stretch rounded border border-border bg-muted text-xs overflow-hidden", children: [
|
|
@@ -5241,7 +5241,7 @@ function PresentDropdown({
|
|
|
5241
5241
|
{
|
|
5242
5242
|
type: "button",
|
|
5243
5243
|
onClick: onPresent,
|
|
5244
|
-
className:
|
|
5244
|
+
className: chunk5DBKW7F3_js.cn(
|
|
5245
5245
|
"px-2 py-1 transition-colors",
|
|
5246
5246
|
isActive ? "bg-primary text-white" : "hover:bg-accent text-foreground"
|
|
5247
5247
|
),
|
|
@@ -5254,7 +5254,7 @@ function PresentDropdown({
|
|
|
5254
5254
|
{
|
|
5255
5255
|
type: "button",
|
|
5256
5256
|
onClick: () => setOpen((prev) => !prev),
|
|
5257
|
-
className:
|
|
5257
|
+
className: chunk5DBKW7F3_js.cn(
|
|
5258
5258
|
"inline-flex items-center px-1 transition-colors border-l border-border",
|
|
5259
5259
|
open ? "bg-primary text-white" : "hover:bg-accent text-foreground"
|
|
5260
5260
|
),
|
|
@@ -5382,7 +5382,7 @@ function ModeSwitcher({
|
|
|
5382
5382
|
onToggleSubtitles,
|
|
5383
5383
|
showSubtitles
|
|
5384
5384
|
}) {
|
|
5385
|
-
const { t } =
|
|
5385
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
5386
5386
|
if (mode === "master") {
|
|
5387
5387
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-center gap-1.5", children: [
|
|
5388
5388
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex items-center px-2 py-0.5 rounded-sm bg-amber-600/90 text-[10px] text-amber-50", children: t("pptx.mode.masterView") }),
|
|
@@ -5420,7 +5420,7 @@ var EXPORT_CARD_OF = {
|
|
|
5420
5420
|
copyImg: "copyImage"
|
|
5421
5421
|
};
|
|
5422
5422
|
function OverflowMenu(p) {
|
|
5423
|
-
const { t } =
|
|
5423
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
5424
5424
|
const customization = useViewerCustomizationContext();
|
|
5425
5425
|
const offered = (k) => {
|
|
5426
5426
|
const card = EXPORT_CARD_OF[k];
|
|
@@ -5457,7 +5457,7 @@ function OverflowMenu(p) {
|
|
|
5457
5457
|
{
|
|
5458
5458
|
type: "button",
|
|
5459
5459
|
onClick: () => p.onSetOverflowMenuOpen(!p.isOverflowMenuOpen),
|
|
5460
|
-
className:
|
|
5460
|
+
className: chunk5DBKW7F3_js.cn(
|
|
5461
5461
|
"p-1.5 rounded transition-colors",
|
|
5462
5462
|
p.isOverflowMenuOpen ? "bg-primary/80 text-white" : "bg-muted hover:bg-accent"
|
|
5463
5463
|
),
|
|
@@ -5495,7 +5495,7 @@ function OverflowMenu(p) {
|
|
|
5495
5495
|
] });
|
|
5496
5496
|
}
|
|
5497
5497
|
function ToolbarPrimaryRow(p) {
|
|
5498
|
-
const { t } =
|
|
5498
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
5499
5499
|
const {
|
|
5500
5500
|
mode,
|
|
5501
5501
|
canEdit,
|
|
@@ -5504,7 +5504,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
5504
5504
|
onToggleSidebar,
|
|
5505
5505
|
onToggleInspector
|
|
5506
5506
|
} = p;
|
|
5507
|
-
const collab =
|
|
5507
|
+
const collab = chunkVGU5S37T_js.useCollaboration();
|
|
5508
5508
|
const customization = useViewerCustomizationContext();
|
|
5509
5509
|
const showSlidesToggle = pptx.isPanelVisible(customization, "slidesPane");
|
|
5510
5510
|
const showInspectorToggle = pptx.isPanelVisible(customization, "inspector");
|
|
@@ -5524,7 +5524,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
5524
5524
|
{
|
|
5525
5525
|
type: "button",
|
|
5526
5526
|
onClick: onToggleSidebar,
|
|
5527
|
-
className:
|
|
5527
|
+
className: chunk5DBKW7F3_js.cn(qab, !isSidebarCollapsed ? "text-foreground" : "text-muted-foreground"),
|
|
5528
5528
|
title: t("pptx.toolbar.toggleSlidesPanel"),
|
|
5529
5529
|
"aria-label": t("pptx.toolbar.toggleSlidesPanel"),
|
|
5530
5530
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelLeft, { className: ic })
|
|
@@ -5585,7 +5585,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
5585
5585
|
{
|
|
5586
5586
|
type: "button",
|
|
5587
5587
|
onClick: onToggleInspector,
|
|
5588
|
-
className:
|
|
5588
|
+
className: chunk5DBKW7F3_js.cn(qab, isInspectorPaneOpen ? "text-foreground" : "text-muted-foreground"),
|
|
5589
5589
|
title: t("pptx.toolbar.toggleInspector"),
|
|
5590
5590
|
"aria-label": t("pptx.toolbar.toggleInspector"),
|
|
5591
5591
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuPanelRight, { className: ic })
|
|
@@ -5596,7 +5596,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
5596
5596
|
{
|
|
5597
5597
|
type: "button",
|
|
5598
5598
|
onClick: p.onToggleAiPanel,
|
|
5599
|
-
className:
|
|
5599
|
+
className: chunk5DBKW7F3_js.cn(qab, p.isAiPanelOpen ? "text-primary" : "text-muted-foreground"),
|
|
5600
5600
|
title: t("pptx.toolbar.toggleAiAssistant"),
|
|
5601
5601
|
"aria-label": t("pptx.toolbar.toggleAiAssistant"),
|
|
5602
5602
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSparkles, { className: ic })
|
|
@@ -5607,7 +5607,7 @@ function ToolbarPrimaryRow(p) {
|
|
|
5607
5607
|
{
|
|
5608
5608
|
type: "button",
|
|
5609
5609
|
onClick: p.onOpenSettings ?? p.onToggleShortcuts,
|
|
5610
|
-
className:
|
|
5610
|
+
className: chunk5DBKW7F3_js.cn(qab, "text-muted-foreground"),
|
|
5611
5611
|
title: t("pptx.toolbar.settingsShortcuts"),
|
|
5612
5612
|
"aria-label": t("pptx.toolbar.settings"),
|
|
5613
5613
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuSettings, { className: ics })
|
|
@@ -5651,7 +5651,7 @@ function useContextualRibbonTab(selectedElement, customization, onFallback) {
|
|
|
5651
5651
|
return { visible, active, fellBack, select: setChosen };
|
|
5652
5652
|
}
|
|
5653
5653
|
function HelpSection(p) {
|
|
5654
|
-
const { t } =
|
|
5654
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
5655
5655
|
const groups = pptx.buildHelpRibbon(t, {
|
|
5656
5656
|
options: pptx.isDialogAvailable(useViewerCustomizationContext(), "options")
|
|
5657
5657
|
});
|
|
@@ -5671,7 +5671,7 @@ function HelpSection(p) {
|
|
|
5671
5671
|
return /* @__PURE__ */ jsxRuntime.jsx(WebRibbonSection, { groups, onCommand: request });
|
|
5672
5672
|
}
|
|
5673
5673
|
function RecordSection(props) {
|
|
5674
|
-
const { t } =
|
|
5674
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
5675
5675
|
const request = (id) => {
|
|
5676
5676
|
if (id === "record.record.fromBeginning") {
|
|
5677
5677
|
props.onRecordFromBeginning();
|
|
@@ -5804,9 +5804,9 @@ function ToolbarLateTabs({
|
|
|
5804
5804
|
}
|
|
5805
5805
|
function Toolbar(p) {
|
|
5806
5806
|
const { mode, isNarrowViewport, isCompactToolbarOpen, toolbarSection, onSetToolbarSection } = p;
|
|
5807
|
-
const { t } =
|
|
5808
|
-
const { isTabVisible } =
|
|
5809
|
-
const viewerOptions =
|
|
5807
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
5808
|
+
const { isTabVisible } = chunkVGU5S37T_js.useToolbarVisibility(p.hiddenActions);
|
|
5809
|
+
const viewerOptions = chunkVGU5S37T_js.useViewerOptionsContext();
|
|
5810
5810
|
const customization = useViewerCustomizationContext();
|
|
5811
5811
|
const belowInput = React108.useMemo(
|
|
5812
5812
|
() => ({
|
|
@@ -5904,7 +5904,7 @@ function Toolbar(p) {
|
|
|
5904
5904
|
{
|
|
5905
5905
|
type: "button",
|
|
5906
5906
|
onClick: p.onToggleCompactToolbar,
|
|
5907
|
-
className:
|
|
5907
|
+
className: chunk5DBKW7F3_js.cn(
|
|
5908
5908
|
"px-2 py-1 rounded text-[11px] transition-colors mr-1",
|
|
5909
5909
|
isCompactToolbarOpen ? "bg-primary/80 text-white" : "text-muted-foreground hover:text-foreground"
|
|
5910
5910
|
),
|
|
@@ -5930,7 +5930,7 @@ function Toolbar(p) {
|
|
|
5930
5930
|
{
|
|
5931
5931
|
ref: attachOverflow,
|
|
5932
5932
|
"data-pptx-chrome": "ribbon-content",
|
|
5933
|
-
className:
|
|
5933
|
+
className: chunk5DBKW7F3_js.cn(
|
|
5934
5934
|
// Plain controls stay compact; labelled RibbonGroups opt into stretching.
|
|
5935
5935
|
// `RibbonGroupScope` wraps controls in a `display: contents` div, so its
|
|
5936
5936
|
// children are this row's flex items too and must not shrink (a shrunk
|
|
@@ -6120,7 +6120,7 @@ function Toolbar(p) {
|
|
|
6120
6120
|
);
|
|
6121
6121
|
}
|
|
6122
6122
|
function CanvasGuides({ guides, onDeleteGuide, onStartGuideDrag }) {
|
|
6123
|
-
const { t } =
|
|
6123
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
6124
6124
|
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: guides.map((guide) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
6125
6125
|
"div",
|
|
6126
6126
|
{
|
|
@@ -6332,7 +6332,7 @@ function ChartQuickActionsOverlay({
|
|
|
6332
6332
|
scale: stageScale = 1,
|
|
6333
6333
|
onUpdateElement
|
|
6334
6334
|
}) {
|
|
6335
|
-
const { t } =
|
|
6335
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
6336
6336
|
const [open, setOpen] = React108.useState(null);
|
|
6337
6337
|
const hostRef = React108.useRef(null);
|
|
6338
6338
|
React108.useEffect(() => {
|
|
@@ -6503,7 +6503,7 @@ function CommentMarkersOverlay({
|
|
|
6503
6503
|
canvasSize,
|
|
6504
6504
|
onCommentMarkerClick
|
|
6505
6505
|
}) {
|
|
6506
|
-
const { t } =
|
|
6506
|
+
const { t } = chunk5DBKW7F3_js.useTranslation(), half = pptx.COMMENT_MARKER_SIZE / 2, markers = pptx.buildCommentMarkers(
|
|
6507
6507
|
comments,
|
|
6508
6508
|
canvasSize.width,
|
|
6509
6509
|
canvasSize.height,
|
|
@@ -6547,7 +6547,7 @@ function ConnectorEndpointOverlay({
|
|
|
6547
6547
|
canvasStageRef,
|
|
6548
6548
|
onUpdateElement
|
|
6549
6549
|
}) {
|
|
6550
|
-
const { t } =
|
|
6550
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
6551
6551
|
const [drag, setDrag] = React108.useState(null);
|
|
6552
6552
|
const candidates = React108.useMemo(
|
|
6553
6553
|
() => pptx.collectConnectorSiteCandidates(elements.filter((el) => el.id !== connector.id)),
|
|
@@ -6783,7 +6783,7 @@ function DrawingOverlaySvg({
|
|
|
6783
6783
|
onPointerDown,
|
|
6784
6784
|
onPointerMove,
|
|
6785
6785
|
onPointerUp,
|
|
6786
|
-
children: isStrokeActive && liveStrokeView ?
|
|
6786
|
+
children: isStrokeActive && liveStrokeView ? chunkVGU5S37T_js.renderStrokeView(liveStrokeView, true, void 0, "ink-live-preview") : isStrokeActive && liveStrokeD && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6787
6787
|
"path",
|
|
6788
6788
|
{
|
|
6789
6789
|
d: liveStrokeD,
|
|
@@ -6798,7 +6798,7 @@ function DrawingOverlaySvg({
|
|
|
6798
6798
|
}
|
|
6799
6799
|
);
|
|
6800
6800
|
}
|
|
6801
|
-
function GridOverlay({ canvasSize, gridSpacingPx =
|
|
6801
|
+
function GridOverlay({ canvasSize, gridSpacingPx = chunk5DBKW7F3_js.GRID_SIZE, visible }) {
|
|
6802
6802
|
const spacing = Math.max(gridSpacingPx, 2);
|
|
6803
6803
|
const patternId = React108.useMemo(() => `grid-dot-pattern-${Math.random().toString(36).slice(2, 8)}`, []);
|
|
6804
6804
|
if (!visible) {
|
|
@@ -6826,7 +6826,7 @@ function MotionPathOverlay({
|
|
|
6826
6826
|
canEdit,
|
|
6827
6827
|
onChangePath
|
|
6828
6828
|
}) {
|
|
6829
|
-
const { t } =
|
|
6829
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
6830
6830
|
const dragRef = React108.useRef(null);
|
|
6831
6831
|
const frame = {
|
|
6832
6832
|
originX: element.x + element.width / 2,
|
|
@@ -6940,7 +6940,7 @@ function MotionPathOverlay({
|
|
|
6940
6940
|
);
|
|
6941
6941
|
}
|
|
6942
6942
|
function EditPointsMenu({ menu, onRun }) {
|
|
6943
|
-
const { t } =
|
|
6943
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
6944
6944
|
const stop2 = (event) => event.stopPropagation();
|
|
6945
6945
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6946
6946
|
"div",
|
|
@@ -6986,7 +6986,7 @@ function EditPointsOverlay({
|
|
|
6986
6986
|
onCommit,
|
|
6987
6987
|
onExit
|
|
6988
6988
|
}) {
|
|
6989
|
-
const { t } =
|
|
6989
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
6990
6990
|
const [, rerender] = React108.useReducer((n) => n + 1, 0);
|
|
6991
6991
|
const svgRef = React108.useRef(null);
|
|
6992
6992
|
const latest = React108.useRef({ onCommit, onExit });
|
|
@@ -7142,7 +7142,7 @@ function FreeformToolOverlay({
|
|
|
7142
7142
|
onCommit,
|
|
7143
7143
|
onCancel
|
|
7144
7144
|
}) {
|
|
7145
|
-
const { t } =
|
|
7145
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
7146
7146
|
const [, rerender] = React108.useReducer((n) => n + 1, 0);
|
|
7147
7147
|
const svgRef = React108.useRef(null);
|
|
7148
7148
|
const latest = React108.useRef({ onCommit, onCancel });
|
|
@@ -7285,7 +7285,7 @@ function PictureCropOverlay({
|
|
|
7285
7285
|
onUpdate,
|
|
7286
7286
|
onContextMenu
|
|
7287
7287
|
}) {
|
|
7288
|
-
const { t } =
|
|
7288
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
7289
7289
|
const overlay = pptx.buildCropOverlay(element, scale);
|
|
7290
7290
|
const dragRef = React108.useRef(null);
|
|
7291
7291
|
const latest = React108.useRef({ scale, onUpdate });
|
|
@@ -7333,7 +7333,7 @@ function PictureCropOverlay({
|
|
|
7333
7333
|
};
|
|
7334
7334
|
};
|
|
7335
7335
|
const { ghost, frame, handles } = overlay;
|
|
7336
|
-
const src =
|
|
7336
|
+
const src = chunkVGU5S37T_js.imgSrc(element);
|
|
7337
7337
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7338
7338
|
"div",
|
|
7339
7339
|
{
|
|
@@ -7509,7 +7509,7 @@ function HorizontalRulerView({ ticks, widthPx, highlight }) {
|
|
|
7509
7509
|
}
|
|
7510
7510
|
);
|
|
7511
7511
|
}
|
|
7512
|
-
var HorizontalRuler = /* @__PURE__ */
|
|
7512
|
+
var HorizontalRuler = /* @__PURE__ */ chunkVGU5S37T_js.withDisplayName(
|
|
7513
7513
|
/* @__PURE__ */ React108__default.default.memo(HorizontalRulerView),
|
|
7514
7514
|
"HorizontalRuler"
|
|
7515
7515
|
);
|
|
@@ -7583,7 +7583,7 @@ function VerticalRulerView({ ticks, heightPx, highlight }) {
|
|
|
7583
7583
|
}
|
|
7584
7584
|
);
|
|
7585
7585
|
}
|
|
7586
|
-
var VerticalRuler = /* @__PURE__ */
|
|
7586
|
+
var VerticalRuler = /* @__PURE__ */ chunkVGU5S37T_js.withDisplayName(
|
|
7587
7587
|
/* @__PURE__ */ React108__default.default.memo(VerticalRulerView),
|
|
7588
7588
|
"VerticalRuler"
|
|
7589
7589
|
);
|
|
@@ -7750,10 +7750,10 @@ function SelectionHandleOverlay({
|
|
|
7750
7750
|
position: "absolute",
|
|
7751
7751
|
left: element.x,
|
|
7752
7752
|
top: element.y,
|
|
7753
|
-
width: Math.max(element.width,
|
|
7754
|
-
height: Math.max(element.height,
|
|
7755
|
-
["--pptx-selection-width"]: `${Math.max(element.width,
|
|
7756
|
-
["--pptx-selection-height"]: `${Math.max(element.height,
|
|
7753
|
+
width: Math.max(element.width, chunk5DBKW7F3_js.MIN_ELEMENT_SIZE),
|
|
7754
|
+
height: Math.max(element.height, chunk5DBKW7F3_js.MIN_ELEMENT_SIZE),
|
|
7755
|
+
["--pptx-selection-width"]: `${Math.max(element.width, chunk5DBKW7F3_js.MIN_ELEMENT_SIZE)}px`,
|
|
7756
|
+
["--pptx-selection-height"]: `${Math.max(element.height, chunk5DBKW7F3_js.MIN_ELEMENT_SIZE)}px`,
|
|
7757
7757
|
// Every slide element carries an explicit numeric `zIndex` (see
|
|
7758
7758
|
// `getContainerStyle`), so a sibling with no z-index at all paints
|
|
7759
7759
|
// at the CSS "z-index: 0" level regardless of DOM order: any
|
|
@@ -7765,7 +7765,7 @@ function SelectionHandleOverlay({
|
|
|
7765
7765
|
// (marquee z-50, connector overlay z-55/56) to match, well clear of
|
|
7766
7766
|
// any realistic per-slide element count.
|
|
7767
7767
|
zIndex: 58,
|
|
7768
|
-
transform:
|
|
7768
|
+
transform: chunk5DBKW7F3_js.getElementTransform(element),
|
|
7769
7769
|
transformOrigin: "center",
|
|
7770
7770
|
// Transparent everywhere a handle button is not, so a click that
|
|
7771
7771
|
// misses every handle still reaches the shape (or whatever is
|
|
@@ -7777,14 +7777,14 @@ function SelectionHandleOverlay({
|
|
|
7777
7777
|
onDoubleClick: (e) => onDoubleClick(element.id, e),
|
|
7778
7778
|
onContextMenu: (e) => onContextMenu(element.id, e),
|
|
7779
7779
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7780
|
-
|
|
7780
|
+
chunkVGU5S37T_js.ResizeHandles,
|
|
7781
7781
|
{
|
|
7782
7782
|
elementId: element.id,
|
|
7783
7783
|
adjustmentHandles,
|
|
7784
7784
|
onResizePointerDown,
|
|
7785
7785
|
onAdjustmentPointerDown,
|
|
7786
7786
|
rotation: element.rotation,
|
|
7787
|
-
nonRotationTransform:
|
|
7787
|
+
nonRotationTransform: chunk5DBKW7F3_js.getElementTransformWithoutRotation(element),
|
|
7788
7788
|
onRotate: allow.rotatable ? onRotate : void 0,
|
|
7789
7789
|
forcePointerEvents: true
|
|
7790
7790
|
}
|
|
@@ -8488,7 +8488,7 @@ function SlideCanvas(props) {
|
|
|
8488
8488
|
props.registerInlineEditReader
|
|
8489
8489
|
]
|
|
8490
8490
|
);
|
|
8491
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
8491
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkVGU5S37T_js.InlineCollaborationContext.Provider, { value, children: /* @__PURE__ */ jsxRuntime.jsx(SlideCanvasContent, { ...props }) });
|
|
8492
8492
|
}
|
|
8493
8493
|
function SlideCanvasContent({
|
|
8494
8494
|
imagePaste,
|
|
@@ -8761,7 +8761,7 @@ function SlideCanvasContent({
|
|
|
8761
8761
|
onPointerMove: handleStagePointerMove,
|
|
8762
8762
|
onPointerUp: handleStagePointerUp,
|
|
8763
8763
|
children: [
|
|
8764
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8764
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVGU5S37T_js.SlideBackgroundImageLayer, { slide: activeSlide }),
|
|
8765
8765
|
presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
|
|
8766
8766
|
/* @__PURE__ */ jsxRuntime.jsx(GridOverlay, { canvasSize, gridSpacingPx, visible: showGrid }),
|
|
8767
8767
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -8773,7 +8773,7 @@ function SlideCanvasContent({
|
|
|
8773
8773
|
}
|
|
8774
8774
|
),
|
|
8775
8775
|
templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
8776
|
-
|
|
8776
|
+
chunkVGU5S37T_js.ElementRenderer,
|
|
8777
8777
|
{
|
|
8778
8778
|
element,
|
|
8779
8779
|
activeSlide,
|
|
@@ -8796,7 +8796,7 @@ function SlideCanvasContent({
|
|
|
8796
8796
|
),
|
|
8797
8797
|
renderInk: false,
|
|
8798
8798
|
renderGroups: true,
|
|
8799
|
-
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ?
|
|
8799
|
+
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunk5DBKW7F3_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
|
|
8800
8800
|
onResizePointerDown: stableResizePointerDown,
|
|
8801
8801
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
8802
8802
|
onRotate: stableRotate,
|
|
@@ -8818,7 +8818,7 @@ function SlideCanvasContent({
|
|
|
8818
8818
|
`tpl-${element.id}`
|
|
8819
8819
|
)),
|
|
8820
8820
|
activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
8821
|
-
|
|
8821
|
+
chunkVGU5S37T_js.ElementRenderer,
|
|
8822
8822
|
{
|
|
8823
8823
|
element,
|
|
8824
8824
|
activeSlide,
|
|
@@ -8841,7 +8841,7 @@ function SlideCanvasContent({
|
|
|
8841
8841
|
),
|
|
8842
8842
|
renderInk: true,
|
|
8843
8843
|
renderGroups: true,
|
|
8844
|
-
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ?
|
|
8844
|
+
adjustmentHandles: isEditableCanvas && selectedElement?.id === element.id ? chunk5DBKW7F3_js.getShapeAdjustmentHandleDescriptors(element) : EMPTY_ADJUSTMENT_HANDLES,
|
|
8845
8845
|
onResizePointerDown: stableResizePointerDown,
|
|
8846
8846
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
8847
8847
|
onRotate: stableRotate,
|
|
@@ -8885,7 +8885,7 @@ function SlideCanvasContent({
|
|
|
8885
8885
|
editingMember && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
8886
8886
|
/* @__PURE__ */ jsxRuntime.jsx("style", { children: `[data-element-id="${cssAttr(editingMember.parentId)}"] [data-element-id="${cssAttr(editingMember.member.id)}"]{visibility:hidden}` }),
|
|
8887
8887
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8888
|
-
|
|
8888
|
+
chunkVGU5S37T_js.ElementRenderer,
|
|
8889
8889
|
{
|
|
8890
8890
|
element: editingMember.member,
|
|
8891
8891
|
activeSlide,
|
|
@@ -8920,11 +8920,11 @@ function SlideCanvasContent({
|
|
|
8920
8920
|
`group-member-edit-${editingMember.member.id}`
|
|
8921
8921
|
)
|
|
8922
8922
|
] }),
|
|
8923
|
-
selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !
|
|
8923
|
+
selectedElement && selectedElement.id !== cropElement?.id && pptx.shouldShowElementHandles(isEditableCanvas, true, selectedElementIdSet.size) && !chunk5DBKW7F3_js.isConnectorOrLineElement(selectedElement) && outlineAuthoring?.editPointsElementId !== selectedElement.id && /* @__PURE__ */ jsxRuntime.jsx(
|
|
8924
8924
|
SelectionHandleOverlay,
|
|
8925
8925
|
{
|
|
8926
8926
|
element: selectedElement,
|
|
8927
|
-
adjustmentHandles:
|
|
8927
|
+
adjustmentHandles: chunk5DBKW7F3_js.getShapeAdjustmentHandleDescriptors(selectedElement),
|
|
8928
8928
|
onResizePointerDown: stableResizePointerDown,
|
|
8929
8929
|
onAdjustmentPointerDown: stableAdjustmentPointerDown,
|
|
8930
8930
|
onRotate: stableRotate,
|
|
@@ -9031,14 +9031,14 @@ function SlideCanvasContent({
|
|
|
9031
9031
|
);
|
|
9032
9032
|
}
|
|
9033
9033
|
function LoadingState({ className }) {
|
|
9034
|
-
const { t } =
|
|
9034
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
9035
9035
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
9036
9036
|
"div",
|
|
9037
9037
|
{
|
|
9038
9038
|
role: "status",
|
|
9039
9039
|
"aria-live": "polite",
|
|
9040
9040
|
"aria-atomic": "true",
|
|
9041
|
-
className:
|
|
9041
|
+
className: chunk5DBKW7F3_js.cn(
|
|
9042
9042
|
"h-full w-full flex items-center justify-center text-muted-foreground",
|
|
9043
9043
|
className
|
|
9044
9044
|
),
|
|
@@ -9061,7 +9061,7 @@ function ErrorState({ className, error }) {
|
|
|
9061
9061
|
{
|
|
9062
9062
|
role: "alert",
|
|
9063
9063
|
"aria-live": "assertive",
|
|
9064
|
-
className:
|
|
9064
|
+
className: chunk5DBKW7F3_js.cn(
|
|
9065
9065
|
"h-full w-full flex items-center justify-center p-6 text-center text-red-400",
|
|
9066
9066
|
className
|
|
9067
9067
|
),
|
|
@@ -9070,7 +9070,7 @@ function ErrorState({ className, error }) {
|
|
|
9070
9070
|
);
|
|
9071
9071
|
}
|
|
9072
9072
|
function ShortcutPanel({ isOpen, onClose }) {
|
|
9073
|
-
const { t } =
|
|
9073
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
9074
9074
|
if (!isOpen) {
|
|
9075
9075
|
return null;
|
|
9076
9076
|
}
|
|
@@ -9092,7 +9092,7 @@ function ShortcutPanel({ isOpen, onClose }) {
|
|
|
9092
9092
|
}
|
|
9093
9093
|
)
|
|
9094
9094
|
] }),
|
|
9095
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children:
|
|
9095
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-64 overflow-y-auto p-2 space-y-1", children: chunk5DBKW7F3_js.SHORTCUT_REFERENCE_ITEMS.map((shortcut) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9096
9096
|
"div",
|
|
9097
9097
|
{
|
|
9098
9098
|
className: "flex items-center justify-between gap-3 rounded bg-muted/80 px-2 py-1.5",
|
|
@@ -9114,7 +9114,7 @@ function AccessibilityPanel({
|
|
|
9114
9114
|
reducedMotion,
|
|
9115
9115
|
onToggleReducedMotion
|
|
9116
9116
|
}) {
|
|
9117
|
-
const { t } =
|
|
9117
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
9118
9118
|
if (!isOpen) {
|
|
9119
9119
|
return null;
|
|
9120
9120
|
}
|
|
@@ -9152,14 +9152,14 @@ function AccessibilityPanel({
|
|
|
9152
9152
|
"aria-label": t("pptx.accessibility.reduceMotion"),
|
|
9153
9153
|
"aria-checked": reducedMotion ?? false,
|
|
9154
9154
|
onClick: onToggleReducedMotion,
|
|
9155
|
-
className:
|
|
9155
|
+
className: chunk5DBKW7F3_js.cn(
|
|
9156
9156
|
"relative inline-flex h-5 w-9 items-center rounded-full transition-colors",
|
|
9157
9157
|
reducedMotion ? "bg-primary" : "bg-muted-foreground/30"
|
|
9158
9158
|
),
|
|
9159
9159
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9160
9160
|
"span",
|
|
9161
9161
|
{
|
|
9162
|
-
className:
|
|
9162
|
+
className: chunk5DBKW7F3_js.cn(
|
|
9163
9163
|
"inline-block h-3.5 w-3.5 rounded-full bg-white transition-transform",
|
|
9164
9164
|
reducedMotion ? "translate-x-4" : "translate-x-0.5"
|
|
9165
9165
|
)
|
|
@@ -9178,7 +9178,7 @@ function AccessibilityPanel({
|
|
|
9178
9178
|
"div",
|
|
9179
9179
|
{
|
|
9180
9180
|
role: "listitem",
|
|
9181
|
-
className:
|
|
9181
|
+
className: chunk5DBKW7F3_js.cn(
|
|
9182
9182
|
"flex items-start gap-2 rounded px-2 py-1.5 text-xs",
|
|
9183
9183
|
/* Severity-based background and text colouring */
|
|
9184
9184
|
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"
|
|
@@ -9206,7 +9206,7 @@ function ExportProgressModal({
|
|
|
9206
9206
|
statusMessage,
|
|
9207
9207
|
onCancel
|
|
9208
9208
|
}) {
|
|
9209
|
-
const { t } =
|
|
9209
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
9210
9210
|
const ref = useWebControl(
|
|
9211
9211
|
{ open: isOpen, title, progress, status: statusMessage, translate: t },
|
|
9212
9212
|
{ "export-cancel": () => onCancel() }
|
|
@@ -9214,7 +9214,7 @@ function ExportProgressModal({
|
|
|
9214
9214
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-export-progress", { ref });
|
|
9215
9215
|
}
|
|
9216
9216
|
function StatusBar(p) {
|
|
9217
|
-
const { t } =
|
|
9217
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
9218
9218
|
const ref = React108.useRef(null);
|
|
9219
9219
|
React108.useEffect(() => {
|
|
9220
9220
|
const host = ref.current;
|
|
@@ -9294,7 +9294,7 @@ function ResizeHandle({
|
|
|
9294
9294
|
{
|
|
9295
9295
|
role: "separator",
|
|
9296
9296
|
"aria-orientation": direction,
|
|
9297
|
-
className:
|
|
9297
|
+
className: chunk5DBKW7F3_js.cn(
|
|
9298
9298
|
// Outer container: generous hit area for easy clicking.
|
|
9299
9299
|
// The visible indicator is rendered via the inner pseudo-element (::after).
|
|
9300
9300
|
"relative flex-shrink-0 z-20 group",
|
|
@@ -9305,7 +9305,7 @@ function ResizeHandle({
|
|
|
9305
9305
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9306
9306
|
"div",
|
|
9307
9307
|
{
|
|
9308
|
-
className:
|
|
9308
|
+
className: chunk5DBKW7F3_js.cn(
|
|
9309
9309
|
"absolute transition-colors",
|
|
9310
9310
|
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"
|
|
9311
9311
|
)
|
|
@@ -9394,10 +9394,10 @@ function contextMenuHandlers(props, shapeFormat = null) {
|
|
|
9394
9394
|
}
|
|
9395
9395
|
function ContextMenu(props) {
|
|
9396
9396
|
const { contextMenuState, mode, onClose } = props;
|
|
9397
|
-
const { t } =
|
|
9397
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
9398
9398
|
const customization = useViewerCustomizationContext();
|
|
9399
9399
|
const shapeFormat = useShapeFormatContext();
|
|
9400
|
-
const chartFormat =
|
|
9400
|
+
const chartFormat = chunkVGU5S37T_js.useChartFormatContext();
|
|
9401
9401
|
const open = Boolean(contextMenuState) && mode === "edit";
|
|
9402
9402
|
const handlers = {
|
|
9403
9403
|
...contextMenuHandlers(props, shapeFormat),
|
|
@@ -9473,7 +9473,7 @@ function canvasContextMenuHandlers(props) {
|
|
|
9473
9473
|
}
|
|
9474
9474
|
function CanvasContextMenu(props) {
|
|
9475
9475
|
const { canvasContextMenuState, mode, onClose } = props;
|
|
9476
|
-
const { t } =
|
|
9476
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
9477
9477
|
const customization = useViewerCustomizationContext();
|
|
9478
9478
|
const open = Boolean(canvasContextMenuState) && mode === "edit";
|
|
9479
9479
|
const handlers = canvasContextMenuHandlers(props);
|
|
@@ -9536,7 +9536,7 @@ function FindReplacePanel({
|
|
|
9536
9536
|
onReplaceAll,
|
|
9537
9537
|
onClose
|
|
9538
9538
|
}) {
|
|
9539
|
-
const { t } =
|
|
9539
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
9540
9540
|
const searchInputRef = React108.useRef(null);
|
|
9541
9541
|
React108.useEffect(() => {
|
|
9542
9542
|
searchInputRef.current?.focus();
|
|
@@ -9727,7 +9727,7 @@ function HandoutMasterPanel({
|
|
|
9727
9727
|
onSlidesPerPageChange,
|
|
9728
9728
|
onBackgroundChange
|
|
9729
9729
|
}) {
|
|
9730
|
-
const { t } =
|
|
9730
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
9731
9731
|
if (!handoutMaster) {
|
|
9732
9732
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-4 text-center text-xs text-muted-foreground", children: t("pptx.master.noHandoutMaster") });
|
|
9733
9733
|
}
|
|
@@ -9739,7 +9739,7 @@ function HandoutMasterPanel({
|
|
|
9739
9739
|
{
|
|
9740
9740
|
type: "button",
|
|
9741
9741
|
"aria-pressed": slidesPerPage === count,
|
|
9742
|
-
className:
|
|
9742
|
+
className: chunk5DBKW7F3_js.cn(
|
|
9743
9743
|
"px-2 py-1.5 rounded text-[11px] font-medium transition-colors",
|
|
9744
9744
|
slidesPerPage === count ? "bg-primary text-white" : "bg-accent/50 text-muted-foreground hover:bg-accent/70 hover:text-foreground"
|
|
9745
9745
|
),
|
|
@@ -9782,7 +9782,7 @@ function NotesMasterPanel({
|
|
|
9782
9782
|
notesMaster,
|
|
9783
9783
|
onBackgroundChange
|
|
9784
9784
|
}) {
|
|
9785
|
-
const { t } =
|
|
9785
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
9786
9786
|
const placeholderLabels = React108.useMemo(() => {
|
|
9787
9787
|
if (!notesMaster?.placeholders) {
|
|
9788
9788
|
return [];
|
|
@@ -9844,7 +9844,7 @@ function SlideMastersList({
|
|
|
9844
9844
|
React108.useEffect(() => {
|
|
9845
9845
|
activeRef.current?.scrollIntoView({ behavior: "smooth", block: "nearest" });
|
|
9846
9846
|
}, [activeMasterIndex, activeLayoutIndex]);
|
|
9847
|
-
const { t } =
|
|
9847
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
9848
9848
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
9849
9849
|
slideMasters.map((master, masterIdx) => {
|
|
9850
9850
|
const isMasterActive = masterIdx === activeMasterIndex && activeLayoutIndex === null;
|
|
@@ -9857,7 +9857,7 @@ function SlideMastersList({
|
|
|
9857
9857
|
ref: isMasterActive ? activeRef : void 0,
|
|
9858
9858
|
"aria-pressed": isMasterActive,
|
|
9859
9859
|
"aria-label": master.name || t("pptx.master.master"),
|
|
9860
|
-
className:
|
|
9860
|
+
className: chunk5DBKW7F3_js.cn(
|
|
9861
9861
|
"group relative block w-full cursor-pointer rounded-lg border-2 p-1 text-left transition-all",
|
|
9862
9862
|
isMasterActive ? "border-amber-500 bg-amber-500/10" : "border-border bg-background/40 hover:border-border"
|
|
9863
9863
|
),
|
|
@@ -9874,7 +9874,7 @@ function SlideMastersList({
|
|
|
9874
9874
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 px-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9875
9875
|
"span",
|
|
9876
9876
|
{
|
|
9877
|
-
className:
|
|
9877
|
+
className: chunk5DBKW7F3_js.cn(
|
|
9878
9878
|
"text-[10px] font-medium",
|
|
9879
9879
|
isMasterActive ? "text-amber-400" : "text-muted-foreground"
|
|
9880
9880
|
),
|
|
@@ -9893,7 +9893,7 @@ function SlideMastersList({
|
|
|
9893
9893
|
ref: isLayoutActive ? activeRef : void 0,
|
|
9894
9894
|
"aria-pressed": isLayoutActive,
|
|
9895
9895
|
"aria-label": layout.name || t("pptx.master.layout"),
|
|
9896
|
-
className:
|
|
9896
|
+
className: chunk5DBKW7F3_js.cn(
|
|
9897
9897
|
"group relative block w-full cursor-pointer rounded-md border-2 p-0.5 text-left transition-all",
|
|
9898
9898
|
isLayoutActive ? "border-primary bg-primary/10" : "border-border bg-background/40 hover:border-border"
|
|
9899
9899
|
),
|
|
@@ -9910,7 +9910,7 @@ function SlideMastersList({
|
|
|
9910
9910
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5 px-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9911
9911
|
"span",
|
|
9912
9912
|
{
|
|
9913
|
-
className:
|
|
9913
|
+
className: chunk5DBKW7F3_js.cn(
|
|
9914
9914
|
"text-[9px]",
|
|
9915
9915
|
isLayoutActive ? "text-primary" : "text-muted-foreground"
|
|
9916
9916
|
),
|
|
@@ -9954,7 +9954,7 @@ function MasterViewSidebar({
|
|
|
9954
9954
|
onSlidesBackgroundChange
|
|
9955
9955
|
}) {
|
|
9956
9956
|
const scrollRef = React108.useRef(null);
|
|
9957
|
-
const { t } =
|
|
9957
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
9958
9958
|
const slidesBackground = pptx.masterViewBackgroundColor(
|
|
9959
9959
|
{ slideMasters },
|
|
9960
9960
|
{ tab: "slides", masterIndex: activeMasterIndex, layoutIndex: activeLayoutIndex }
|
|
@@ -10002,7 +10002,7 @@ function MasterViewSidebar({
|
|
|
10002
10002
|
type: "button",
|
|
10003
10003
|
role: "tab",
|
|
10004
10004
|
"aria-selected": masterViewTab === tab.key,
|
|
10005
|
-
className:
|
|
10005
|
+
className: chunk5DBKW7F3_js.cn(
|
|
10006
10006
|
"flex-1 px-1 py-1.5 text-[10px] font-medium transition-colors border-b-2",
|
|
10007
10007
|
masterViewTab === tab.key ? "border-amber-500 text-amber-400" : "border-transparent text-muted-foreground hover:text-foreground"
|
|
10008
10008
|
),
|
|
@@ -10104,7 +10104,7 @@ function NotesMasterCanvas({
|
|
|
10104
10104
|
notesText,
|
|
10105
10105
|
slideNumber
|
|
10106
10106
|
}) {
|
|
10107
|
-
const { t } =
|
|
10107
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
10108
10108
|
const pageWidth = notesCanvasSize?.width ?? DEFAULT_NOTES_WIDTH;
|
|
10109
10109
|
const pageHeight = notesCanvasSize?.height ?? DEFAULT_NOTES_HEIGHT;
|
|
10110
10110
|
const scale = React108.useMemo(() => {
|
|
@@ -10364,7 +10364,7 @@ function HandoutMasterCanvas({
|
|
|
10364
10364
|
slideThumbnails,
|
|
10365
10365
|
pageNumber
|
|
10366
10366
|
}) {
|
|
10367
|
-
const { t } =
|
|
10367
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
10368
10368
|
const slideAspect = 4 / 3;
|
|
10369
10369
|
const scale = React108.useMemo(() => {
|
|
10370
10370
|
const scaleX = canvasSize.width / PAGE_WIDTH;
|
|
@@ -10505,7 +10505,7 @@ function SectionBlock({
|
|
|
10505
10505
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10506
10506
|
lu.LuChevronDown,
|
|
10507
10507
|
{
|
|
10508
|
-
className:
|
|
10508
|
+
className: chunk5DBKW7F3_js.cn("h-3 w-3 transition-transform", collapsed ? "-rotate-90" : "rotate-0")
|
|
10509
10509
|
}
|
|
10510
10510
|
),
|
|
10511
10511
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-left", children: section.label }),
|
|
@@ -10549,12 +10549,12 @@ function SlideCardImpl({
|
|
|
10549
10549
|
onDragLeave,
|
|
10550
10550
|
onDrop
|
|
10551
10551
|
}) {
|
|
10552
|
-
const { t } =
|
|
10552
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
10553
10553
|
const cue = pptx.hiddenSlideCue(slide.hidden, "sorter", index);
|
|
10554
10554
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10555
10555
|
"div",
|
|
10556
10556
|
{
|
|
10557
|
-
className:
|
|
10557
|
+
className: chunk5DBKW7F3_js.cn(
|
|
10558
10558
|
"group relative cursor-pointer rounded-lg border-2 p-1 transition-all",
|
|
10559
10559
|
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",
|
|
10560
10560
|
slide.hidden && "opacity-40"
|
|
@@ -10577,7 +10577,7 @@ function SlideCardImpl({
|
|
|
10577
10577
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10578
10578
|
"span",
|
|
10579
10579
|
{
|
|
10580
|
-
className:
|
|
10580
|
+
className: chunk5DBKW7F3_js.cn(
|
|
10581
10581
|
"text-[11px] font-medium px-0.5",
|
|
10582
10582
|
isSelected ? "text-primary" : isActive ? "text-primary/70" : "text-muted-foreground"
|
|
10583
10583
|
),
|
|
@@ -10655,7 +10655,7 @@ function SorterContextMenu({
|
|
|
10655
10655
|
onToggleHide,
|
|
10656
10656
|
onClose
|
|
10657
10657
|
}) {
|
|
10658
|
-
const { t } =
|
|
10658
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
10659
10659
|
const menuX = Math.max(8, Math.min(x, window.innerWidth - 220));
|
|
10660
10660
|
const menuY = Math.max(8, Math.min(y, window.innerHeight - 300));
|
|
10661
10661
|
const entries = pptx.buildSlideSorterContextMenuEntries({
|
|
@@ -11010,7 +11010,7 @@ function SlideSorterOverlay({
|
|
|
11010
11010
|
onToggleHideSlides,
|
|
11011
11011
|
onClose
|
|
11012
11012
|
}) {
|
|
11013
|
-
const { t } =
|
|
11013
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
11014
11014
|
const state = useSlideSorterState({
|
|
11015
11015
|
slides,
|
|
11016
11016
|
templateElementsBySlideId,
|
|
@@ -11256,7 +11256,7 @@ function OutlineViewOverlay({
|
|
|
11256
11256
|
bumpHistory,
|
|
11257
11257
|
onClose
|
|
11258
11258
|
}) {
|
|
11259
|
-
const { t } =
|
|
11259
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
11260
11260
|
const { rows, containerRef, run, onRowKeyDown } = useOutlineView({
|
|
11261
11261
|
slides,
|
|
11262
11262
|
canvasSize,
|
|
@@ -11347,7 +11347,7 @@ function ReadingViewStage({
|
|
|
11347
11347
|
"div",
|
|
11348
11348
|
{
|
|
11349
11349
|
className: "absolute inset-0",
|
|
11350
|
-
style: { backgroundColor:
|
|
11350
|
+
style: { backgroundColor: chunk5DBKW7F3_js.normalizeHexColor(slide.backgroundColor, "#ffffff") }
|
|
11351
11351
|
}
|
|
11352
11352
|
),
|
|
11353
11353
|
slide.backgroundImage && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -11366,7 +11366,7 @@ function ReadingViewStage({
|
|
|
11366
11366
|
className: "absolute left-0 top-0 origin-top-left",
|
|
11367
11367
|
style: { width, height, transform: `scale(${scale})`, ...pptx.deviceStrokeStageStyle(scale) },
|
|
11368
11368
|
children: elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
11369
|
-
|
|
11369
|
+
chunkVGU5S37T_js.StaticElementRenderer,
|
|
11370
11370
|
{
|
|
11371
11371
|
element,
|
|
11372
11372
|
activeSlide: slide,
|
|
@@ -11447,7 +11447,7 @@ function ReadingViewOverlay({
|
|
|
11447
11447
|
activeSlideIndex,
|
|
11448
11448
|
onExit
|
|
11449
11449
|
}) {
|
|
11450
|
-
const { t } =
|
|
11450
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
11451
11451
|
const { state, viewportRef, scale, run } = useReadingView({
|
|
11452
11452
|
slideCount: slides.length,
|
|
11453
11453
|
canvasSize,
|
|
@@ -11578,7 +11578,7 @@ function renderRichNotesSegments(segments) {
|
|
|
11578
11578
|
if (segment.style.fontFamily) {
|
|
11579
11579
|
style.fontFamily = segment.style.fontFamily;
|
|
11580
11580
|
}
|
|
11581
|
-
if (segment.style.hyperlink &&
|
|
11581
|
+
if (segment.style.hyperlink && chunk5DBKW7F3_js.isUrlSafe(segment.style.hyperlink)) {
|
|
11582
11582
|
const safeHref = segment.style.hyperlink;
|
|
11583
11583
|
style.color = "#4a9eff";
|
|
11584
11584
|
style.textDecoration = "underline";
|
|
@@ -11591,7 +11591,7 @@ function renderRichNotesSegments(segments) {
|
|
|
11591
11591
|
style,
|
|
11592
11592
|
onClick: (e) => {
|
|
11593
11593
|
e.preventDefault();
|
|
11594
|
-
|
|
11594
|
+
chunk5DBKW7F3_js.safeOpenUrl(safeHref);
|
|
11595
11595
|
},
|
|
11596
11596
|
children: segment.text
|
|
11597
11597
|
},
|
|
@@ -11615,7 +11615,7 @@ function NotesPrintDialog({
|
|
|
11615
11615
|
onClose,
|
|
11616
11616
|
notesStyle
|
|
11617
11617
|
}) {
|
|
11618
|
-
const { t } =
|
|
11618
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
11619
11619
|
const printFrameRef = React108.useRef(null);
|
|
11620
11620
|
const handlePrint = React108.useCallback(() => {
|
|
11621
11621
|
const iframe = printFrameRef.current;
|
|
@@ -11673,7 +11673,7 @@ function NotesPrintDialog({
|
|
|
11673
11673
|
] }) });
|
|
11674
11674
|
}
|
|
11675
11675
|
function NotesToolbar(p) {
|
|
11676
|
-
const { t } =
|
|
11676
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
11677
11677
|
const ref = React108.useRef(null);
|
|
11678
11678
|
React108.useEffect(() => {
|
|
11679
11679
|
const host = ref.current;
|
|
@@ -11940,7 +11940,7 @@ function useSlideNotes({
|
|
|
11940
11940
|
const href = target.getAttribute("data-hyperlink") || target.getAttribute("href");
|
|
11941
11941
|
if (href && (e.ctrlKey || e.metaKey)) {
|
|
11942
11942
|
e.preventDefault();
|
|
11943
|
-
|
|
11943
|
+
chunk5DBKW7F3_js.safeOpenUrl(href);
|
|
11944
11944
|
}
|
|
11945
11945
|
}, []);
|
|
11946
11946
|
return {
|
|
@@ -11977,7 +11977,7 @@ function SlideNotesPanel({
|
|
|
11977
11977
|
notesStyle,
|
|
11978
11978
|
onHeightChange
|
|
11979
11979
|
}) {
|
|
11980
|
-
const { t } =
|
|
11980
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
11981
11981
|
const rootRef = React108__default.default.useRef(null);
|
|
11982
11982
|
React108__default.default.useEffect(() => {
|
|
11983
11983
|
const el = rootRef.current;
|
|
@@ -12021,7 +12021,7 @@ function SlideNotesPanel({
|
|
|
12021
12021
|
});
|
|
12022
12022
|
const hasNotes = draft.trim().length > 0;
|
|
12023
12023
|
const slideLabel = activeSlide ? t("pptx.notes.slideN", { n: activeSlide.slideNumber }) : t("pptx.notes.noSlide");
|
|
12024
|
-
const { dragY, handlers: dragHandlers } =
|
|
12024
|
+
const { dragY, handlers: dragHandlers } = chunkVGU5S37T_js.useSheetDismissDrag(onToggle);
|
|
12025
12025
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
12026
12026
|
isExpanded && /* @__PURE__ */ jsxRuntime.jsx(
|
|
12027
12027
|
"button",
|
|
@@ -12037,7 +12037,7 @@ function SlideNotesPanel({
|
|
|
12037
12037
|
{
|
|
12038
12038
|
ref: rootRef,
|
|
12039
12039
|
"data-pptx-chrome": "notes",
|
|
12040
|
-
className:
|
|
12040
|
+
className: chunk5DBKW7F3_js.cn(
|
|
12041
12041
|
"flex flex-col border-t border-border/60 bg-background select-none",
|
|
12042
12042
|
// On mobile, hide the entire notes strip when collapsed: the
|
|
12043
12043
|
// MobileBottomBar's Notes button is the entry point instead.
|
|
@@ -12221,7 +12221,7 @@ function VersionHistoryPanel({
|
|
|
12221
12221
|
onClose,
|
|
12222
12222
|
onRestore
|
|
12223
12223
|
}) {
|
|
12224
|
-
const { t } =
|
|
12224
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
12225
12225
|
const [versions, setVersions] = React108.useState([]);
|
|
12226
12226
|
const [loading, setLoading] = React108.useState(false);
|
|
12227
12227
|
const [restoringKey, setRestoringKey] = React108.useState(null);
|
|
@@ -12367,7 +12367,7 @@ function SlideDiffRow({
|
|
|
12367
12367
|
onAccept,
|
|
12368
12368
|
onReject
|
|
12369
12369
|
}) {
|
|
12370
|
-
const { t } =
|
|
12370
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
12371
12371
|
const [expanded, setExpanded] = React108.useState(diff.status === "changed");
|
|
12372
12372
|
const statusLabel = (() => {
|
|
12373
12373
|
switch (diff.status) {
|
|
@@ -12401,7 +12401,7 @@ function SlideDiffRow({
|
|
|
12401
12401
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12402
12402
|
"div",
|
|
12403
12403
|
{
|
|
12404
|
-
className:
|
|
12404
|
+
className: chunk5DBKW7F3_js.cn(
|
|
12405
12405
|
"rounded-lg border transition-colors",
|
|
12406
12406
|
isResolved ? "border-border/60 bg-card/40 opacity-60" : "border-border bg-background/70"
|
|
12407
12407
|
),
|
|
@@ -12415,7 +12415,7 @@ function SlideDiffRow({
|
|
|
12415
12415
|
children: [
|
|
12416
12416
|
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" }),
|
|
12417
12417
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-foreground", children: t("pptx.compare.slideNumber", { number: slideNumber }) }),
|
|
12418
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
12418
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunk5DBKW7F3_js.cn("rounded-full px-2 py-0.5 text-[10px] font-medium", statusColor), children: statusLabel }),
|
|
12419
12419
|
diff.changes.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[10px] text-muted-foreground", children: [
|
|
12420
12420
|
diff.changes.length,
|
|
12421
12421
|
" ",
|
|
@@ -12425,7 +12425,7 @@ function SlideDiffRow({
|
|
|
12425
12425
|
isResolved && /* @__PURE__ */ jsxRuntime.jsx(
|
|
12426
12426
|
"span",
|
|
12427
12427
|
{
|
|
12428
|
-
className:
|
|
12428
|
+
className: chunk5DBKW7F3_js.cn(
|
|
12429
12429
|
"text-[10px] font-medium",
|
|
12430
12430
|
accepted ? "text-green-400" : "text-muted-foreground"
|
|
12431
12431
|
),
|
|
@@ -12453,7 +12453,7 @@ function SlideDiffRow({
|
|
|
12453
12453
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12454
12454
|
"div",
|
|
12455
12455
|
{
|
|
12456
|
-
className:
|
|
12456
|
+
className: chunk5DBKW7F3_js.cn(
|
|
12457
12457
|
"rounded border overflow-hidden",
|
|
12458
12458
|
diff.status === "added" ? "border-green-700/60" : diff.status === "changed" ? "border-amber-700/60" : "border-border"
|
|
12459
12459
|
),
|
|
@@ -12520,7 +12520,7 @@ function ComparePanel({
|
|
|
12520
12520
|
onRejectSlide,
|
|
12521
12521
|
onAcceptAll
|
|
12522
12522
|
}) {
|
|
12523
|
-
const { t } =
|
|
12523
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
12524
12524
|
const [accepted, setAccepted] = React108.useState({});
|
|
12525
12525
|
const [rejected, setRejected] = React108.useState({});
|
|
12526
12526
|
const handleAccept = React108.useCallback(
|
|
@@ -12649,7 +12649,7 @@ function PasswordProtectionDialog({
|
|
|
12649
12649
|
onSetPassword,
|
|
12650
12650
|
onRemovePassword
|
|
12651
12651
|
}) {
|
|
12652
|
-
const { t } =
|
|
12652
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
12653
12653
|
const [password, setPassword] = React108.useState("");
|
|
12654
12654
|
const [confirmPassword, setConfirmPassword] = React108.useState("");
|
|
12655
12655
|
const [showPassword, setShowPassword] = React108.useState(false);
|
|
@@ -12865,7 +12865,7 @@ function DocumentPropertiesCustomTab({
|
|
|
12865
12865
|
customProperties,
|
|
12866
12866
|
onUpdate
|
|
12867
12867
|
}) {
|
|
12868
|
-
const { t } =
|
|
12868
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
12869
12869
|
const handleAdd = React108.useCallback(() => {
|
|
12870
12870
|
onUpdate([...customProperties, { name: "", value: "", type: "lpwstr" }]);
|
|
12871
12871
|
}, [customProperties, onUpdate]);
|
|
@@ -13067,7 +13067,7 @@ function DocumentPropertiesStatisticsTab({
|
|
|
13067
13067
|
onUpdateAppProperties,
|
|
13068
13068
|
canEdit
|
|
13069
13069
|
}) {
|
|
13070
|
-
const { t } =
|
|
13070
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
13071
13071
|
const handleEditableChange = React108.useCallback(
|
|
13072
13072
|
(key, value) => {
|
|
13073
13073
|
onUpdateAppProperties({ [key]: value });
|
|
@@ -13107,7 +13107,7 @@ function DocumentPropertiesDialog({
|
|
|
13107
13107
|
onClose,
|
|
13108
13108
|
onSave
|
|
13109
13109
|
}) {
|
|
13110
|
-
const { t } =
|
|
13110
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
13111
13111
|
const [activeTab, setActiveTab] = React108.useState("summary");
|
|
13112
13112
|
const [draftCore, setDraftCore] = React108.useState({});
|
|
13113
13113
|
const [draftCustom, setDraftCustom] = React108.useState([]);
|
|
@@ -13158,7 +13158,7 @@ function DocumentPropertiesDialog({
|
|
|
13158
13158
|
const handleClose = React108.useCallback(() => {
|
|
13159
13159
|
onClose();
|
|
13160
13160
|
}, [onClose]);
|
|
13161
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
13161
|
+
const { panelStyle, handlers: dragHandlers } = chunkVGU5S37T_js.useModalDismissDrag(handleClose);
|
|
13162
13162
|
if (!isOpen) {
|
|
13163
13163
|
return null;
|
|
13164
13164
|
}
|
|
@@ -13295,7 +13295,7 @@ function FontEmbeddingPanel({
|
|
|
13295
13295
|
onClose,
|
|
13296
13296
|
onToggleEmbedFonts
|
|
13297
13297
|
}) {
|
|
13298
|
-
const { t } =
|
|
13298
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
13299
13299
|
const [availableFamilies, setAvailableFamilies] = React108.useState(/* @__PURE__ */ new Set());
|
|
13300
13300
|
const [scanning, setScanning] = React108.useState(false);
|
|
13301
13301
|
const [scanned, setScanned] = React108.useState(false);
|
|
@@ -13423,7 +13423,7 @@ function DigitalSignaturesDialog({
|
|
|
13423
13423
|
hasSignatures,
|
|
13424
13424
|
signatureCount
|
|
13425
13425
|
}) {
|
|
13426
|
-
const { t } =
|
|
13426
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
13427
13427
|
if (!isOpen) {
|
|
13428
13428
|
return null;
|
|
13429
13429
|
}
|
|
@@ -13495,7 +13495,7 @@ function SignatureStatusBadge({
|
|
|
13495
13495
|
signatureCount,
|
|
13496
13496
|
onClick
|
|
13497
13497
|
}) {
|
|
13498
|
-
const { t } =
|
|
13498
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
13499
13499
|
if (!hasSignatures || signatureCount === 0) {
|
|
13500
13500
|
return null;
|
|
13501
13501
|
}
|
|
@@ -13521,7 +13521,7 @@ function SignatureStrippedDialog({
|
|
|
13521
13521
|
onConfirm,
|
|
13522
13522
|
onCancel
|
|
13523
13523
|
}) {
|
|
13524
|
-
const { t } =
|
|
13524
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
13525
13525
|
if (!isOpen) {
|
|
13526
13526
|
return null;
|
|
13527
13527
|
}
|
|
@@ -13590,7 +13590,7 @@ function EncryptedFileDialog({
|
|
|
13590
13590
|
isOpen,
|
|
13591
13591
|
onClose
|
|
13592
13592
|
}) {
|
|
13593
|
-
const { t } =
|
|
13593
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
13594
13594
|
if (!isOpen) {
|
|
13595
13595
|
return null;
|
|
13596
13596
|
}
|
|
@@ -13737,7 +13737,7 @@ function PresentationAudienceEffects({ snapshot }) {
|
|
|
13737
13737
|
] });
|
|
13738
13738
|
}
|
|
13739
13739
|
function PresentationEndOverlay({ onExit }) {
|
|
13740
|
-
const { t } =
|
|
13740
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
13741
13741
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
13742
13742
|
"button",
|
|
13743
13743
|
{
|
|
@@ -13753,9 +13753,9 @@ function PresentationSubtitleBar({
|
|
|
13753
13753
|
visible,
|
|
13754
13754
|
onCaptionChange
|
|
13755
13755
|
}) {
|
|
13756
|
-
const { t } =
|
|
13756
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
13757
13757
|
const language = pptx.subtitleRecognitionLanguage(
|
|
13758
|
-
pptx.subtitleSettingsFromOptions(
|
|
13758
|
+
pptx.subtitleSettingsFromOptions(chunkVGU5S37T_js.useViewerOptionsContext()),
|
|
13759
13759
|
typeof navigator === "undefined" ? "en-US" : navigator.language
|
|
13760
13760
|
);
|
|
13761
13761
|
const [captionText, setCaptionText] = React108.useState("");
|
|
@@ -13832,7 +13832,7 @@ function renderNotesSegments(segments) {
|
|
|
13832
13832
|
});
|
|
13833
13833
|
}
|
|
13834
13834
|
function PresenterConsoleToolbar(p) {
|
|
13835
|
-
const { t } =
|
|
13835
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
13836
13836
|
const ref = useWebControl(
|
|
13837
13837
|
{ ...pptx.presenterConsoleViewState(p.snapshot, p.audienceOpen), translate: t },
|
|
13838
13838
|
{
|
|
@@ -13923,7 +13923,7 @@ function ScaledSlidePreviewImpl({
|
|
|
13923
13923
|
{
|
|
13924
13924
|
className: "absolute inset-0",
|
|
13925
13925
|
style: {
|
|
13926
|
-
backgroundColor:
|
|
13926
|
+
backgroundColor: chunk5DBKW7F3_js.normalizeHexColor(slide.backgroundColor, "#ffffff")
|
|
13927
13927
|
}
|
|
13928
13928
|
}
|
|
13929
13929
|
),
|
|
@@ -13949,7 +13949,7 @@ function ScaledSlidePreviewImpl({
|
|
|
13949
13949
|
...pptx.deviceStrokeStageStyle(scale)
|
|
13950
13950
|
},
|
|
13951
13951
|
children: previewElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
13952
|
-
|
|
13952
|
+
chunkVGU5S37T_js.StaticElementRenderer,
|
|
13953
13953
|
{
|
|
13954
13954
|
element,
|
|
13955
13955
|
activeSlide: slide,
|
|
@@ -14016,7 +14016,7 @@ function PresenterNotesRail({
|
|
|
14016
14016
|
onMove,
|
|
14017
14017
|
onUpdateNotes
|
|
14018
14018
|
}) {
|
|
14019
|
-
const { t } =
|
|
14019
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
14020
14020
|
const slide = slides[current];
|
|
14021
14021
|
const nextSlide = pptx.nextPresentedSlide(slides, current, activeCustomShow, authoredRange);
|
|
14022
14022
|
const notesText = slide?.notes ?? "";
|
|
@@ -14141,7 +14141,7 @@ function PresenterNotesRail({
|
|
|
14141
14141
|
] });
|
|
14142
14142
|
}
|
|
14143
14143
|
function PresenterSlideNavigator(props) {
|
|
14144
|
-
const { t } =
|
|
14144
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
14145
14145
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${pptx.PRESENTER_CONSOLE_CLASSES.navigator} text-foreground`, children: [
|
|
14146
14146
|
/* @__PURE__ */ jsxRuntime.jsxs("header", { className: "mb-4 flex items-center justify-between border-b border-border pb-4", children: [
|
|
14147
14147
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
@@ -14283,7 +14283,7 @@ function PresenterView({
|
|
|
14283
14283
|
onSwapDisplays,
|
|
14284
14284
|
onUpdateNotes
|
|
14285
14285
|
}) {
|
|
14286
|
-
const { t } =
|
|
14286
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
14287
14287
|
const [now, setNow] = React108.useState(Date.now());
|
|
14288
14288
|
React108.useEffect(() => {
|
|
14289
14289
|
const interval = window.setInterval(() => setNow(Date.now()), 1e3);
|
|
@@ -14440,7 +14440,7 @@ function MobilePresenterView({
|
|
|
14440
14440
|
onMovePresentationSlide,
|
|
14441
14441
|
onExit
|
|
14442
14442
|
}) {
|
|
14443
|
-
const { t } =
|
|
14443
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
14444
14444
|
const [now, setNow] = React108.useState(Date.now());
|
|
14445
14445
|
React108.useEffect(() => {
|
|
14446
14446
|
const interval = window.setInterval(() => setNow(Date.now()), 1e3);
|
|
@@ -14553,7 +14553,7 @@ function RehearseTimingsHud({
|
|
|
14553
14553
|
paused,
|
|
14554
14554
|
onTogglePause
|
|
14555
14555
|
}) {
|
|
14556
|
-
const { t } =
|
|
14556
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
14557
14557
|
const [tick, setTick] = React108.useState(0);
|
|
14558
14558
|
React108.useEffect(() => {
|
|
14559
14559
|
if (paused) {
|
|
@@ -14601,7 +14601,7 @@ function RehearseTimingsSummary({
|
|
|
14601
14601
|
onSave,
|
|
14602
14602
|
onDiscard
|
|
14603
14603
|
}) {
|
|
14604
|
-
const { t } =
|
|
14604
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
14605
14605
|
const totalMs = Object.values(recordedTimings).reduce((sum, ms) => sum + ms, 0);
|
|
14606
14606
|
const sortedEntries = Object.entries(recordedTimings).map(([idx, ms]) => ({ slideIndex: Number(idx), ms })).sort((a, b) => a.slideIndex - b.slideIndex);
|
|
14607
14607
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "fixed inset-0 z-[9999] flex items-center justify-center bg-black/60 backdrop-blur-sm", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full max-w-lg rounded-xl border border-border bg-background shadow-2xl", children: [
|
|
@@ -14685,7 +14685,7 @@ function SelectionPane({
|
|
|
14685
14685
|
markDirty,
|
|
14686
14686
|
onClose
|
|
14687
14687
|
}) {
|
|
14688
|
-
const { t } =
|
|
14688
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
14689
14689
|
const activeSlide = slides[activeSlideIndex];
|
|
14690
14690
|
const elements = activeSlide?.elements ?? [];
|
|
14691
14691
|
const [editingId, setEditingId] = React108.useState(null);
|
|
@@ -14840,7 +14840,7 @@ function SelectionPane({
|
|
|
14840
14840
|
setDragIndex(null);
|
|
14841
14841
|
setDragOverIndex(null);
|
|
14842
14842
|
},
|
|
14843
|
-
className:
|
|
14843
|
+
className: chunk5DBKW7F3_js.cn(
|
|
14844
14844
|
"flex items-center gap-1.5 px-2 py-1 text-xs cursor-pointer transition-colors",
|
|
14845
14845
|
isSelected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground",
|
|
14846
14846
|
dragOverIndex === realIndex ? "border-t-2 border-primary" : ""
|
|
@@ -14894,13 +14894,13 @@ function SelectionPane({
|
|
|
14894
14894
|
}
|
|
14895
14895
|
var INPUT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
|
|
14896
14896
|
var SELECT_CLS = "bg-muted border border-border rounded px-2 py-1 w-full text-[11px] max-md:min-h-[44px]!";
|
|
14897
|
-
var ENTRANCE_PRESETS = /* @__PURE__ */
|
|
14897
|
+
var ENTRANCE_PRESETS = /* @__PURE__ */ chunk5DBKW7F3_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14898
14898
|
(o) => o.value === "fadeIn" || o.value === "flyIn" || o.value === "zoomIn"
|
|
14899
14899
|
);
|
|
14900
|
-
var EXIT_PRESETS = /* @__PURE__ */
|
|
14900
|
+
var EXIT_PRESETS = /* @__PURE__ */ chunk5DBKW7F3_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14901
14901
|
(o) => o.value === "fadeOut" || o.value === "flyOut" || o.value === "zoomOut"
|
|
14902
14902
|
);
|
|
14903
|
-
var EMPHASIS_PRESETS = /* @__PURE__ */
|
|
14903
|
+
var EMPHASIS_PRESETS = /* @__PURE__ */ chunk5DBKW7F3_js.ANIMATION_PRESET_OPTIONS.filter(
|
|
14904
14904
|
(o) => o.value === "spin" || o.value === "pulse" || o.value === "colorWave" || o.value === "bounce" || o.value === "flash" || o.value === "growShrink" || o.value === "teeter"
|
|
14905
14905
|
);
|
|
14906
14906
|
var TIMING_CURVE_OPTIONS = [
|
|
@@ -15001,7 +15001,7 @@ function AfterAnimationRow({
|
|
|
15001
15001
|
onActionChange,
|
|
15002
15002
|
onColorChange
|
|
15003
15003
|
}) {
|
|
15004
|
-
const { t } =
|
|
15004
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
15005
15005
|
const commitRecentColor = useRecentColorCommit();
|
|
15006
15006
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
15007
15007
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -15052,7 +15052,7 @@ function AnimationTimelineSection({
|
|
|
15052
15052
|
canEdit,
|
|
15053
15053
|
handlers
|
|
15054
15054
|
}) {
|
|
15055
|
-
const { t } =
|
|
15055
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
15056
15056
|
const effectLabel = (anim) => pptx.animationEffectLabel(anim, (key) => t(key));
|
|
15057
15057
|
const {
|
|
15058
15058
|
sortedAnimations,
|
|
@@ -15083,7 +15083,7 @@ function AnimationTimelineSection({
|
|
|
15083
15083
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-6 rounded bg-muted/50 border border-border overflow-hidden", children: timelineBarData.map((bar) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
15084
15084
|
"div",
|
|
15085
15085
|
{
|
|
15086
|
-
className:
|
|
15086
|
+
className: chunk5DBKW7F3_js.cn(
|
|
15087
15087
|
"absolute top-0.5 bottom-0.5 rounded-sm transition-colors",
|
|
15088
15088
|
animationTypeColor(bar.anim),
|
|
15089
15089
|
bar.anim.elementId === selectedElementId && "ring-1 ring-primary"
|
|
@@ -15112,7 +15112,7 @@ function AnimationTimelineSection({
|
|
|
15112
15112
|
onDragLeave: handleDragLeave,
|
|
15113
15113
|
onDrop: (e) => handleDrop(index, e),
|
|
15114
15114
|
title: t("pptx.animation.nativeEffectHint"),
|
|
15115
|
-
className:
|
|
15115
|
+
className: chunk5DBKW7F3_js.cn(
|
|
15116
15116
|
"flex items-center gap-1 px-1 py-0.5 rounded text-[10px] italic",
|
|
15117
15117
|
"bg-muted/20 text-muted-foreground/70",
|
|
15118
15118
|
isDragOver && "border-t-2 border-primary"
|
|
@@ -15151,7 +15151,7 @@ function AnimationTimelineSection({
|
|
|
15151
15151
|
onDragEnd: handleDragEnd,
|
|
15152
15152
|
onMouseEnter: () => handleAnimationHover(anim),
|
|
15153
15153
|
onMouseLeave: handleAnimationHoverEnd,
|
|
15154
|
-
className:
|
|
15154
|
+
className: chunk5DBKW7F3_js.cn(
|
|
15155
15155
|
"flex items-center gap-1 px-1 py-0.5 rounded text-[10px] cursor-grab transition-colors",
|
|
15156
15156
|
isSelected ? "bg-primary/30 text-primary" : "bg-muted/50 text-muted-foreground",
|
|
15157
15157
|
isDragging && "opacity-40",
|
|
@@ -15212,7 +15212,7 @@ function BookmarkTriggerRow({
|
|
|
15212
15212
|
style,
|
|
15213
15213
|
onChange
|
|
15214
15214
|
}) {
|
|
15215
|
-
const { t } =
|
|
15215
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
15216
15216
|
const options = pptx.listMediaBookmarkOptions(elements);
|
|
15217
15217
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
15218
15218
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground text-[11px]", children: t("pptx.animation.trigger.bookmarkLabel") }),
|
|
@@ -15245,7 +15245,7 @@ function EffectSoundRow({
|
|
|
15245
15245
|
onPick,
|
|
15246
15246
|
onPickStock
|
|
15247
15247
|
}) {
|
|
15248
|
-
const { t } =
|
|
15248
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
15249
15249
|
const fileInputRef = React108__default.default.useRef(null);
|
|
15250
15250
|
const selectedValue = soundState.catalogueId ?? (soundState.hasSound ? CURRENT_VALUE : NONE_VALUE);
|
|
15251
15251
|
const handleSelectChange = (event) => {
|
|
@@ -15283,7 +15283,7 @@ function EffectSoundRow({
|
|
|
15283
15283
|
}
|
|
15284
15284
|
const asset = pptx.getEffectSoundAsset(soundState.catalogueId);
|
|
15285
15285
|
if (asset) {
|
|
15286
|
-
|
|
15286
|
+
chunkVGU5S37T_js.playAnimationSound(asset.dataUrl);
|
|
15287
15287
|
}
|
|
15288
15288
|
};
|
|
15289
15289
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -15336,7 +15336,7 @@ function MotionPathRow({
|
|
|
15336
15336
|
canEdit,
|
|
15337
15337
|
onChange
|
|
15338
15338
|
}) {
|
|
15339
|
-
const { t } =
|
|
15339
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
15340
15340
|
const presetId = pptx.motionPathPresetIdForPath(motionPath);
|
|
15341
15341
|
const isCustom = Boolean(motionPath) && !presetId;
|
|
15342
15342
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
@@ -15458,7 +15458,7 @@ function useAnimationPreview({
|
|
|
15458
15458
|
}) {
|
|
15459
15459
|
const handleAnimationHover = React108.useCallback((anim) => {
|
|
15460
15460
|
if (anim.motionPath) {
|
|
15461
|
-
|
|
15461
|
+
chunk5DBKW7F3_js.startMotionPathPreview(anim.elementId, anim.motionPath, {
|
|
15462
15462
|
durationMs: anim.durationMs,
|
|
15463
15463
|
delayMs: anim.delayMs,
|
|
15464
15464
|
timingCurve: anim.timingCurve
|
|
@@ -15469,19 +15469,19 @@ function useAnimationPreview({
|
|
|
15469
15469
|
if (!preset || preset === "none") {
|
|
15470
15470
|
return;
|
|
15471
15471
|
}
|
|
15472
|
-
|
|
15472
|
+
chunk5DBKW7F3_js.startPreviewAnimation(anim.elementId, preset, {
|
|
15473
15473
|
direction: anim.direction,
|
|
15474
15474
|
durationMs: anim.durationMs ?? 500,
|
|
15475
15475
|
timingCurve: anim.timingCurve
|
|
15476
15476
|
});
|
|
15477
15477
|
}, []);
|
|
15478
|
-
const handleAnimationHoverEnd = React108.useCallback(() =>
|
|
15478
|
+
const handleAnimationHoverEnd = React108.useCallback(() => chunk5DBKW7F3_js.stopPreviewAnimation(), []);
|
|
15479
15479
|
const handlePreviewClick = React108.useCallback(() => {
|
|
15480
15480
|
if (!selectedElementAnimation) {
|
|
15481
15481
|
return;
|
|
15482
15482
|
}
|
|
15483
15483
|
if (selectedElementAnimation.motionPath) {
|
|
15484
|
-
|
|
15484
|
+
chunk5DBKW7F3_js.startMotionPathPreview(selectedElementId, selectedElementAnimation.motionPath, {
|
|
15485
15485
|
durationMs: selectedElementAnimation.durationMs,
|
|
15486
15486
|
delayMs: selectedElementAnimation.delayMs,
|
|
15487
15487
|
timingCurve: selectedElementAnimation.timingCurve
|
|
@@ -15492,7 +15492,7 @@ function useAnimationPreview({
|
|
|
15492
15492
|
if (!preset || preset === "none") {
|
|
15493
15493
|
return;
|
|
15494
15494
|
}
|
|
15495
|
-
|
|
15495
|
+
chunk5DBKW7F3_js.startPreviewAnimation(selectedElementId, preset, {
|
|
15496
15496
|
direction: selectedElementAnimation.direction,
|
|
15497
15497
|
durationMs: selectedElementAnimation.durationMs ?? 500,
|
|
15498
15498
|
timingCurve: selectedElementAnimation.timingCurve
|
|
@@ -15727,7 +15727,7 @@ function useAnimationHandlers({
|
|
|
15727
15727
|
return anim.elementId.slice(0, 8);
|
|
15728
15728
|
}
|
|
15729
15729
|
const text = pptx$1.hasTextProperties(el) ? el.text : void 0;
|
|
15730
|
-
return text ||
|
|
15730
|
+
return text || chunk5DBKW7F3_js.getElementLabel(el);
|
|
15731
15731
|
},
|
|
15732
15732
|
[activeSlide.elements]
|
|
15733
15733
|
);
|
|
@@ -15738,7 +15738,7 @@ function useAnimationHandlers({
|
|
|
15738
15738
|
return id.slice(0, 8);
|
|
15739
15739
|
}
|
|
15740
15740
|
const text = pptx$1.hasTextProperties(el) ? el.text : void 0;
|
|
15741
|
-
return text ||
|
|
15741
|
+
return text || chunk5DBKW7F3_js.getElementLabel(el);
|
|
15742
15742
|
}).join(", "),
|
|
15743
15743
|
[activeSlide.elements]
|
|
15744
15744
|
);
|
|
@@ -15794,8 +15794,8 @@ function AnimationPanel({
|
|
|
15794
15794
|
canEdit,
|
|
15795
15795
|
onUpdateSlide
|
|
15796
15796
|
}) {
|
|
15797
|
-
const { t } =
|
|
15798
|
-
const { viewportWidth } =
|
|
15797
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
15798
|
+
const { viewportWidth } = chunkVGU5S37T_js.useIsMobile();
|
|
15799
15799
|
const directionBtnPx = Math.max(28, pptx.getDensePanelTouchTargetPx(viewportWidth));
|
|
15800
15800
|
const fieldStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
|
|
15801
15801
|
const handlers = useAnimationHandlers({
|
|
@@ -15923,7 +15923,7 @@ function AnimationPanel({
|
|
|
15923
15923
|
type: "button",
|
|
15924
15924
|
disabled: !canEdit,
|
|
15925
15925
|
style: { minWidth: directionBtnPx, minHeight: directionBtnPx },
|
|
15926
|
-
className:
|
|
15926
|
+
className: chunk5DBKW7F3_js.cn(
|
|
15927
15927
|
"flex items-center justify-center rounded border transition-colors",
|
|
15928
15928
|
isActive ? "border-primary bg-primary/20 text-primary" : "border-border bg-muted text-muted-foreground hover:bg-accent"
|
|
15929
15929
|
),
|
|
@@ -15989,7 +15989,7 @@ function AnimationPanel({
|
|
|
15989
15989
|
style: fieldStyle,
|
|
15990
15990
|
children: [
|
|
15991
15991
|
/* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: t("pptx.animation.trigger.selectShape") }),
|
|
15992
|
-
activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children:
|
|
15992
|
+
activeSlide.elements.filter((el) => el.id !== selectedElement.id).map((el) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: el.id, children: chunk5DBKW7F3_js.getElementLabel(el) }, el.id))
|
|
15993
15993
|
]
|
|
15994
15994
|
}
|
|
15995
15995
|
)
|
|
@@ -16133,7 +16133,7 @@ function ActionTargetFields({
|
|
|
16133
16133
|
returnAfter,
|
|
16134
16134
|
onChange
|
|
16135
16135
|
}) {
|
|
16136
|
-
const { t } =
|
|
16136
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
16137
16137
|
const urlLabelKey = URL_LABEL_KEY[type];
|
|
16138
16138
|
if (urlLabelKey) {
|
|
16139
16139
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -16142,7 +16142,7 @@ function ActionTargetFields({
|
|
|
16142
16142
|
type: "text",
|
|
16143
16143
|
disabled: !canEdit,
|
|
16144
16144
|
"aria-label": t(urlLabelKey),
|
|
16145
|
-
className:
|
|
16145
|
+
className: chunk5DBKW7F3_js.cn(INPUT2, "w-full"),
|
|
16146
16146
|
placeholder: "https://...",
|
|
16147
16147
|
value: url ?? "",
|
|
16148
16148
|
onChange: (e) => onChange({ url: e.target.value })
|
|
@@ -16156,7 +16156,7 @@ function ActionTargetFields({
|
|
|
16156
16156
|
type: "number",
|
|
16157
16157
|
disabled: !canEdit,
|
|
16158
16158
|
"aria-label": t("pptx.action.gotoSlide"),
|
|
16159
|
-
className:
|
|
16159
|
+
className: chunk5DBKW7F3_js.cn(INPUT2, "w-full"),
|
|
16160
16160
|
placeholder: t("pptx.action.slideNumberPlaceholder"),
|
|
16161
16161
|
min: 1,
|
|
16162
16162
|
max: slideCount,
|
|
@@ -16178,7 +16178,7 @@ function ActionTargetFields({
|
|
|
16178
16178
|
"data-testid": "pptx-action-custom-show",
|
|
16179
16179
|
disabled: !canEdit,
|
|
16180
16180
|
"aria-label": t("pptx.hyperlink.customShowLabel"),
|
|
16181
|
-
className:
|
|
16181
|
+
className: chunk5DBKW7F3_js.cn(INPUT2, "w-full"),
|
|
16182
16182
|
value: customShowId ?? "",
|
|
16183
16183
|
onChange: (e) => onChange({ customShowId: e.target.value, returnAfter }),
|
|
16184
16184
|
children: [
|
|
@@ -16210,7 +16210,7 @@ function ActionSettingsPanel({
|
|
|
16210
16210
|
customShows,
|
|
16211
16211
|
onUpdateElement
|
|
16212
16212
|
}) {
|
|
16213
|
-
const { t } =
|
|
16213
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
16214
16214
|
const clickAction = selectedElement.actionClick ? pptx$1.pptxActionToElementAction(selectedElement.actionClick, "click") : void 0;
|
|
16215
16215
|
const hoverAction = selectedElement.actionHover ? pptx$1.pptxActionToElementAction(selectedElement.actionHover, "hover") : void 0;
|
|
16216
16216
|
const updateAction = (trigger, type, patch) => {
|
|
@@ -16286,7 +16286,7 @@ function ActionTriggerSection({
|
|
|
16286
16286
|
onChangeType,
|
|
16287
16287
|
onChangeTarget
|
|
16288
16288
|
}) {
|
|
16289
|
-
const { t } =
|
|
16289
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
16290
16290
|
const [pendingType, setPendingType] = React108.useState(void 0);
|
|
16291
16291
|
const effectiveType = pptx.resolveActionType(pendingType, activeType);
|
|
16292
16292
|
const changeType = (type) => {
|
|
@@ -16300,7 +16300,7 @@ function ActionTriggerSection({
|
|
|
16300
16300
|
{
|
|
16301
16301
|
disabled: !canEdit,
|
|
16302
16302
|
"aria-label": label,
|
|
16303
|
-
className:
|
|
16303
|
+
className: chunk5DBKW7F3_js.cn(INPUT2, "w-full"),
|
|
16304
16304
|
value: effectiveType,
|
|
16305
16305
|
onChange: (e) => changeType(e.target.value),
|
|
16306
16306
|
children: pptx.ELEMENT_ACTION_TYPE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.labelKey) }, o.value))
|
|
@@ -16328,7 +16328,7 @@ var AXIS_ROWS = [
|
|
|
16328
16328
|
{ type: "catAx", labelKey: "pptx.chart.categoryAxis", hasScale: false }
|
|
16329
16329
|
];
|
|
16330
16330
|
function ChartAxisOptions({ axes, canEdit, onUpdateAxis }) {
|
|
16331
|
-
const { t } =
|
|
16331
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
16332
16332
|
const rows = AXIS_ROWS.map((row) => ({
|
|
16333
16333
|
...row,
|
|
16334
16334
|
axis: axes?.find((a) => a.axisType === row.type)
|
|
@@ -16473,7 +16473,7 @@ function ChartAxisStyleOptions({
|
|
|
16473
16473
|
onSetTitleStyle,
|
|
16474
16474
|
onSetGridlineStyle
|
|
16475
16475
|
}) {
|
|
16476
|
-
const { t } =
|
|
16476
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
16477
16477
|
const commitRecentColor = useRecentColorCommit();
|
|
16478
16478
|
const rows = SCALE_AXES.map((row) => ({
|
|
16479
16479
|
...row,
|
|
@@ -16645,7 +16645,7 @@ function ChartComboTypeOptions({
|
|
|
16645
16645
|
canEdit,
|
|
16646
16646
|
onSetSeriesType
|
|
16647
16647
|
}) {
|
|
16648
|
-
const { t } =
|
|
16648
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
16649
16649
|
if (!COMBO_SUPPORTED_TYPES.has(chartType) || series.length < 2) {
|
|
16650
16650
|
return null;
|
|
16651
16651
|
}
|
|
@@ -16674,7 +16674,7 @@ function ChartDataLabelOptions({
|
|
|
16674
16674
|
canEdit,
|
|
16675
16675
|
onUpdateStyle
|
|
16676
16676
|
}) {
|
|
16677
|
-
const { t } =
|
|
16677
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
16678
16678
|
if (!style?.hasDataLabels) {
|
|
16679
16679
|
return null;
|
|
16680
16680
|
}
|
|
@@ -16722,7 +16722,7 @@ function ChartDataPointMarkerOptions({
|
|
|
16722
16722
|
canEdit,
|
|
16723
16723
|
onSetPointMarker
|
|
16724
16724
|
}) {
|
|
16725
|
-
const { t } =
|
|
16725
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
16726
16726
|
const commitRecentColor = useRecentColorCommit();
|
|
16727
16727
|
const [seriesIndex, setSeriesIndex] = React108.useState(0);
|
|
16728
16728
|
if (!MARKER_SUPPORTED_TYPES.has(chartType) || series.length === 0 || categories.length === 0) {
|
|
@@ -16828,7 +16828,7 @@ function ChartDataPointOptions({
|
|
|
16828
16828
|
onSetPointExplosion,
|
|
16829
16829
|
onSetPointLabel
|
|
16830
16830
|
}) {
|
|
16831
|
-
const { t } =
|
|
16831
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
16832
16832
|
const commitRecentColor = useRecentColorCommit();
|
|
16833
16833
|
const [seriesIndex, setSeriesIndex] = React108.useState(0);
|
|
16834
16834
|
if (series.length === 0 || categories.length === 0) {
|
|
@@ -16930,7 +16930,7 @@ function ChartDataSheet({
|
|
|
16930
16930
|
highlightCell,
|
|
16931
16931
|
onChange
|
|
16932
16932
|
}) {
|
|
16933
|
-
const { t } =
|
|
16933
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
16934
16934
|
const ref = React108.useRef(null);
|
|
16935
16935
|
React108.useLayoutEffect(() => {
|
|
16936
16936
|
if (ref.current) {
|
|
@@ -16961,7 +16961,7 @@ function ChartDisplayOptions({
|
|
|
16961
16961
|
hasGridlines,
|
|
16962
16962
|
onToggleGridlines
|
|
16963
16963
|
}) {
|
|
16964
|
-
const { t } =
|
|
16964
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
16965
16965
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD, children: [
|
|
16966
16966
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING, children: t("pptx.chart.display") }),
|
|
16967
16967
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
@@ -17038,7 +17038,7 @@ function ChartErrorBarOptions({
|
|
|
17038
17038
|
canEdit,
|
|
17039
17039
|
onSetErrorBars
|
|
17040
17040
|
}) {
|
|
17041
|
-
const { t } =
|
|
17041
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
17042
17042
|
if (!ERROR_BAR_SUPPORTED_TYPES.has(chartType) || series.length === 0) {
|
|
17043
17043
|
return null;
|
|
17044
17044
|
}
|
|
@@ -17118,7 +17118,7 @@ function ChartFilteredSeriesOptions({
|
|
|
17118
17118
|
onRestoreSeries,
|
|
17119
17119
|
onSetDataLabelsRangeCache
|
|
17120
17120
|
}) {
|
|
17121
|
-
const { t } =
|
|
17121
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
17122
17122
|
const filteredSeries = chartData.filteredSeries ?? [];
|
|
17123
17123
|
const seriesWithRange = chartData.series.map((series, index) => ({ series, index })).filter(({ series }) => series.dataLabelOptions?.dataLabelsRange);
|
|
17124
17124
|
if (filteredSeries.length === 0 && seriesWithRange.length === 0 && chartData.series.length <= 1) {
|
|
@@ -17198,7 +17198,7 @@ function ChartMarkerOptions({
|
|
|
17198
17198
|
canEdit,
|
|
17199
17199
|
onSetMarker
|
|
17200
17200
|
}) {
|
|
17201
|
-
const { t } =
|
|
17201
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
17202
17202
|
const commitRecentColor = useRecentColorCommit();
|
|
17203
17203
|
if (!MARKER_SUPPORTED_TYPES.has(chartType) || series.length === 0) {
|
|
17204
17204
|
return null;
|
|
@@ -17307,7 +17307,7 @@ function ChartSeriesColorOptions({
|
|
|
17307
17307
|
onSetColor,
|
|
17308
17308
|
onToggleSecondaryAxis
|
|
17309
17309
|
}) {
|
|
17310
|
-
const { t } =
|
|
17310
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
17311
17311
|
const series = chartData.series;
|
|
17312
17312
|
if (series.length === 0) {
|
|
17313
17313
|
return null;
|
|
@@ -17357,7 +17357,7 @@ function ChartSubtypeOptions({
|
|
|
17357
17357
|
canEdit,
|
|
17358
17358
|
onUpdateChartData
|
|
17359
17359
|
}) {
|
|
17360
|
-
const { t } =
|
|
17360
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
17361
17361
|
if (chartData.chartType !== "bar3D" && chartData.chartType !== "radar" && chartData.chartType !== "surface") {
|
|
17362
17362
|
return null;
|
|
17363
17363
|
}
|
|
@@ -17423,7 +17423,7 @@ function ChartTrendlineOptions({
|
|
|
17423
17423
|
canEdit,
|
|
17424
17424
|
onSetTrendline
|
|
17425
17425
|
}) {
|
|
17426
|
-
const { t } =
|
|
17426
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
17427
17427
|
if (!TRENDLINE_SUPPORTED_TYPES.has(chartType) || series.length === 0) {
|
|
17428
17428
|
return null;
|
|
17429
17429
|
}
|
|
@@ -17496,7 +17496,7 @@ function ChartTypeSelector({
|
|
|
17496
17496
|
onUpdateChartData,
|
|
17497
17497
|
onTitleChange
|
|
17498
17498
|
}) {
|
|
17499
|
-
const { t } =
|
|
17499
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
17500
17500
|
const supportsGrouping = GROUPING_SUPPORTED_TYPES.has(chartType);
|
|
17501
17501
|
const displayedType = pptx.resolveDisplayedChartType(chartData);
|
|
17502
17502
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD, children: [
|
|
@@ -17577,7 +17577,7 @@ function RotationField({
|
|
|
17577
17577
|
canEdit,
|
|
17578
17578
|
onRotationPatch
|
|
17579
17579
|
}) {
|
|
17580
|
-
const { t } =
|
|
17580
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
17581
17581
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
17582
17582
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.chart.userShapeRotation") }),
|
|
17583
17583
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17599,7 +17599,7 @@ function FlipFields({
|
|
|
17599
17599
|
canEdit,
|
|
17600
17600
|
onFlipPatch
|
|
17601
17601
|
}) {
|
|
17602
|
-
const { t } =
|
|
17602
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
17603
17603
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
17604
17604
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-1 cursor-pointer", children: [
|
|
17605
17605
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -17638,7 +17638,7 @@ function ChartUserShapePositionFields({
|
|
|
17638
17638
|
onRotationPatch,
|
|
17639
17639
|
onFlipPatch
|
|
17640
17640
|
}) {
|
|
17641
|
-
const { t } =
|
|
17641
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
17642
17642
|
const update = (patch) => onPatch(row.path, patch);
|
|
17643
17643
|
if (row.depth === 0) {
|
|
17644
17644
|
const from = row.from;
|
|
@@ -17762,7 +17762,7 @@ function ChartUserShapeOptions({
|
|
|
17762
17762
|
canEdit,
|
|
17763
17763
|
onUpdateChartData
|
|
17764
17764
|
}) {
|
|
17765
|
-
const { t } =
|
|
17765
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
17766
17766
|
const shapes = chartData.userShapes;
|
|
17767
17767
|
const rows = pptx.listChartUserShapeRows(shapes);
|
|
17768
17768
|
const kindLabel = (kind) => {
|
|
@@ -17920,8 +17920,8 @@ function ChartUserShapeOptions({
|
|
|
17920
17920
|
}
|
|
17921
17921
|
function ChartDataPanel({ selectedElement, canEdit, onUpdateElement }) {
|
|
17922
17922
|
const chartData = selectedElement.chartData;
|
|
17923
|
-
const followDataPoint =
|
|
17924
|
-
const { selection: partSelection } =
|
|
17923
|
+
const followDataPoint = chunkVGU5S37T_js.useViewerOptionsContext().advanced.chartPropertiesFollowDataPoint;
|
|
17924
|
+
const { selection: partSelection } = chunkVGU5S37T_js.useChartPartSelection();
|
|
17925
17925
|
const canvasPart = partSelection?.elementId === selectedElement.id ? partSelection.part : null;
|
|
17926
17926
|
const title = chartData?.title;
|
|
17927
17927
|
const chartType = chartData?.chartType;
|
|
@@ -18359,7 +18359,7 @@ function OleEditorDialog({
|
|
|
18359
18359
|
element,
|
|
18360
18360
|
onUpdateElement
|
|
18361
18361
|
}) {
|
|
18362
|
-
const { t } =
|
|
18362
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
18363
18363
|
const dialogRef = React108.useRef(null);
|
|
18364
18364
|
const fileInputRef = React108.useRef(null);
|
|
18365
18365
|
const descriptor = pptx.buildOleEditDialogDescriptor(element);
|
|
@@ -18607,7 +18607,7 @@ function ConnectorArrowsSection({
|
|
|
18607
18607
|
onUpdateShapeStyle,
|
|
18608
18608
|
markDirty
|
|
18609
18609
|
}) {
|
|
18610
|
-
const { t } =
|
|
18610
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
18611
18611
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-2", children: [
|
|
18612
18612
|
["Start", "End"].map((end) => {
|
|
18613
18613
|
const key = end === "Start" ? "connectorStartArrow" : "connectorEndArrow";
|
|
@@ -18626,7 +18626,7 @@ function ConnectorArrowsSection({
|
|
|
18626
18626
|
},
|
|
18627
18627
|
disabled: !canEdit,
|
|
18628
18628
|
className: SELECT_CLS2,
|
|
18629
|
-
children:
|
|
18629
|
+
children: chunk5DBKW7F3_js.CONNECTOR_ARROW_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18630
18630
|
}
|
|
18631
18631
|
)
|
|
18632
18632
|
] }, end);
|
|
@@ -18650,7 +18650,7 @@ function ConnectorArrowsSection({
|
|
|
18650
18650
|
},
|
|
18651
18651
|
disabled: !canEdit,
|
|
18652
18652
|
className: SELECT_CLS2,
|
|
18653
|
-
children:
|
|
18653
|
+
children: chunk5DBKW7F3_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18654
18654
|
}
|
|
18655
18655
|
)
|
|
18656
18656
|
] }),
|
|
@@ -18669,7 +18669,7 @@ function ConnectorArrowsSection({
|
|
|
18669
18669
|
},
|
|
18670
18670
|
disabled: !canEdit,
|
|
18671
18671
|
className: SELECT_CLS2,
|
|
18672
|
-
children:
|
|
18672
|
+
children: chunk5DBKW7F3_js.ARROW_SIZE_OPTIONS.map((o) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: o.value, children: t(o.i18nKey) }, o.value))
|
|
18673
18673
|
}
|
|
18674
18674
|
)
|
|
18675
18675
|
] })
|
|
@@ -18700,7 +18700,7 @@ function ConnectorPanel({
|
|
|
18700
18700
|
function GroupInfoPanel({
|
|
18701
18701
|
selectedElement
|
|
18702
18702
|
}) {
|
|
18703
|
-
const { t } =
|
|
18703
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
18704
18704
|
if (selectedElement.type !== "group") {
|
|
18705
18705
|
return null;
|
|
18706
18706
|
}
|
|
@@ -18715,7 +18715,7 @@ function OlePropertiesPanel({
|
|
|
18715
18715
|
canEdit,
|
|
18716
18716
|
onUpdateElement
|
|
18717
18717
|
}) {
|
|
18718
|
-
const { t } =
|
|
18718
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
18719
18719
|
const [isEditorOpen, setIsEditorOpen] = React108.useState(false);
|
|
18720
18720
|
if (selectedElement.type !== "ole") {
|
|
18721
18721
|
return null;
|
|
@@ -18760,7 +18760,7 @@ function OlePropertiesPanel({
|
|
|
18760
18760
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
18761
18761
|
"span",
|
|
18762
18762
|
{
|
|
18763
|
-
className:
|
|
18763
|
+
className: chunk5DBKW7F3_js.cn(
|
|
18764
18764
|
"inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium",
|
|
18765
18765
|
ole.isLinked ? "bg-blue-500/20 text-blue-400" : "bg-green-500/20 text-green-400"
|
|
18766
18766
|
),
|
|
@@ -18813,7 +18813,7 @@ function LayerOrderButtons({
|
|
|
18813
18813
|
"button",
|
|
18814
18814
|
{
|
|
18815
18815
|
type: "button",
|
|
18816
|
-
className:
|
|
18816
|
+
className: chunk5DBKW7F3_js.cn("flex-1", BTN2),
|
|
18817
18817
|
disabled: !canEdit,
|
|
18818
18818
|
onClick: () => onMoveLayer("forward"),
|
|
18819
18819
|
children: "\u2191 Forward"
|
|
@@ -18823,7 +18823,7 @@ function LayerOrderButtons({
|
|
|
18823
18823
|
"button",
|
|
18824
18824
|
{
|
|
18825
18825
|
type: "button",
|
|
18826
|
-
className:
|
|
18826
|
+
className: chunk5DBKW7F3_js.cn("flex-1", BTN2),
|
|
18827
18827
|
disabled: !canEdit,
|
|
18828
18828
|
onClick: () => onMoveLayer("backward"),
|
|
18829
18829
|
children: "\u2193 Backward"
|
|
@@ -18837,7 +18837,7 @@ function ArtisticEffectsGallery({
|
|
|
18837
18837
|
canEdit,
|
|
18838
18838
|
updateEffects
|
|
18839
18839
|
}) {
|
|
18840
|
-
const { t } =
|
|
18840
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
18841
18841
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px]", children: [
|
|
18842
18842
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.image.artisticEffects") }),
|
|
18843
18843
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: pptx.ARTISTIC_EFFECTS.map(([effectName, tKey, cssFilter]) => {
|
|
@@ -18847,7 +18847,7 @@ function ArtisticEffectsGallery({
|
|
|
18847
18847
|
{
|
|
18848
18848
|
type: "button",
|
|
18849
18849
|
disabled: !canEdit,
|
|
18850
|
-
className:
|
|
18850
|
+
className: chunk5DBKW7F3_js.cn(
|
|
18851
18851
|
"flex flex-col items-center gap-0.5 rounded border p-0.5 hover:bg-accent/50",
|
|
18852
18852
|
isActive ? "border-primary bg-primary/10" : "border-border"
|
|
18853
18853
|
),
|
|
@@ -18882,7 +18882,7 @@ function ColorChangeSection({
|
|
|
18882
18882
|
canEdit,
|
|
18883
18883
|
updateEffects
|
|
18884
18884
|
}) {
|
|
18885
|
-
const { t } =
|
|
18885
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
18886
18886
|
const cc = fx?.clrChange;
|
|
18887
18887
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px]", children: [
|
|
18888
18888
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center justify-between gap-2", children: [
|
|
@@ -18909,7 +18909,7 @@ function ColorChangeSection({
|
|
|
18909
18909
|
DebouncedColorInput,
|
|
18910
18910
|
{
|
|
18911
18911
|
disabled: !canEdit,
|
|
18912
|
-
value:
|
|
18912
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(cc.clrFrom, "#ffffff"),
|
|
18913
18913
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
18914
18914
|
onCommit: (hex) => updateEffects({
|
|
18915
18915
|
clrChange: {
|
|
@@ -18927,7 +18927,7 @@ function ColorChangeSection({
|
|
|
18927
18927
|
DebouncedColorInput,
|
|
18928
18928
|
{
|
|
18929
18929
|
disabled: !canEdit || Boolean(cc.clrToTransparent),
|
|
18930
|
-
value:
|
|
18930
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(cc.clrTo, "#000000"),
|
|
18931
18931
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
18932
18932
|
onCommit: (hex) => updateEffects({
|
|
18933
18933
|
clrChange: {
|
|
@@ -18964,7 +18964,7 @@ function ColorWashSection({
|
|
|
18964
18964
|
canEdit,
|
|
18965
18965
|
updateEffects
|
|
18966
18966
|
}) {
|
|
18967
|
-
const { t } =
|
|
18967
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
18968
18968
|
const wash = fx?.colorWash;
|
|
18969
18969
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px]", children: [
|
|
18970
18970
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center justify-between gap-2", children: [
|
|
@@ -18987,7 +18987,7 @@ function ColorWashSection({
|
|
|
18987
18987
|
DebouncedColorInput,
|
|
18988
18988
|
{
|
|
18989
18989
|
disabled: !canEdit,
|
|
18990
|
-
value:
|
|
18990
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(wash.color, "#0066cc"),
|
|
18991
18991
|
className: "h-6 w-8 rounded border border-border bg-transparent cursor-pointer",
|
|
18992
18992
|
onCommit: (hex) => updateEffects({
|
|
18993
18993
|
colorWash: { color: hex, opacity: wash.opacity ?? 40 }
|
|
@@ -19064,7 +19064,7 @@ function DuotonePanel({
|
|
|
19064
19064
|
canEdit,
|
|
19065
19065
|
onUpdateElement
|
|
19066
19066
|
}) {
|
|
19067
|
-
const { t } =
|
|
19067
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
19068
19068
|
const effects = "imageEffects" in selectedElement ? selectedElement.imageEffects : void 0;
|
|
19069
19069
|
const commitDuotone = React108.useCallback(
|
|
19070
19070
|
(color1, color2) => {
|
|
@@ -19085,8 +19085,8 @@ function DuotonePanel({
|
|
|
19085
19085
|
}
|
|
19086
19086
|
});
|
|
19087
19087
|
}, [effects, onUpdateElement]);
|
|
19088
|
-
const shadowColor =
|
|
19089
|
-
const highlightColor =
|
|
19088
|
+
const shadowColor = chunk5DBKW7F3_js.normalizeHexColor(effects?.duotone?.color1, "#000000");
|
|
19089
|
+
const highlightColor = chunk5DBKW7F3_js.normalizeHexColor(effects?.duotone?.color2, "#ffffff");
|
|
19090
19090
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px]", children: [
|
|
19091
19091
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground font-medium", children: t("pptx.image.duotone") }),
|
|
19092
19092
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
@@ -19117,7 +19117,7 @@ function DuotonePanel({
|
|
|
19117
19117
|
] }),
|
|
19118
19118
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
19119
19119
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground text-[10px]", children: t("pptx.image.duotonePresets") }),
|
|
19120
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children:
|
|
19120
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 gap-1", children: chunkVGU5S37T_js.DUOTONE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
19121
19121
|
"button",
|
|
19122
19122
|
{
|
|
19123
19123
|
type: "button",
|
|
@@ -19153,7 +19153,7 @@ function ImageAdjustmentsPanel({
|
|
|
19153
19153
|
canEdit,
|
|
19154
19154
|
onUpdateElement
|
|
19155
19155
|
}) {
|
|
19156
|
-
const { t } =
|
|
19156
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
19157
19157
|
const effects = React108.useMemo(
|
|
19158
19158
|
() => "imageEffects" in selectedElement ? selectedElement.imageEffects : void 0,
|
|
19159
19159
|
[selectedElement]
|
|
@@ -19254,7 +19254,7 @@ function ImageCropSection({
|
|
|
19254
19254
|
canEdit,
|
|
19255
19255
|
onUpdateElement
|
|
19256
19256
|
}) {
|
|
19257
|
-
const { t } =
|
|
19257
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
19258
19258
|
if (!pptx$1.isImageLikeElement(selectedElement)) {
|
|
19259
19259
|
return null;
|
|
19260
19260
|
}
|
|
@@ -19272,7 +19272,7 @@ function ImageCropSection({
|
|
|
19272
19272
|
max: MAX_CROP_PERCENT,
|
|
19273
19273
|
disabled: !croppable,
|
|
19274
19274
|
className: "accent-primary",
|
|
19275
|
-
value: Math.round(
|
|
19275
|
+
value: Math.round(chunk5DBKW7F3_js.clampCropValue(selectedElement[key]) * 100),
|
|
19276
19276
|
onChange: (e) => onUpdateElement({
|
|
19277
19277
|
[key]: Number(e.target.value) / 100
|
|
19278
19278
|
})
|
|
@@ -19319,7 +19319,7 @@ function ImagePropertiesPanel({
|
|
|
19319
19319
|
canEdit,
|
|
19320
19320
|
onUpdateElement
|
|
19321
19321
|
}) {
|
|
19322
|
-
const { t } =
|
|
19322
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
19323
19323
|
const fx = selectedElement.imageEffects;
|
|
19324
19324
|
const updateEffects = (patch) => {
|
|
19325
19325
|
onUpdateElement({
|
|
@@ -19336,7 +19336,7 @@ function ImagePropertiesPanel({
|
|
|
19336
19336
|
{
|
|
19337
19337
|
rows: 2,
|
|
19338
19338
|
disabled: !canEdit,
|
|
19339
|
-
className:
|
|
19339
|
+
className: chunk5DBKW7F3_js.cn(INPUT2, "resize-none text-[11px]"),
|
|
19340
19340
|
value: selectedElement.altText ?? "",
|
|
19341
19341
|
onChange: (e) => onUpdateElement({
|
|
19342
19342
|
altText: e.target.value
|
|
@@ -19524,7 +19524,7 @@ function InspectorFields({
|
|
|
19524
19524
|
liveTarget,
|
|
19525
19525
|
livePatch
|
|
19526
19526
|
}) {
|
|
19527
|
-
const { t } =
|
|
19527
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
19528
19528
|
const views = pptx.resolveInspectorSections(sections, target);
|
|
19529
19529
|
const change = (sectionId, fieldId, raw) => {
|
|
19530
19530
|
const patch = pptx.inspectorFieldPatch(sections, sectionId, fieldId, target, raw);
|
|
@@ -19752,7 +19752,7 @@ function MediaInspector({
|
|
|
19752
19752
|
durationSeconds,
|
|
19753
19753
|
onUpdateElement
|
|
19754
19754
|
}) {
|
|
19755
|
-
const { t } =
|
|
19755
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
19756
19756
|
const trimStartMs = element.trimStartMs ?? 0;
|
|
19757
19757
|
const trimEndMs = element.trimEndMs ?? 0;
|
|
19758
19758
|
const durationMs = durationSeconds * 1e3;
|
|
@@ -19982,7 +19982,7 @@ function MediaPlaybackBookmarks({
|
|
|
19982
19982
|
onUpdateElement,
|
|
19983
19983
|
onSeekTo
|
|
19984
19984
|
}) {
|
|
19985
|
-
const { t } =
|
|
19985
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
19986
19986
|
const [newBookmarkLabel, setNewBookmarkLabel] = React108.useState("");
|
|
19987
19987
|
const volumePercent = Math.round((element.volume ?? 1) * 100);
|
|
19988
19988
|
const handleAddBookmark = React108.useCallback(() => {
|
|
@@ -20232,7 +20232,7 @@ function MediaPropertiesPanel({
|
|
|
20232
20232
|
canEdit,
|
|
20233
20233
|
onUpdateElement
|
|
20234
20234
|
}) {
|
|
20235
|
-
const { t } =
|
|
20235
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
20236
20236
|
const mediaRef = React108.useRef(null);
|
|
20237
20237
|
const [isPlaying, setIsPlaying] = React108.useState(false);
|
|
20238
20238
|
const [currentTime, setCurrentTime] = React108.useState(0);
|
|
@@ -20466,7 +20466,7 @@ function AccessibilityTextSection({
|
|
|
20466
20466
|
canEdit,
|
|
20467
20467
|
onUpdateElement
|
|
20468
20468
|
}) {
|
|
20469
|
-
const { t } =
|
|
20469
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
20470
20470
|
const fields = pptx.getNonVisualDescriptionFields(selectedElement);
|
|
20471
20471
|
if (!fields.showAltText && !fields.showTitle) {
|
|
20472
20472
|
return null;
|
|
@@ -20481,7 +20481,7 @@ function AccessibilityTextSection({
|
|
|
20481
20481
|
rows: 2,
|
|
20482
20482
|
disabled: !canEdit,
|
|
20483
20483
|
placeholder: t("pptx.elementAccessibility.altTextPlaceholder"),
|
|
20484
|
-
className:
|
|
20484
|
+
className: chunk5DBKW7F3_js.cn(INPUT2, "resize-none text-[11px]"),
|
|
20485
20485
|
value: fields.altText,
|
|
20486
20486
|
onChange: (e) => onUpdateElement({ altText: e.target.value })
|
|
20487
20487
|
}
|
|
@@ -20495,7 +20495,7 @@ function AccessibilityTextSection({
|
|
|
20495
20495
|
type: "text",
|
|
20496
20496
|
disabled: !canEdit,
|
|
20497
20497
|
placeholder: t("pptx.elementAccessibility.titlePlaceholder"),
|
|
20498
|
-
className:
|
|
20498
|
+
className: chunk5DBKW7F3_js.cn(INPUT2, "text-[11px]"),
|
|
20499
20499
|
value: fields.title,
|
|
20500
20500
|
onChange: (e) => onUpdateElement({ title: e.target.value })
|
|
20501
20501
|
}
|
|
@@ -20523,7 +20523,7 @@ function RecentColorsRow({
|
|
|
20523
20523
|
disabled,
|
|
20524
20524
|
onCommit
|
|
20525
20525
|
}) {
|
|
20526
|
-
const { t } =
|
|
20526
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
20527
20527
|
const { recentColors, pushColor } = useRecentColors();
|
|
20528
20528
|
const shown = recentColors.length > 0;
|
|
20529
20529
|
const ref = React108.useRef(null);
|
|
@@ -20565,7 +20565,7 @@ function ThemeColorSwatchGrid({
|
|
|
20565
20565
|
selectedHex,
|
|
20566
20566
|
onPick
|
|
20567
20567
|
}) {
|
|
20568
|
-
const { t } =
|
|
20568
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
20569
20569
|
const themeColorMap = useThemeColorMap();
|
|
20570
20570
|
const columns = React108.useMemo(
|
|
20571
20571
|
() => pptx.buildThemeColorSwatchGrid(themeColorMap, (key, params) => t(key, params)),
|
|
@@ -20612,7 +20612,7 @@ function SelectRow({
|
|
|
20612
20612
|
options,
|
|
20613
20613
|
onChange
|
|
20614
20614
|
}) {
|
|
20615
|
-
const { t } =
|
|
20615
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
20616
20616
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: `flex flex-col gap-1 ${span2 ? COL2 : ""}`, children: [
|
|
20617
20617
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: label }),
|
|
20618
20618
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20636,14 +20636,14 @@ function ColorPickerRow({
|
|
|
20636
20636
|
onChange,
|
|
20637
20637
|
styleChange
|
|
20638
20638
|
}) {
|
|
20639
|
-
const { t } =
|
|
20639
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
20640
20640
|
const { pushColor } = useRecentColors();
|
|
20641
20641
|
const commit = (color, ref) => {
|
|
20642
20642
|
onChange(color, ref);
|
|
20643
20643
|
pushColor(color);
|
|
20644
20644
|
};
|
|
20645
20645
|
const handleEyedropper = async () => {
|
|
20646
|
-
const color = await
|
|
20646
|
+
const color = await chunk5DBKW7F3_js.openNativeEyeDropper();
|
|
20647
20647
|
if (color) {
|
|
20648
20648
|
commit(color);
|
|
20649
20649
|
}
|
|
@@ -20716,7 +20716,7 @@ function GradientStopRow({
|
|
|
20716
20716
|
onUpdate,
|
|
20717
20717
|
allStops
|
|
20718
20718
|
}) {
|
|
20719
|
-
const { t } =
|
|
20719
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
20720
20720
|
const { pushColor } = useRecentColors();
|
|
20721
20721
|
const commitRecentColor = useRecentColorCommit();
|
|
20722
20722
|
const patchStop = (patch) => {
|
|
@@ -20729,9 +20729,9 @@ function GradientStopRow({
|
|
|
20729
20729
|
"input",
|
|
20730
20730
|
{
|
|
20731
20731
|
type: "color",
|
|
20732
|
-
value:
|
|
20732
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(stop2.color, "#3b82f6"),
|
|
20733
20733
|
ref: commitRecentColor,
|
|
20734
|
-
onChange: (e) => patchStop({ color:
|
|
20734
|
+
onChange: (e) => patchStop({ color: chunk5DBKW7F3_js.normalizeHexColor(e.target.value, "#3b82f6"), colorRef: void 0 }),
|
|
20735
20735
|
className: "h-7 w-10 rounded border border-border bg-muted"
|
|
20736
20736
|
}
|
|
20737
20737
|
),
|
|
@@ -20806,7 +20806,7 @@ function FillAdvancedControls({
|
|
|
20806
20806
|
onUpdateGradientStops,
|
|
20807
20807
|
onSetFillColor: _onSetFillColor
|
|
20808
20808
|
}) {
|
|
20809
|
-
const { t } =
|
|
20809
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
20810
20810
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20811
20811
|
showGradient && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
20812
20812
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -20860,7 +20860,7 @@ function FillAdvancedControls({
|
|
|
20860
20860
|
onClick: () => onUpdateGradientStops([
|
|
20861
20861
|
...gradientStops,
|
|
20862
20862
|
{
|
|
20863
|
-
color:
|
|
20863
|
+
color: chunk5DBKW7F3_js.normalizeHexColor(style?.fillColor, chunk5DBKW7F3_js.DEFAULT_FILL_COLOR),
|
|
20864
20864
|
position: 50,
|
|
20865
20865
|
opacity: 1
|
|
20866
20866
|
}
|
|
@@ -20874,9 +20874,9 @@ function FillAdvancedControls({
|
|
|
20874
20874
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${COL2} flex flex-col gap-2`, children: [
|
|
20875
20875
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: LBL, children: "Pattern" }),
|
|
20876
20876
|
/* @__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) => {
|
|
20877
|
-
const fgColor =
|
|
20878
|
-
const bgColor =
|
|
20879
|
-
const svgPattern =
|
|
20877
|
+
const fgColor = chunk5DBKW7F3_js.normalizeHexColor(style?.fillColor, chunk5DBKW7F3_js.DEFAULT_FILL_COLOR);
|
|
20878
|
+
const bgColor = chunk5DBKW7F3_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff");
|
|
20879
|
+
const svgPattern = chunk5DBKW7F3_js.getPatternSvg(opt.value, fgColor, bgColor);
|
|
20880
20880
|
const isSelected = (style.fillPatternPreset || "pct20") === opt.value;
|
|
20881
20881
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20882
20882
|
"button",
|
|
@@ -20909,7 +20909,7 @@ function FillAdvancedControls({
|
|
|
20909
20909
|
{
|
|
20910
20910
|
label: t("pptx.fillAdvanced.foregroundColor"),
|
|
20911
20911
|
prefix: "pattern-fg",
|
|
20912
|
-
value:
|
|
20912
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(style?.fillColor, chunk5DBKW7F3_js.DEFAULT_FILL_COLOR),
|
|
20913
20913
|
disabled: isLine,
|
|
20914
20914
|
onChange: (color) => onUpdateShapeStyle(patternForeground(color)),
|
|
20915
20915
|
styleChange: patternForeground
|
|
@@ -20920,7 +20920,7 @@ function FillAdvancedControls({
|
|
|
20920
20920
|
{
|
|
20921
20921
|
label: t("pptx.fillAdvanced.backgroundColor"),
|
|
20922
20922
|
prefix: "pattern-bg",
|
|
20923
|
-
value:
|
|
20923
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(style?.fillPatternBackgroundColor, "#ffffff"),
|
|
20924
20924
|
disabled: isLine,
|
|
20925
20925
|
onChange: (color) => onUpdateShapeStyle(patternBackground(color)),
|
|
20926
20926
|
styleChange: patternBackground
|
|
@@ -20985,7 +20985,7 @@ var QUICK_STYLES = pptx.buildQuickStylesGallery();
|
|
|
20985
20985
|
function QuickStylesGallery({
|
|
20986
20986
|
onUpdateShapeStyle
|
|
20987
20987
|
}) {
|
|
20988
|
-
const { t } =
|
|
20988
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
20989
20989
|
const ref = React108.useRef(null);
|
|
20990
20990
|
React108.useLayoutEffect(() => {
|
|
20991
20991
|
const gallery = ref.current;
|
|
@@ -21022,14 +21022,14 @@ function StrokeEffectsSection({
|
|
|
21022
21022
|
onUpdateShapeStyle,
|
|
21023
21023
|
onSetStrokeColor
|
|
21024
21024
|
}) {
|
|
21025
|
-
const { t } =
|
|
21025
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
21026
21026
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
21027
21027
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
21028
21028
|
ColorPickerRow,
|
|
21029
21029
|
{
|
|
21030
21030
|
label: t("pptx.inspector.stroke"),
|
|
21031
21031
|
prefix: "stroke",
|
|
21032
|
-
value:
|
|
21032
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(style?.strokeColor, chunk5DBKW7F3_js.DEFAULT_STROKE_COLOR),
|
|
21033
21033
|
selectedRef: style?.strokeColorRef,
|
|
21034
21034
|
onChange: onSetStrokeColor,
|
|
21035
21035
|
styleChange: (hex, current) => pptx.shapeOutlineChange(hex, void 0, current)
|
|
@@ -21072,7 +21072,7 @@ function FillStrokeProperties({
|
|
|
21072
21072
|
onSetFillColor,
|
|
21073
21073
|
onSetStrokeColor
|
|
21074
21074
|
}) {
|
|
21075
|
-
const { t } =
|
|
21075
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
21076
21076
|
const line = isLineish(selectedElement, selectedShapeType);
|
|
21077
21077
|
const style = selectedShapeStyle;
|
|
21078
21078
|
const handleFillModeChange = (nextMode) => {
|
|
@@ -21088,10 +21088,10 @@ function FillStrokeProperties({
|
|
|
21088
21088
|
return;
|
|
21089
21089
|
}
|
|
21090
21090
|
if (nextMode === "gradient") {
|
|
21091
|
-
const existing =
|
|
21091
|
+
const existing = chunk5DBKW7F3_js.sanitizeGradientStops(style?.fillGradientStops);
|
|
21092
21092
|
const stops = existing.length >= 2 ? existing : [
|
|
21093
21093
|
{
|
|
21094
|
-
color:
|
|
21094
|
+
color: chunk5DBKW7F3_js.normalizeHexColor(style?.fillColor, chunk5DBKW7F3_js.DEFAULT_FILL_COLOR),
|
|
21095
21095
|
position: 0,
|
|
21096
21096
|
opacity: 1
|
|
21097
21097
|
},
|
|
@@ -21116,7 +21116,7 @@ function FillStrokeProperties({
|
|
|
21116
21116
|
onUpdateShapeStyle({ fillMode: "solid" });
|
|
21117
21117
|
};
|
|
21118
21118
|
const gradientStops = selectedGradientStops.length > 0 ? selectedGradientStops : [
|
|
21119
|
-
{ color:
|
|
21119
|
+
{ color: chunk5DBKW7F3_js.DEFAULT_FILL_COLOR, position: 0 },
|
|
21120
21120
|
{ color: "#ffffff", position: 100 }
|
|
21121
21121
|
];
|
|
21122
21122
|
const showGradient = style?.fillMode === "gradient" || selectedGradientStops.length > 0;
|
|
@@ -21143,7 +21143,7 @@ function FillStrokeProperties({
|
|
|
21143
21143
|
{
|
|
21144
21144
|
label: t("pptx.fill.fill"),
|
|
21145
21145
|
prefix: "fill",
|
|
21146
|
-
value:
|
|
21146
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(style?.fillColor, chunk5DBKW7F3_js.DEFAULT_FILL_COLOR),
|
|
21147
21147
|
selectedRef: style?.fillColorRef,
|
|
21148
21148
|
disabled: line,
|
|
21149
21149
|
onChange: onSetFillColor,
|
|
@@ -21181,7 +21181,7 @@ function Text3DProperties({
|
|
|
21181
21181
|
ts,
|
|
21182
21182
|
onUpdateTextStyle
|
|
21183
21183
|
}) {
|
|
21184
|
-
const { t } =
|
|
21184
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
21185
21185
|
const commitRecentColor = useRecentColorCommit();
|
|
21186
21186
|
const t3d = ts?.text3d;
|
|
21187
21187
|
const hasExtrusion = Boolean(t3d?.extrusionHeight && t3d.extrusionHeight > 0);
|
|
@@ -21228,7 +21228,7 @@ function Text3DProperties({
|
|
|
21228
21228
|
"input",
|
|
21229
21229
|
{
|
|
21230
21230
|
type: "color",
|
|
21231
|
-
value:
|
|
21231
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(t3d?.extrusionColor, "#888888"),
|
|
21232
21232
|
ref: commitRecentColor,
|
|
21233
21233
|
onChange: (e) => update3d({ extrusionColor: e.target.value }),
|
|
21234
21234
|
className: COLOR_CLS
|
|
@@ -21395,7 +21395,7 @@ function AdvancedTextFormatting({
|
|
|
21395
21395
|
onUpdateTextStyle,
|
|
21396
21396
|
numChange
|
|
21397
21397
|
}) {
|
|
21398
|
-
const { t } =
|
|
21398
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
21399
21399
|
const commitRecentColor = useRecentColorCommit();
|
|
21400
21400
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 rounded border border-border bg-card p-2 space-y-2", children: [
|
|
21401
21401
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[11px] uppercase tracking-wide text-muted-foreground", children: t("pptx.textProperties.advancedTextHeading") }),
|
|
@@ -21417,7 +21417,7 @@ function AdvancedTextFormatting({
|
|
|
21417
21417
|
"input",
|
|
21418
21418
|
{
|
|
21419
21419
|
type: "color",
|
|
21420
|
-
value:
|
|
21420
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(ts?.highlightColor, "#ffff00"),
|
|
21421
21421
|
ref: commitRecentColor,
|
|
21422
21422
|
onChange: (e) => onUpdateTextStyle({ highlightColor: e.target.value }),
|
|
21423
21423
|
disabled: !canEdit,
|
|
@@ -21559,7 +21559,7 @@ function TextReflectionSection({
|
|
|
21559
21559
|
onUpdateTextStyle,
|
|
21560
21560
|
numChange
|
|
21561
21561
|
}) {
|
|
21562
|
-
const { t } =
|
|
21562
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
21563
21563
|
const hasReflection = Boolean(ts?.textReflection);
|
|
21564
21564
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
21565
21565
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "inline-flex items-center gap-2 text-foreground", children: [
|
|
@@ -21667,7 +21667,7 @@ function TextEffectsPanel({
|
|
|
21667
21667
|
onUpdateTextStyle,
|
|
21668
21668
|
numChange
|
|
21669
21669
|
}) {
|
|
21670
|
-
const { t } =
|
|
21670
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
21671
21671
|
const commitRecentColor = useRecentColorCommit();
|
|
21672
21672
|
const hasShadow = Boolean(
|
|
21673
21673
|
ts?.textShadowColor || typeof ts?.textShadowBlur === "number" && ts.textShadowBlur > 0
|
|
@@ -21713,7 +21713,7 @@ function TextEffectsPanel({
|
|
|
21713
21713
|
"input",
|
|
21714
21714
|
{
|
|
21715
21715
|
type: "color",
|
|
21716
|
-
value:
|
|
21716
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(ts?.textShadowColor, "#000000"),
|
|
21717
21717
|
ref: commitRecentColor,
|
|
21718
21718
|
onChange: (e) => onUpdateTextStyle({ textShadowColor: e.target.value }),
|
|
21719
21719
|
className: COLOR_CLS2
|
|
@@ -21818,7 +21818,7 @@ function TextEffectsPanel({
|
|
|
21818
21818
|
"input",
|
|
21819
21819
|
{
|
|
21820
21820
|
type: "color",
|
|
21821
|
-
value:
|
|
21821
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(ts?.textGlowColor, "#ffff00"),
|
|
21822
21822
|
ref: commitRecentColor,
|
|
21823
21823
|
onChange: (e) => onUpdateTextStyle({ textGlowColor: e.target.value }),
|
|
21824
21824
|
className: COLOR_CLS2
|
|
@@ -21868,7 +21868,7 @@ function TextWarpGallery({
|
|
|
21868
21868
|
ts,
|
|
21869
21869
|
onUpdateTextStyle
|
|
21870
21870
|
}) {
|
|
21871
|
-
const { t } =
|
|
21871
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
21872
21872
|
const [expanded, setExpanded] = React108__default.default.useState(false);
|
|
21873
21873
|
const currentPreset = ts?.textWarpPreset || "textNoShape";
|
|
21874
21874
|
const descriptor = React108.useMemo(() => pptx.buildTextWarpGallery(ts?.textWarpPreset), [ts?.textWarpPreset]);
|
|
@@ -21949,7 +21949,7 @@ function ShapeTextPanels({
|
|
|
21949
21949
|
onUpdateElementStyle,
|
|
21950
21950
|
onUpdateTextStyle
|
|
21951
21951
|
}) {
|
|
21952
|
-
const { t } =
|
|
21952
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
21953
21953
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
21954
21954
|
pptx$1.hasShapeProperties(selectedElement) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
21955
21955
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.shape.type", "Shape Type") }),
|
|
@@ -21958,11 +21958,11 @@ function ShapeTextPanels({
|
|
|
21958
21958
|
{
|
|
21959
21959
|
value: selectedElement.shapeType || "rect",
|
|
21960
21960
|
disabled: !canEdit,
|
|
21961
|
-
className:
|
|
21961
|
+
className: chunk5DBKW7F3_js.cn(INPUT2, "w-full"),
|
|
21962
21962
|
onChange: (e) => onUpdateElement({
|
|
21963
21963
|
shapeType: e.target.value
|
|
21964
21964
|
}),
|
|
21965
|
-
children:
|
|
21965
|
+
children: chunk5DBKW7F3_js.SHAPE_PRESETS.filter((p) => p.type !== "connector").map((p) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: p.type, children: t(p.i18nKey) }, p.type))
|
|
21966
21966
|
}
|
|
21967
21967
|
)
|
|
21968
21968
|
] }),
|
|
@@ -21974,7 +21974,7 @@ function ShapeTextPanels({
|
|
|
21974
21974
|
selectedElement,
|
|
21975
21975
|
selectedShapeStyle: selectedElement.shapeStyle,
|
|
21976
21976
|
selectedShapeType: selectedElement.shapeType,
|
|
21977
|
-
selectedGradientStops:
|
|
21977
|
+
selectedGradientStops: chunk5DBKW7F3_js.sanitizeGradientStops(
|
|
21978
21978
|
selectedElement.shapeStyle?.fillGradientStops
|
|
21979
21979
|
),
|
|
21980
21980
|
canEdit,
|
|
@@ -22010,7 +22010,7 @@ function ShapeTextPanels({
|
|
|
22010
22010
|
{
|
|
22011
22011
|
disabled: !canEdit,
|
|
22012
22012
|
"aria-label": "Text Color",
|
|
22013
|
-
value:
|
|
22013
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(selectedElement.textStyle?.color, "#000000"),
|
|
22014
22014
|
className: "w-full h-7 rounded border border-border bg-transparent cursor-pointer",
|
|
22015
22015
|
onApply: (hex) => onUpdateTextStyle({ color: hex, colorRef: void 0 }),
|
|
22016
22016
|
patch: textColorPatch
|
|
@@ -22101,7 +22101,7 @@ function TextFormatToggle({
|
|
|
22101
22101
|
{
|
|
22102
22102
|
type: "button",
|
|
22103
22103
|
disabled,
|
|
22104
|
-
className:
|
|
22104
|
+
className: chunk5DBKW7F3_js.cn(
|
|
22105
22105
|
"px-2 py-1 rounded text-[11px] transition-colors max-md:min-w-[44px]! max-md:min-h-[44px]!",
|
|
22106
22106
|
italic && "italic",
|
|
22107
22107
|
underline && "underline",
|
|
@@ -22270,7 +22270,7 @@ function SmartArtLayoutSwitcher({
|
|
|
22270
22270
|
canEdit,
|
|
22271
22271
|
onUpdateSmartArt
|
|
22272
22272
|
}) {
|
|
22273
|
-
const { t } =
|
|
22273
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
22274
22274
|
const currentLayout = smartArtData.resolvedLayoutType ?? "list";
|
|
22275
22275
|
const handleLayoutSwitch = (newLayout) => {
|
|
22276
22276
|
if (!canEdit || newLayout === currentLayout) {
|
|
@@ -22289,7 +22289,7 @@ function SmartArtLayoutSwitcher({
|
|
|
22289
22289
|
type: "button",
|
|
22290
22290
|
"data-testid": `smartart-layout-${type}`,
|
|
22291
22291
|
disabled: !canEdit,
|
|
22292
|
-
className:
|
|
22292
|
+
className: chunk5DBKW7F3_js.cn(
|
|
22293
22293
|
"flex flex-col items-center gap-0.5 rounded border p-1.5 transition-colors",
|
|
22294
22294
|
"text-[9px] leading-tight",
|
|
22295
22295
|
isActive ? "border-primary bg-primary/15 text-primary" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
@@ -22316,7 +22316,7 @@ function SmartArtStyleControls({
|
|
|
22316
22316
|
onChangeColorScheme,
|
|
22317
22317
|
onChangeStyle
|
|
22318
22318
|
}) {
|
|
22319
|
-
const { t } =
|
|
22319
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
22320
22320
|
const translate = React108__default.default.useCallback((key) => t(key), [t]);
|
|
22321
22321
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
22322
22322
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1 text-[11px]", children: [
|
|
@@ -22327,7 +22327,7 @@ function SmartArtStyleControls({
|
|
|
22327
22327
|
disabled: !canEdit,
|
|
22328
22328
|
"data-testid": "smartart-color-scheme",
|
|
22329
22329
|
"aria-label": t("pptx.smartart.colorScheme"),
|
|
22330
|
-
className:
|
|
22330
|
+
className: chunk5DBKW7F3_js.cn(INPUT2, "w-full"),
|
|
22331
22331
|
value: colorScheme,
|
|
22332
22332
|
onChange: (e) => onChangeColorScheme(e.target.value),
|
|
22333
22333
|
children: colorSchemes.map((cs) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: cs, children: pptx.schemaLabel(pptx.SMARTART_COLOR_SCHEME_LABEL_KEYS, cs, translate) }, cs))
|
|
@@ -22342,7 +22342,7 @@ function SmartArtStyleControls({
|
|
|
22342
22342
|
type: "button",
|
|
22343
22343
|
disabled: !canEdit,
|
|
22344
22344
|
"aria-pressed": style === s,
|
|
22345
|
-
className:
|
|
22345
|
+
className: chunk5DBKW7F3_js.cn(
|
|
22346
22346
|
"flex-1 px-2 py-1 text-[10px] rounded border transition-colors",
|
|
22347
22347
|
style === s ? "border-primary bg-primary/20 text-primary" : "border-border text-muted-foreground hover:bg-muted"
|
|
22348
22348
|
),
|
|
@@ -22368,14 +22368,14 @@ function SmartArtPropertiesPanel({
|
|
|
22368
22368
|
onUpdateElement,
|
|
22369
22369
|
box
|
|
22370
22370
|
}) {
|
|
22371
|
-
const { t } =
|
|
22371
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
22372
22372
|
const { pushColor } = useRecentColors();
|
|
22373
22373
|
const paneRef = React108__default.default.useRef(null);
|
|
22374
22374
|
const applySmartArtData = (newData) => {
|
|
22375
22375
|
const reflowed = box ? pptx.rebuildDrawingShapesIfCleared(
|
|
22376
22376
|
newData,
|
|
22377
22377
|
newData.layout,
|
|
22378
|
-
|
|
22378
|
+
chunkVGU5S37T_js.resolveSmartArtDataPalette(newData),
|
|
22379
22379
|
newData.style ?? "flat",
|
|
22380
22380
|
"inspector",
|
|
22381
22381
|
box
|
|
@@ -22446,9 +22446,9 @@ function TableDataGrid({
|
|
|
22446
22446
|
canEdit,
|
|
22447
22447
|
onUpdateElement
|
|
22448
22448
|
}) {
|
|
22449
|
-
const { t } =
|
|
22449
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
22450
22450
|
const grid = pptx.buildTableDataGrid(tableElement);
|
|
22451
|
-
const { viewportWidth } =
|
|
22451
|
+
const { viewportWidth } = chunkVGU5S37T_js.useIsMobile();
|
|
22452
22452
|
const gridPlan = pptx.getDenseGridLayoutPlan(viewportWidth);
|
|
22453
22453
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
22454
22454
|
const stickyGutterClass = gridPlan.stickyFirstColumn ? "sticky left-0 z-10" : "";
|
|
@@ -22612,7 +22612,7 @@ function TableCellPatternFill({
|
|
|
22612
22612
|
canEdit,
|
|
22613
22613
|
onUpdateCellStyle
|
|
22614
22614
|
}) {
|
|
22615
|
-
const { t } =
|
|
22615
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
22616
22616
|
const commitRecentColor = useRecentColorCommit();
|
|
22617
22617
|
const translate = (key) => t(key);
|
|
22618
22618
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
@@ -22667,7 +22667,7 @@ function TableCellAdvancedFill({
|
|
|
22667
22667
|
canEdit,
|
|
22668
22668
|
onUpdateCellStyle
|
|
22669
22669
|
}) {
|
|
22670
|
-
const { t } =
|
|
22670
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
22671
22671
|
const fillMode = cellStyle.fillMode ?? "solid";
|
|
22672
22672
|
const handleFillModeChange = (mode) => {
|
|
22673
22673
|
const next = mode;
|
|
@@ -22755,7 +22755,7 @@ function GradientControls({
|
|
|
22755
22755
|
canEdit,
|
|
22756
22756
|
onUpdateCellStyle
|
|
22757
22757
|
}) {
|
|
22758
|
-
const { t } =
|
|
22758
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
22759
22759
|
const commitRecentColor = useRecentColorCommit();
|
|
22760
22760
|
const stops = cellStyle.gradientFillStops ?? [];
|
|
22761
22761
|
const gradType = cellStyle.gradientFillType ?? "linear";
|
|
@@ -22853,7 +22853,7 @@ function TableCellColorField({
|
|
|
22853
22853
|
disabled,
|
|
22854
22854
|
onCommit
|
|
22855
22855
|
}) {
|
|
22856
|
-
const hex =
|
|
22856
|
+
const hex = chunk5DBKW7F3_js.normalizeHexColor(value, fallback);
|
|
22857
22857
|
return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
22858
22858
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: label }),
|
|
22859
22859
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -22883,7 +22883,7 @@ function TableCellFormattingPanel({
|
|
|
22883
22883
|
onUpdateTableData,
|
|
22884
22884
|
onUpdateMergeRows
|
|
22885
22885
|
}) {
|
|
22886
|
-
const { t } =
|
|
22886
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
22887
22887
|
const { rowIndex, columnIndex } = tableEditorState;
|
|
22888
22888
|
const cell = td.rows[rowIndex]?.cells[columnIndex];
|
|
22889
22889
|
if (!cell) {
|
|
@@ -22961,7 +22961,7 @@ function TableCellFormattingPanel({
|
|
|
22961
22961
|
{
|
|
22962
22962
|
type: "button",
|
|
22963
22963
|
disabled: !canEdit,
|
|
22964
|
-
className:
|
|
22964
|
+
className: chunk5DBKW7F3_js.cn(
|
|
22965
22965
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
22966
22966
|
cls,
|
|
22967
22967
|
cs[key] ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
@@ -22980,7 +22980,7 @@ function TableCellFormattingPanel({
|
|
|
22980
22980
|
{
|
|
22981
22981
|
type: "button",
|
|
22982
22982
|
disabled: !canEdit,
|
|
22983
|
-
className:
|
|
22983
|
+
className: chunk5DBKW7F3_js.cn(
|
|
22984
22984
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
22985
22985
|
cs.align === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
22986
22986
|
),
|
|
@@ -22998,7 +22998,7 @@ function TableCellFormattingPanel({
|
|
|
22998
22998
|
{
|
|
22999
22999
|
type: "button",
|
|
23000
23000
|
disabled: !canEdit,
|
|
23001
|
-
className:
|
|
23001
|
+
className: chunk5DBKW7F3_js.cn(
|
|
23002
23002
|
"px-2 py-1 rounded text-[11px] transition-colors",
|
|
23003
23003
|
cs.vAlign === val ? "bg-primary text-white" : "bg-muted hover:bg-accent"
|
|
23004
23004
|
),
|
|
@@ -23021,7 +23021,7 @@ function TableCellFormattingPanel({
|
|
|
23021
23021
|
DebouncedColorInput,
|
|
23022
23022
|
{
|
|
23023
23023
|
disabled: !canEdit,
|
|
23024
|
-
value:
|
|
23024
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(cs[colorKey], "#374151"),
|
|
23025
23025
|
className: "w-7 h-6 rounded border border-border bg-transparent cursor-pointer shrink-0",
|
|
23026
23026
|
onCommit: (hex) => updateCellStyle({ [colorKey]: hex })
|
|
23027
23027
|
}
|
|
@@ -23031,7 +23031,7 @@ function TableCellFormattingPanel({
|
|
|
23031
23031
|
{
|
|
23032
23032
|
type: "number",
|
|
23033
23033
|
disabled: !canEdit,
|
|
23034
|
-
className:
|
|
23034
|
+
className: chunk5DBKW7F3_js.cn(INPUT2, "w-14"),
|
|
23035
23035
|
min: 0,
|
|
23036
23036
|
max: 10,
|
|
23037
23037
|
value: pptx.inspectorNumber(cs[widthKey], 1),
|
|
@@ -23047,7 +23047,7 @@ function TableCellFormattingPanel({
|
|
|
23047
23047
|
{
|
|
23048
23048
|
type: "button",
|
|
23049
23049
|
disabled: !canEdit,
|
|
23050
|
-
className:
|
|
23050
|
+
className: chunk5DBKW7F3_js.cn(BTN2, "text-center"),
|
|
23051
23051
|
onClick: () => {
|
|
23052
23052
|
const newRows = pptx.computeMergeCellRight(td, rowIndex, columnIndex);
|
|
23053
23053
|
if (newRows) {
|
|
@@ -23062,7 +23062,7 @@ function TableCellFormattingPanel({
|
|
|
23062
23062
|
{
|
|
23063
23063
|
type: "button",
|
|
23064
23064
|
disabled: !canEdit,
|
|
23065
|
-
className:
|
|
23065
|
+
className: chunk5DBKW7F3_js.cn(BTN2, "text-center"),
|
|
23066
23066
|
onClick: () => {
|
|
23067
23067
|
const newRows = pptx.computeMergeCellDown(td, rowIndex, columnIndex);
|
|
23068
23068
|
if (newRows) {
|
|
@@ -23077,7 +23077,7 @@ function TableCellFormattingPanel({
|
|
|
23077
23077
|
{
|
|
23078
23078
|
type: "button",
|
|
23079
23079
|
disabled: !canEdit,
|
|
23080
|
-
className:
|
|
23080
|
+
className: chunk5DBKW7F3_js.cn(BTN2, "text-center"),
|
|
23081
23081
|
onClick: () => {
|
|
23082
23082
|
const newRows = pptx.computeSplitCell(td, rowIndex, columnIndex);
|
|
23083
23083
|
if (newRows) {
|
|
@@ -23096,7 +23096,7 @@ function TableStyleEditorFields({
|
|
|
23096
23096
|
canEdit,
|
|
23097
23097
|
onEdit
|
|
23098
23098
|
}) {
|
|
23099
|
-
const { t } =
|
|
23099
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
23100
23100
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
23101
23101
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
23102
23102
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.tableStyleEditor.fillSection") }),
|
|
@@ -23201,7 +23201,7 @@ function BorderSideRow({
|
|
|
23201
23201
|
canEdit,
|
|
23202
23202
|
onEdit
|
|
23203
23203
|
}) {
|
|
23204
|
-
const { t } =
|
|
23204
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
23205
23205
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 text-[11px]", children: [
|
|
23206
23206
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-28 shrink-0 text-muted-foreground", children: t(pptx.TABLE_STYLE_BORDER_SIDE_LABEL_KEYS[side]) }),
|
|
23207
23207
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -23258,7 +23258,7 @@ function TableStyleEditor({
|
|
|
23258
23258
|
onAssignStyle,
|
|
23259
23259
|
onClose
|
|
23260
23260
|
}) {
|
|
23261
|
-
const { t } =
|
|
23261
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
23262
23262
|
const themeColorMap = useThemeColorMap();
|
|
23263
23263
|
const [activeStyleId, setActiveStyleId] = React108.useState(
|
|
23264
23264
|
styleId ? pptx$1.normalizeTableStyleGuid(styleId) : ""
|
|
@@ -23350,7 +23350,7 @@ function TablePropertiesPanel({
|
|
|
23350
23350
|
onTableStyleMapChange,
|
|
23351
23351
|
onDeleteTableStyle
|
|
23352
23352
|
}) {
|
|
23353
|
-
const { t } =
|
|
23353
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
23354
23354
|
const [showStyleEditor, setShowStyleEditor] = React108.useState(false);
|
|
23355
23355
|
const td = tableElement.tableData;
|
|
23356
23356
|
if (!td) {
|
|
@@ -23432,7 +23432,7 @@ function TablePropertiesPanel({
|
|
|
23432
23432
|
] }),
|
|
23433
23433
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
23434
23434
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.table.stylePresets") }),
|
|
23435
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children:
|
|
23435
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-3 gap-1.5", children: chunk5DBKW7F3_js.TABLE_STYLE_PRESETS.map((preset) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
23436
23436
|
"button",
|
|
23437
23437
|
{
|
|
23438
23438
|
type: "button",
|
|
@@ -23580,7 +23580,7 @@ function ElementInspectorBody({
|
|
|
23580
23580
|
onUpdateTextStyle,
|
|
23581
23581
|
onMoveLayer
|
|
23582
23582
|
}) {
|
|
23583
|
-
const { t } =
|
|
23583
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
23584
23584
|
const isLocked = pptx.isElementLocked(selectedElement);
|
|
23585
23585
|
const handleToggleLock = () => {
|
|
23586
23586
|
if (!canEdit) {
|
|
@@ -23730,7 +23730,7 @@ function CommentMentionTextarea({
|
|
|
23730
23730
|
className,
|
|
23731
23731
|
ariaLabel
|
|
23732
23732
|
}) {
|
|
23733
|
-
const { t } =
|
|
23733
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
23734
23734
|
const textareaRef = React108.useRef(null);
|
|
23735
23735
|
const [caret, setCaret] = React108.useState(value.length);
|
|
23736
23736
|
const [highlighted, setHighlighted] = React108.useState(0);
|
|
@@ -23819,7 +23819,7 @@ function CommentMentionTextarea({
|
|
|
23819
23819
|
"data-testid": "pptx-comment-mention-option",
|
|
23820
23820
|
role: "option",
|
|
23821
23821
|
"aria-selected": index === safeHighlighted,
|
|
23822
|
-
className:
|
|
23822
|
+
className: chunk5DBKW7F3_js.cn(
|
|
23823
23823
|
"block w-full px-2 py-1 text-left text-[11px] hover:bg-accent",
|
|
23824
23824
|
index === safeHighlighted && "bg-accent"
|
|
23825
23825
|
),
|
|
@@ -23866,7 +23866,7 @@ function InspectorCommentReplyForm({
|
|
|
23866
23866
|
onSubmit,
|
|
23867
23867
|
onCancel
|
|
23868
23868
|
}) {
|
|
23869
|
-
const { t } =
|
|
23869
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
23870
23870
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 space-y-1.5 pl-3 border-l-2 border-l-primary/40", children: [
|
|
23871
23871
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
23872
23872
|
CommentMentionTextarea,
|
|
@@ -23932,7 +23932,7 @@ function InspectorCommentRow({
|
|
|
23932
23932
|
onSelectElement,
|
|
23933
23933
|
depth = 0
|
|
23934
23934
|
}) {
|
|
23935
|
-
const { t } =
|
|
23935
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
23936
23936
|
const isEditing = editingCommentId === comment.id;
|
|
23937
23937
|
const isReplying = replyingToCommentId === comment.id;
|
|
23938
23938
|
const replyDraft = replyDraftByCommentId[comment.id] ?? "";
|
|
@@ -23942,7 +23942,7 @@ function InspectorCommentRow({
|
|
|
23942
23942
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
23943
23943
|
"div",
|
|
23944
23944
|
{
|
|
23945
|
-
className:
|
|
23945
|
+
className: chunk5DBKW7F3_js.cn(
|
|
23946
23946
|
"rounded border border-border bg-card p-2",
|
|
23947
23947
|
depth > 0 && "ml-3 border-l-2 border-l-primary/40"
|
|
23948
23948
|
),
|
|
@@ -23956,7 +23956,7 @@ function InspectorCommentRow({
|
|
|
23956
23956
|
t("pptx.comments.resolved")
|
|
23957
23957
|
] })
|
|
23958
23958
|
] }),
|
|
23959
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children:
|
|
23959
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] text-muted-foreground flex-shrink-0", children: chunk5DBKW7F3_js.formatCommentTimestamp(comment.createdAt) })
|
|
23960
23960
|
] }),
|
|
23961
23961
|
comment.elementId && (targetElement ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
23962
23962
|
"button",
|
|
@@ -23964,12 +23964,12 @@ function InspectorCommentRow({
|
|
|
23964
23964
|
type: "button",
|
|
23965
23965
|
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",
|
|
23966
23966
|
title: t("pptx.comments.commentingOn", {
|
|
23967
|
-
element:
|
|
23967
|
+
element: chunk5DBKW7F3_js.getElementLabel(targetElement)
|
|
23968
23968
|
}),
|
|
23969
23969
|
onClick: () => onSelectElement(targetElement.id),
|
|
23970
23970
|
children: [
|
|
23971
23971
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
|
|
23972
|
-
|
|
23972
|
+
chunk5DBKW7F3_js.getElementLabel(targetElement)
|
|
23973
23973
|
]
|
|
23974
23974
|
}
|
|
23975
23975
|
) : /* @__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") })),
|
|
@@ -24038,7 +24038,7 @@ function InspectorCommentRow({
|
|
|
24038
24038
|
"button",
|
|
24039
24039
|
{
|
|
24040
24040
|
type: "button",
|
|
24041
|
-
className:
|
|
24041
|
+
className: chunk5DBKW7F3_js.cn(
|
|
24042
24042
|
"inline-flex items-center justify-center p-1.5 border-l border-border transition-colors",
|
|
24043
24043
|
comment.resolved ? "bg-green-900/40 text-green-300 hover:bg-green-900/60" : "hover:bg-accent text-foreground hover:text-foreground"
|
|
24044
24044
|
),
|
|
@@ -24144,7 +24144,7 @@ function InspectorCommentsSection({
|
|
|
24144
24144
|
onSubmitReply,
|
|
24145
24145
|
onSelectElement
|
|
24146
24146
|
}) {
|
|
24147
|
-
const { t } =
|
|
24147
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
24148
24148
|
const HEADING_CLS = "text-[11px] uppercase tracking-wide text-muted-foreground";
|
|
24149
24149
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
24150
24150
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
@@ -24181,7 +24181,7 @@ function InspectorCommentsSection({
|
|
|
24181
24181
|
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: [
|
|
24182
24182
|
/* @__PURE__ */ jsxRuntime.jsx(lu.LuType, { className: "h-2.5 w-2.5" }),
|
|
24183
24183
|
t("pptx.comments.commentingOn", {
|
|
24184
|
-
element:
|
|
24184
|
+
element: chunk5DBKW7F3_js.getElementLabel(selectedElement)
|
|
24185
24185
|
})
|
|
24186
24186
|
] }),
|
|
24187
24187
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -24192,7 +24192,7 @@ function InspectorCommentsSection({
|
|
|
24192
24192
|
authors: commentAuthors,
|
|
24193
24193
|
rows: 2,
|
|
24194
24194
|
placeholder: selectedElement ? t("pptx.comments.addOnElement", {
|
|
24195
|
-
element:
|
|
24195
|
+
element: chunk5DBKW7F3_js.getElementLabel(selectedElement)
|
|
24196
24196
|
}) : t("pptx.comments.addPlaceholder"),
|
|
24197
24197
|
className: "w-full bg-muted border border-border rounded px-2 py-1 text-xs resize-y outline-none focus:border-primary",
|
|
24198
24198
|
onChange: onSetCommentDraft,
|
|
@@ -24205,7 +24205,7 @@ function InspectorCommentsSection({
|
|
|
24205
24205
|
type: "button",
|
|
24206
24206
|
onClick: onAddComment,
|
|
24207
24207
|
disabled: !commentDraft.trim(),
|
|
24208
|
-
className:
|
|
24208
|
+
className: chunk5DBKW7F3_js.cn(
|
|
24209
24209
|
"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]!",
|
|
24210
24210
|
commentDraft.trim() ? "bg-primary hover:bg-primary/80 text-white" : "bg-muted text-muted-foreground cursor-not-allowed"
|
|
24211
24211
|
),
|
|
@@ -24230,7 +24230,7 @@ function InspectorElementsTab({
|
|
|
24230
24230
|
onSelectElement,
|
|
24231
24231
|
onUpdateSlide
|
|
24232
24232
|
}) {
|
|
24233
|
-
const { t } =
|
|
24233
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
24234
24234
|
const toggleHidden = (elementId2) => {
|
|
24235
24235
|
const elements2 = activeSlide?.elements;
|
|
24236
24236
|
if (!canEdit || !elements2) {
|
|
@@ -24246,13 +24246,13 @@ function InspectorElementsTab({
|
|
|
24246
24246
|
};
|
|
24247
24247
|
if (!activeSlide) {
|
|
24248
24248
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
24249
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
24249
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk5DBKW7F3_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
|
|
24250
24250
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground italic", children: t("pptx.inspector.noSlideSelected") })
|
|
24251
24251
|
] });
|
|
24252
24252
|
}
|
|
24253
24253
|
const elements = activeSlide.elements || [];
|
|
24254
24254
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", "data-pptx-elements-tab": true, children: [
|
|
24255
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
24255
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: chunk5DBKW7F3_js.cn(HEADING2, "mb-2"), children: t("pptx.inspector.layerOrder") }),
|
|
24256
24256
|
[...elements].reverse().map((el, reversedIndex) => {
|
|
24257
24257
|
const index = elements.length - 1 - reversedIndex;
|
|
24258
24258
|
const selected = selectedElementId === el.id || selectedElementIds.includes(el.id);
|
|
@@ -24260,7 +24260,7 @@ function InspectorElementsTab({
|
|
|
24260
24260
|
"div",
|
|
24261
24261
|
{
|
|
24262
24262
|
title: `${el.type} - ${el.id}`,
|
|
24263
|
-
className:
|
|
24263
|
+
className: chunk5DBKW7F3_js.cn(
|
|
24264
24264
|
"flex items-center gap-2 px-2 py-1 rounded cursor-pointer transition-colors",
|
|
24265
24265
|
selected ? "bg-primary/30 text-primary" : "hover:bg-muted text-foreground"
|
|
24266
24266
|
),
|
|
@@ -24296,8 +24296,8 @@ function InspectorPaneHeader({
|
|
|
24296
24296
|
onSetActiveTab,
|
|
24297
24297
|
onClose
|
|
24298
24298
|
}) {
|
|
24299
|
-
const { t } =
|
|
24300
|
-
const { viewportWidth } =
|
|
24299
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
24300
|
+
const { viewportWidth } = chunkVGU5S37T_js.useIsMobile();
|
|
24301
24301
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
24302
24302
|
const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
24303
24303
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -24320,7 +24320,7 @@ function InspectorPaneHeader({
|
|
|
24320
24320
|
type: "button",
|
|
24321
24321
|
title: t(labelKey),
|
|
24322
24322
|
style: touchBtnStyle,
|
|
24323
|
-
className:
|
|
24323
|
+
className: chunk5DBKW7F3_js.cn(
|
|
24324
24324
|
"flex items-center justify-center gap-1 px-2 py-1 rounded text-[11px] transition-colors",
|
|
24325
24325
|
activeTab === key ? "bg-primary text-white" : "text-muted-foreground hover:text-foreground hover:bg-accent"
|
|
24326
24326
|
),
|
|
@@ -24380,7 +24380,7 @@ function CustomPropertiesBlock({
|
|
|
24380
24380
|
canEdit,
|
|
24381
24381
|
onUpdate
|
|
24382
24382
|
}) {
|
|
24383
|
-
const { t } =
|
|
24383
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
24384
24384
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
24385
24385
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
24386
24386
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: t("pptx.documentProperties.custom.heading") }),
|
|
@@ -24434,7 +24434,7 @@ function CustomPropertiesBlock({
|
|
|
24434
24434
|
"button",
|
|
24435
24435
|
{
|
|
24436
24436
|
type: "button",
|
|
24437
|
-
className:
|
|
24437
|
+
className: chunk5DBKW7F3_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
|
|
24438
24438
|
onClick: () => onUpdate(customProperties.filter((_, i) => i !== index)),
|
|
24439
24439
|
children: "\xD7"
|
|
24440
24440
|
}
|
|
@@ -24447,7 +24447,7 @@ function NotesHandoutCard({
|
|
|
24447
24447
|
notesMaster,
|
|
24448
24448
|
handoutMaster
|
|
24449
24449
|
}) {
|
|
24450
|
-
const { t } =
|
|
24450
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
24451
24451
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
24452
24452
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.notesHandoutHeading") }),
|
|
24453
24453
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 text-[11px] text-muted-foreground", children: [
|
|
@@ -24484,7 +24484,7 @@ function DocumentPropertiesCard({
|
|
|
24484
24484
|
onUpdateAppProperties,
|
|
24485
24485
|
onUpdateCustomProperties
|
|
24486
24486
|
}) {
|
|
24487
|
-
const { t } =
|
|
24487
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
24488
24488
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
24489
24489
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.documentHeading") }),
|
|
24490
24490
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px] text-muted-foreground", children: [
|
|
@@ -24538,7 +24538,7 @@ function DocumentPropertiesCard({
|
|
|
24538
24538
|
function SlideSizeRescalePrompt({
|
|
24539
24539
|
onChoose
|
|
24540
24540
|
}) {
|
|
24541
|
-
const { t } =
|
|
24541
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
24542
24542
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5 rounded border border-border bg-muted/40 p-2 text-[11px]", children: [
|
|
24543
24543
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-medium", children: t("pptx.slideSize.rescaleTitle") }),
|
|
24544
24544
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground", children: t("pptx.slideSize.rescaleDescription") }),
|
|
@@ -24580,7 +24580,7 @@ function SlideSizeCard({
|
|
|
24580
24580
|
onUpdateSlideSize,
|
|
24581
24581
|
hasContent
|
|
24582
24582
|
}) {
|
|
24583
|
-
const { t } =
|
|
24583
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
24584
24584
|
const selection = pptx.resolveSlideSizeSelection({ current: slideSizeEmu, canvas: canvasSize });
|
|
24585
24585
|
const presetDisabled = !canEdit || !onUpdateSlideSize;
|
|
24586
24586
|
const [pendingSize, setPendingSize] = React108.useState(null);
|
|
@@ -24691,7 +24691,7 @@ function PresentationSettingsCard({
|
|
|
24691
24691
|
canEdit,
|
|
24692
24692
|
onUpdate
|
|
24693
24693
|
}) {
|
|
24694
|
-
const { t } =
|
|
24694
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
24695
24695
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${CARD2} pptx-editor-presentation-card`, children: [
|
|
24696
24696
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.slideInspector.presentation") }),
|
|
24697
24697
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "presentation-fields", className: "space-y-1.5 text-[11px]", children: [
|
|
@@ -24762,7 +24762,7 @@ function PresentationSettingsCard({
|
|
|
24762
24762
|
min: 1,
|
|
24763
24763
|
max: 16,
|
|
24764
24764
|
disabled: !canEdit,
|
|
24765
|
-
className:
|
|
24765
|
+
className: chunk5DBKW7F3_js.cn(INPUT2, "w-20"),
|
|
24766
24766
|
value: pptx.printPropertiesSlidesPerPage(presentationProperties.printProperties),
|
|
24767
24767
|
onChange: (e) => onUpdate({
|
|
24768
24768
|
printProperties: pptx.withSlidesPerPage(
|
|
@@ -24783,7 +24783,7 @@ function ThemeSelectorCard({
|
|
|
24783
24783
|
canEdit,
|
|
24784
24784
|
onApplyTheme
|
|
24785
24785
|
}) {
|
|
24786
|
-
const { t } =
|
|
24786
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
24787
24787
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: CARD2, children: [
|
|
24788
24788
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.documentProperties.themeHeading") }),
|
|
24789
24789
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 text-[11px]", children: [
|
|
@@ -24846,7 +24846,7 @@ function SlideThemeOverridePanel({
|
|
|
24846
24846
|
canEdit,
|
|
24847
24847
|
onUpdateSlide
|
|
24848
24848
|
}) {
|
|
24849
|
-
const { t } =
|
|
24849
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
24850
24850
|
const translate = React108.useCallback((key) => t(key), [t]);
|
|
24851
24851
|
const override = activeSlide?.clrMapOverride;
|
|
24852
24852
|
const isOverrideActive = override !== void 0;
|
|
@@ -24953,7 +24953,7 @@ function DirectionPicker({
|
|
|
24953
24953
|
disabled,
|
|
24954
24954
|
onChange
|
|
24955
24955
|
}) {
|
|
24956
|
-
const { t } =
|
|
24956
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
24957
24957
|
if (directions.length <= 3) {
|
|
24958
24958
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-1", children: directions.map((dir) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
24959
24959
|
"button",
|
|
@@ -24995,10 +24995,10 @@ function TransitionPreview({
|
|
|
24995
24995
|
const previewRef = React108.useRef(null);
|
|
24996
24996
|
const [playing, setPlaying] = React108.useState(false);
|
|
24997
24997
|
const [animKey, setAnimKey] = React108.useState(0);
|
|
24998
|
-
const { t } =
|
|
24998
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
24999
24999
|
const durationMs = transition.durationMs ?? 500;
|
|
25000
25000
|
const animations = React108.useMemo(
|
|
25001
|
-
() =>
|
|
25001
|
+
() => chunkVGU5S37T_js.getSlideTransitionAnimations(
|
|
25002
25002
|
transition.type,
|
|
25003
25003
|
durationMs,
|
|
25004
25004
|
transition.direction,
|
|
@@ -25067,7 +25067,7 @@ function TransitionPreview({
|
|
|
25067
25067
|
]
|
|
25068
25068
|
}
|
|
25069
25069
|
),
|
|
25070
|
-
/* @__PURE__ */ jsxRuntime.jsx("style", { children:
|
|
25070
|
+
/* @__PURE__ */ jsxRuntime.jsx("style", { children: chunkVGU5S37T_js.SLIDE_TRANSITION_KEYFRAMES })
|
|
25071
25071
|
] });
|
|
25072
25072
|
}
|
|
25073
25073
|
var DEFAULT_DURATION_MS = 320;
|
|
@@ -25079,7 +25079,7 @@ function SlideTransitionSection({
|
|
|
25079
25079
|
canEdit = true,
|
|
25080
25080
|
onTransitionChange
|
|
25081
25081
|
}) {
|
|
25082
|
-
const { t } =
|
|
25082
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
25083
25083
|
if (!activeSlide) {
|
|
25084
25084
|
return null;
|
|
25085
25085
|
}
|
|
@@ -25110,7 +25110,7 @@ function SlideTransitionSection({
|
|
|
25110
25110
|
type: e.target.value
|
|
25111
25111
|
}),
|
|
25112
25112
|
className: "bg-muted border border-border rounded px-2 py-1 max-md:min-h-[44px]!",
|
|
25113
|
-
children:
|
|
25113
|
+
children: chunk5DBKW7F3_js.SLIDE_TRANSITION_OPTIONS.map((option) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: option.value, children: t(option.i18nKey) }, option.value))
|
|
25114
25114
|
}
|
|
25115
25115
|
)
|
|
25116
25116
|
] }),
|
|
@@ -25268,7 +25268,7 @@ function TagsSection({
|
|
|
25268
25268
|
onUpdateTagCollections,
|
|
25269
25269
|
canEdit
|
|
25270
25270
|
}) {
|
|
25271
|
-
const { t } =
|
|
25271
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
25272
25272
|
const [collapsed, setCollapsed] = React108.useState(true);
|
|
25273
25273
|
const allTags = pptx.flattenTagCollections(tagCollections);
|
|
25274
25274
|
const updateTag = (colIdx, tagIdx, field, newValue) => {
|
|
@@ -25326,7 +25326,7 @@ function TagsSection({
|
|
|
25326
25326
|
"button",
|
|
25327
25327
|
{
|
|
25328
25328
|
type: "button",
|
|
25329
|
-
className:
|
|
25329
|
+
className: chunk5DBKW7F3_js.cn(BTN2, "px-1.5 text-red-400 hover:text-red-300"),
|
|
25330
25330
|
title: t("pptx.tags.deleteTag"),
|
|
25331
25331
|
onClick: () => deleteTag(tag.colIdx, tag.tagIdx),
|
|
25332
25332
|
children: /* @__PURE__ */ jsxRuntime.jsx(lu.LuTrash2, { className: "w-3 h-3" })
|
|
@@ -25368,7 +25368,7 @@ function PresentationPropertiesPanel({
|
|
|
25368
25368
|
tagCollections,
|
|
25369
25369
|
onUpdateTagCollections
|
|
25370
25370
|
}) {
|
|
25371
|
-
const { t } =
|
|
25371
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
25372
25372
|
const handleTransitionChange = React108__default.default.useCallback(
|
|
25373
25373
|
(updates) => {
|
|
25374
25374
|
onUpdateSlide({
|
|
@@ -25455,7 +25455,7 @@ function PresentationPropertiesPanel({
|
|
|
25455
25455
|
canEdit
|
|
25456
25456
|
}
|
|
25457
25457
|
) }),
|
|
25458
|
-
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-inspector-card": "slide", className:
|
|
25458
|
+
activeSlide && /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-inspector-card": "slide", className: chunk5DBKW7F3_js.cn(CARD2, "space-y-1"), children: [
|
|
25459
25459
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: "Slide" }),
|
|
25460
25460
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-[11px] text-muted-foreground", children: [
|
|
25461
25461
|
activeSlide.elements?.length ?? 0,
|
|
@@ -25473,17 +25473,17 @@ function SlideBackgroundPanel({
|
|
|
25473
25473
|
onSetTemplateBackground,
|
|
25474
25474
|
onGetTemplateBackgroundColor
|
|
25475
25475
|
}) {
|
|
25476
|
-
const { t } =
|
|
25476
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
25477
25477
|
const bgImageInputRef = React108.useRef(null);
|
|
25478
25478
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
25479
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
25479
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk5DBKW7F3_js.cn(CARD2, "space-y-2"), children: [
|
|
25480
25480
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.viewer.background") }),
|
|
25481
25481
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
25482
25482
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-10 shrink-0", children: t("pptx.slideBackground.colour") }),
|
|
25483
25483
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25484
25484
|
DebouncedColorInput,
|
|
25485
25485
|
{
|
|
25486
|
-
value:
|
|
25486
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(activeSlide.backgroundColor, "#ffffff"),
|
|
25487
25487
|
disabled: !canEdit,
|
|
25488
25488
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
25489
25489
|
onCommit: (hex) => onUpdateSlide({ backgroundColor: hex })
|
|
@@ -25522,7 +25522,7 @@ function SlideBackgroundPanel({
|
|
|
25522
25522
|
"button",
|
|
25523
25523
|
{
|
|
25524
25524
|
type: "button",
|
|
25525
|
-
className:
|
|
25525
|
+
className: chunk5DBKW7F3_js.cn(BTN2, "flex-1 text-center"),
|
|
25526
25526
|
disabled: !canEdit,
|
|
25527
25527
|
onClick: () => bgImageInputRef.current?.click(),
|
|
25528
25528
|
children: activeSlide.backgroundImage ? t("pptx.slideBackground.replaceImage") : t("pptx.slideBackground.chooseImage")
|
|
@@ -25555,7 +25555,7 @@ function SlideBackgroundPanel({
|
|
|
25555
25555
|
"button",
|
|
25556
25556
|
{
|
|
25557
25557
|
type: "button",
|
|
25558
|
-
className:
|
|
25558
|
+
className: chunk5DBKW7F3_js.cn(BTN2, "w-full text-center text-red-400 hover:text-red-300"),
|
|
25559
25559
|
disabled: !pptx.slideBackgroundClearState(activeSlide, canEdit).enabled,
|
|
25560
25560
|
onClick: () => onUpdateSlide(pptx.slideBackgroundClearPatch()),
|
|
25561
25561
|
children: t("pptx.slideBackground.clearBackground")
|
|
@@ -25592,21 +25592,21 @@ function TemplateBackgroundCard({
|
|
|
25592
25592
|
onSetTemplateBackground,
|
|
25593
25593
|
onGetTemplateBackgroundColor
|
|
25594
25594
|
}) {
|
|
25595
|
-
const { t } =
|
|
25595
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
25596
25596
|
const rows = pptx.resolveTemplateBackgroundRows(
|
|
25597
25597
|
activeSlide,
|
|
25598
25598
|
slideMasters,
|
|
25599
25599
|
t("pptx.master.layout"),
|
|
25600
25600
|
t("pptx.master.master")
|
|
25601
25601
|
);
|
|
25602
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
25602
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunk5DBKW7F3_js.cn(CARD2, "space-y-2"), children: [
|
|
25603
25603
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: HEADING2, children: t("pptx.slideBackground.templateBackgroundsHeading") }),
|
|
25604
25604
|
rows.layout && /* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 text-[11px]", children: [
|
|
25605
25605
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground w-14 shrink-0 truncate", title: rows.layout.title, children: t("pptx.master.layout") }),
|
|
25606
25606
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25607
25607
|
DebouncedColorInput,
|
|
25608
25608
|
{
|
|
25609
|
-
value:
|
|
25609
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.layout.path), "#ffffff"),
|
|
25610
25610
|
disabled: !canEdit,
|
|
25611
25611
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
25612
25612
|
onCommit: (hex) => onSetTemplateBackground(rows.layout.path, hex)
|
|
@@ -25619,7 +25619,7 @@ function TemplateBackgroundCard({
|
|
|
25619
25619
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25620
25620
|
DebouncedColorInput,
|
|
25621
25621
|
{
|
|
25622
|
-
value:
|
|
25622
|
+
value: chunk5DBKW7F3_js.normalizeHexColor(onGetTemplateBackgroundColor(rows.master.path), "#ffffff"),
|
|
25623
25623
|
disabled: !canEdit,
|
|
25624
25624
|
className: "h-6 w-8 rounded border border-border bg-muted cursor-pointer",
|
|
25625
25625
|
onCommit: (hex) => onSetTemplateBackground(rows.master.path, hex)
|
|
@@ -25729,8 +25729,8 @@ function InspectorPane(props) {
|
|
|
25729
25729
|
panelWidth
|
|
25730
25730
|
} = props;
|
|
25731
25731
|
const hasSelection = selectedElement !== null;
|
|
25732
|
-
const { t } =
|
|
25733
|
-
const { dragY, handlers: dragHandlers } =
|
|
25732
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
25733
|
+
const { dragY, handlers: dragHandlers } = chunkVGU5S37T_js.useSheetDismissDrag(onClose);
|
|
25734
25734
|
const {
|
|
25735
25735
|
animationPanelHeight,
|
|
25736
25736
|
effectiveThemeOptions,
|
|
@@ -25752,7 +25752,7 @@ function InspectorPane(props) {
|
|
|
25752
25752
|
"div",
|
|
25753
25753
|
{
|
|
25754
25754
|
"data-pptx-chrome": "inspector",
|
|
25755
|
-
className:
|
|
25755
|
+
className: chunk5DBKW7F3_js.cn(
|
|
25756
25756
|
// Shared styles
|
|
25757
25757
|
"bg-background flex flex-col text-xs text-foreground shadow-xl",
|
|
25758
25758
|
// Mobile: absolute bottom sheet overlay sized via dvh so it
|
|
@@ -26083,7 +26083,7 @@ function PresentationAnnotationOverlay({
|
|
|
26083
26083
|
);
|
|
26084
26084
|
}
|
|
26085
26085
|
function PresentationToolbar(p) {
|
|
26086
|
-
const { t } =
|
|
26086
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
26087
26087
|
const ref = useWebControl(
|
|
26088
26088
|
{
|
|
26089
26089
|
current: p.currentSlideIndex,
|
|
@@ -26142,8 +26142,8 @@ function PresentationTouchControls({
|
|
|
26142
26142
|
onEndPresentation,
|
|
26143
26143
|
hideNavigation = false
|
|
26144
26144
|
}) {
|
|
26145
|
-
const { t } =
|
|
26146
|
-
const { isTouchDevice } =
|
|
26145
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
26146
|
+
const { isTouchDevice } = chunkVGU5S37T_js.useIsMobile();
|
|
26147
26147
|
if (!isTouchDevice) {
|
|
26148
26148
|
return null;
|
|
26149
26149
|
}
|
|
@@ -26225,7 +26225,7 @@ function KeepAnnotationsDialog({
|
|
|
26225
26225
|
onKeep,
|
|
26226
26226
|
onDiscard
|
|
26227
26227
|
}) {
|
|
26228
|
-
const { t } =
|
|
26228
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
26229
26229
|
if (!isOpen) {
|
|
26230
26230
|
return null;
|
|
26231
26231
|
}
|
|
@@ -26273,7 +26273,7 @@ function PasteSpecialDialog({
|
|
|
26273
26273
|
onCancel,
|
|
26274
26274
|
onConfirm
|
|
26275
26275
|
}) {
|
|
26276
|
-
const { t } =
|
|
26276
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
26277
26277
|
const [selected, setSelected] = React108.useState("keep-source-formatting");
|
|
26278
26278
|
if (!isOpen) {
|
|
26279
26279
|
return null;
|
|
@@ -26331,7 +26331,7 @@ function PasteOptionsToolbar({
|
|
|
26331
26331
|
onChoose,
|
|
26332
26332
|
onDismiss
|
|
26333
26333
|
}) {
|
|
26334
|
-
const { t } =
|
|
26334
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
26335
26335
|
const [rect, setRect] = React108.useState(null);
|
|
26336
26336
|
React108.useEffect(() => {
|
|
26337
26337
|
const node = elementId2 ? pptx.findCanvasElementNode(document, elementId2, { canvasOnly: true }) : null;
|
|
@@ -26358,7 +26358,7 @@ function NotesPagePreview({
|
|
|
26358
26358
|
frameSlides,
|
|
26359
26359
|
maxPages = 3
|
|
26360
26360
|
}) {
|
|
26361
|
-
const { t } =
|
|
26361
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
26362
26362
|
const pages = React108.useMemo(() => pptx.computeAllNotesPages(slideIndices), [slideIndices]);
|
|
26363
26363
|
const printable = React108.useMemo(() => pptx.getNotesPrintableArea(), []);
|
|
26364
26364
|
const visiblePages = pages.slice(0, maxPages);
|
|
@@ -26446,15 +26446,15 @@ function PrintPreview({
|
|
|
26446
26446
|
frameSlides,
|
|
26447
26447
|
maxPages = 3
|
|
26448
26448
|
}) {
|
|
26449
|
-
const { t } =
|
|
26449
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
26450
26450
|
const pages = React108.useMemo(
|
|
26451
|
-
() =>
|
|
26451
|
+
() => chunk5DBKW7F3_js.computeHandoutLayout(slideIndices, slidesPerPage, orientation),
|
|
26452
26452
|
[slideIndices, slidesPerPage, orientation]
|
|
26453
26453
|
);
|
|
26454
|
-
const printable = React108.useMemo(() =>
|
|
26454
|
+
const printable = React108.useMemo(() => chunk5DBKW7F3_js.getPrintableArea(orientation), [orientation]);
|
|
26455
26455
|
const visiblePages = pages.slice(0, maxPages);
|
|
26456
26456
|
const isThreePerPage = slidesPerPage === 3;
|
|
26457
|
-
const noteLineCount =
|
|
26457
|
+
const noteLineCount = chunk5DBKW7F3_js.generateNoteLineCount();
|
|
26458
26458
|
const scaledW = printable.width * PREVIEW_SCALE3;
|
|
26459
26459
|
const scaledH = printable.height * PREVIEW_SCALE3;
|
|
26460
26460
|
const noteAreaFraction = 0.5;
|
|
@@ -26552,7 +26552,7 @@ function PrintSettingsPanel({
|
|
|
26552
26552
|
totalSlides,
|
|
26553
26553
|
activeSlideIndex
|
|
26554
26554
|
}) {
|
|
26555
|
-
const { t } =
|
|
26555
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
26556
26556
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 space-y-5 min-w-0", children: [
|
|
26557
26557
|
/* @__PURE__ */ jsxRuntime.jsxs("fieldset", { children: [
|
|
26558
26558
|
/* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-xs font-medium text-muted-foreground mb-2 uppercase tracking-wide", children: t("pptx.print.printWhat") }),
|
|
@@ -26788,13 +26788,13 @@ function PrintDialog({
|
|
|
26788
26788
|
defaultSlidesPerPage,
|
|
26789
26789
|
defaultFrameSlides
|
|
26790
26790
|
}) {
|
|
26791
|
-
const { t } =
|
|
26791
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
26792
26792
|
const regionRenderer = useRegionRenderer("dialog.print");
|
|
26793
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
26794
|
-
const { viewportWidth } =
|
|
26793
|
+
const { panelStyle, handlers: dragHandlers } = chunkVGU5S37T_js.useModalDismissDrag(onClose);
|
|
26794
|
+
const { viewportWidth } = chunkVGU5S37T_js.useIsMobile();
|
|
26795
26795
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
26796
26796
|
const closeBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
26797
|
-
const printOptionDefaults = pptx.resolveDefaultPrintSettings(
|
|
26797
|
+
const printOptionDefaults = pptx.resolveDefaultPrintSettings(chunkVGU5S37T_js.useViewerOptionsContext());
|
|
26798
26798
|
const [printWhat, setPrintWhat] = React108.useState(printOptionDefaults?.printWhat ?? "slides");
|
|
26799
26799
|
const [orientation, setOrientation] = React108.useState("landscape");
|
|
26800
26800
|
const [colorMode, setColorMode] = React108.useState(
|
|
@@ -26978,7 +26978,7 @@ function ShowOptionsFieldset({
|
|
|
26978
26978
|
draft,
|
|
26979
26979
|
update
|
|
26980
26980
|
}) {
|
|
26981
|
-
const { t } =
|
|
26981
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
26982
26982
|
return /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { className: "space-y-1.5", children: [
|
|
26983
26983
|
/* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-[11px] font-medium text-muted-foreground uppercase tracking-wide mb-1", children: t("pptx.slideShow.showOptions") }),
|
|
26984
26984
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 cursor-pointer", children: [
|
|
@@ -27036,7 +27036,7 @@ function ShowSlidesFieldset({
|
|
|
27036
27036
|
slideCount,
|
|
27037
27037
|
customShows
|
|
27038
27038
|
}) {
|
|
27039
|
-
const { t } =
|
|
27039
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
27040
27040
|
return /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { className: "space-y-1.5", children: [
|
|
27041
27041
|
/* @__PURE__ */ jsxRuntime.jsx("legend", { className: "text-[11px] font-medium text-muted-foreground uppercase tracking-wide mb-1", children: t("pptx.slideShow.showSlides") }),
|
|
27042
27042
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "flex items-center gap-2 cursor-pointer", children: [
|
|
@@ -27146,7 +27146,7 @@ function SetUpSlideShowDialog({
|
|
|
27146
27146
|
customShows,
|
|
27147
27147
|
slideCount
|
|
27148
27148
|
}) {
|
|
27149
|
-
const { t } =
|
|
27149
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
27150
27150
|
const [draft, setDraft] = React108.useState({
|
|
27151
27151
|
...properties
|
|
27152
27152
|
});
|
|
@@ -27282,16 +27282,16 @@ function BroadcastDialog({
|
|
|
27282
27282
|
defaultUserName,
|
|
27283
27283
|
defaultServerUrl
|
|
27284
27284
|
}) {
|
|
27285
|
-
const { t } =
|
|
27285
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
27286
27286
|
const regionRenderer = useRegionRenderer("dialog.broadcast");
|
|
27287
|
-
const collab =
|
|
27287
|
+
const collab = chunkVGU5S37T_js.useCollaboration();
|
|
27288
27288
|
const isBroadcasting = collab !== null && collab.status !== "disconnected" && collab.status !== "error" && collab.config.role === "owner";
|
|
27289
27289
|
const [roomId, setRoomId] = React108.useState("");
|
|
27290
27290
|
const [userName, setUserName] = React108.useState("");
|
|
27291
27291
|
const [serverUrl, setServerUrl] = React108.useState("");
|
|
27292
27292
|
const [copied, setCopied] = React108.useState(false);
|
|
27293
27293
|
const dialogRef = React108.useRef(null);
|
|
27294
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
27294
|
+
const { panelStyle, handlers: dragHandlers } = chunkVGU5S37T_js.useModalDismissDrag(onClose);
|
|
27295
27295
|
useModalFocus(open, dialogRef, onClose);
|
|
27296
27296
|
React108.useEffect(() => {
|
|
27297
27297
|
if (open && !isBroadcasting) {
|
|
@@ -27450,7 +27450,7 @@ function StartBroadcastForm({
|
|
|
27450
27450
|
onUserNameChange,
|
|
27451
27451
|
onServerUrlChange
|
|
27452
27452
|
}) {
|
|
27453
|
-
const { t } =
|
|
27453
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
27454
27454
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
27455
27455
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[13px] text-muted-foreground leading-relaxed", children: t("pptx.broadcast.description") }),
|
|
27456
27456
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
@@ -27526,7 +27526,7 @@ function ActiveBroadcastView({
|
|
|
27526
27526
|
onCopyUrl,
|
|
27527
27527
|
onStopBroadcast
|
|
27528
27528
|
}) {
|
|
27529
|
-
const { t } =
|
|
27529
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
27530
27530
|
const statusColor = collab.status === "connected" ? "text-green-400" : collab.status === "connecting" ? "text-yellow-400" : "text-red-400";
|
|
27531
27531
|
const 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" });
|
|
27532
27532
|
const viewerCount = collab.remoteUsers.filter((u) => u.role === "viewer").length;
|
|
@@ -27607,7 +27607,7 @@ function ActiveSessionView({
|
|
|
27607
27607
|
onCopyRoomId,
|
|
27608
27608
|
onStopCollaboration
|
|
27609
27609
|
}) {
|
|
27610
|
-
const { t } =
|
|
27610
|
+
const { t } = chunk5DBKW7F3_js.useTranslation(), viewerOptions = chunkVGU5S37T_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({
|
|
27611
27611
|
localUserName: activeCollaboration?.userName ?? collab.config.userName,
|
|
27612
27612
|
localUserInitials: viewerOptions.general.userInitials,
|
|
27613
27613
|
localUserColor: collab.config.userColor,
|
|
@@ -27705,8 +27705,8 @@ function StartSessionForm({
|
|
|
27705
27705
|
connectionFailed,
|
|
27706
27706
|
onRetry
|
|
27707
27707
|
}) {
|
|
27708
|
-
const { t } =
|
|
27709
|
-
const { viewportWidth } =
|
|
27708
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
27709
|
+
const { viewportWidth } = chunkVGU5S37T_js.useIsMobile();
|
|
27710
27710
|
const tabBtnStyle = { minHeight: pptx.getDensePanelTouchTargetPx(viewportWidth) };
|
|
27711
27711
|
const inputReadOnlyClass = preconfigured ? " opacity-70 cursor-not-allowed" : "";
|
|
27712
27712
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
@@ -27840,9 +27840,9 @@ function ShareDialog({
|
|
|
27840
27840
|
defaultUserName,
|
|
27841
27841
|
defaultServerUrl
|
|
27842
27842
|
}) {
|
|
27843
|
-
const collab =
|
|
27843
|
+
const collab = chunkVGU5S37T_js.useCollaboration();
|
|
27844
27844
|
const isActive = collab !== null && collab.status !== "disconnected" && collab.status !== "error";
|
|
27845
|
-
const { t } =
|
|
27845
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
27846
27846
|
const regionRenderer = useRegionRenderer("dialog.share");
|
|
27847
27847
|
const [roomId, setRoomId] = React108.useState(defaultRoomId ?? "");
|
|
27848
27848
|
const [userName, setUserName] = React108.useState(defaultUserName ?? "");
|
|
@@ -27851,9 +27851,9 @@ function ShareDialog({
|
|
|
27851
27851
|
const [invitation, setInvitation] = React108.useState("");
|
|
27852
27852
|
const [copied, setCopied] = React108.useState(false);
|
|
27853
27853
|
const dialogRef = React108.useRef(null);
|
|
27854
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
27854
|
+
const { panelStyle, handlers: dragHandlers } = chunkVGU5S37T_js.useModalDismissDrag(onClose);
|
|
27855
27855
|
useModalFocus(open, dialogRef, onClose);
|
|
27856
|
-
const { viewportWidth, viewportHeight } =
|
|
27856
|
+
const { viewportWidth, viewportHeight } = chunkVGU5S37T_js.useIsMobile();
|
|
27857
27857
|
const touchTargetPx = pptx.getDensePanelTouchTargetPx(viewportWidth);
|
|
27858
27858
|
const touchBtnStyle = { minWidth: touchTargetPx, minHeight: touchTargetPx };
|
|
27859
27859
|
const stickyFooterClass = pptx.shouldStickyActionRow(viewportWidth, viewportHeight) ? "sticky bottom-0 bg-popover" : "";
|
|
@@ -28026,7 +28026,7 @@ function HyperlinkTabContent({
|
|
|
28026
28026
|
inputCls,
|
|
28027
28027
|
onEnterConfirm
|
|
28028
28028
|
}) {
|
|
28029
|
-
const { t } =
|
|
28029
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
28030
28030
|
const handleEnterKey = (e) => {
|
|
28031
28031
|
if (e.key === "Enter") {
|
|
28032
28032
|
onEnterConfirm();
|
|
@@ -28151,13 +28151,13 @@ function HyperlinkEditDialog({
|
|
|
28151
28151
|
onConfirm,
|
|
28152
28152
|
onCancel
|
|
28153
28153
|
}) {
|
|
28154
|
-
const { t } =
|
|
28155
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
28154
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
28155
|
+
const { panelStyle, handlers: dragHandlers } = chunkVGU5S37T_js.useModalDismissDrag(onCancel);
|
|
28156
28156
|
const inputRef = React108.useRef(null);
|
|
28157
|
-
const detectedType =
|
|
28158
|
-
const emailParts =
|
|
28159
|
-
const detectedSlide =
|
|
28160
|
-
const detectedVerb = initialAction ?
|
|
28157
|
+
const detectedType = chunkVGU5S37T_js.detectTargetType(initialUrl, initialAction);
|
|
28158
|
+
const emailParts = chunkVGU5S37T_js.parseEmailUrl(initialUrl || "");
|
|
28159
|
+
const detectedSlide = chunkVGU5S37T_js.parseSlideFromUrl(initialUrl, initialAction);
|
|
28160
|
+
const detectedVerb = initialAction ? chunkVGU5S37T_js.ACTION_VERB_MAP[initialAction.toLowerCase()] || "nextSlide" : "nextSlide";
|
|
28161
28161
|
const [targetType, setTargetType] = React108.useState(detectedType);
|
|
28162
28162
|
const [url, setUrl] = React108.useState(
|
|
28163
28163
|
detectedType === "email" || detectedType === "slide" || detectedType === "action" ? "" : initialUrl || ""
|
|
@@ -28188,7 +28188,7 @@ function HyperlinkEditDialog({
|
|
|
28188
28188
|
actionVerb
|
|
28189
28189
|
});
|
|
28190
28190
|
};
|
|
28191
|
-
const tabCls = (active) =>
|
|
28191
|
+
const tabCls = (active) => chunk5DBKW7F3_js.cn(
|
|
28192
28192
|
"px-3 py-1.5 text-xs rounded-t border-b-2 transition-colors",
|
|
28193
28193
|
active ? "border-primary text-primary font-medium" : "border-transparent text-muted-foreground hover:text-foreground hover:border-border"
|
|
28194
28194
|
);
|
|
@@ -28434,7 +28434,7 @@ function ViewerBottomPanels({
|
|
|
28434
28434
|
notesStyle,
|
|
28435
28435
|
onNotesHeightChange
|
|
28436
28436
|
}) {
|
|
28437
|
-
const { isHidden } =
|
|
28437
|
+
const { isHidden } = chunkVGU5S37T_js.useToolbarVisibility(hiddenActions);
|
|
28438
28438
|
const customization = useViewerCustomizationContext();
|
|
28439
28439
|
const showNotes = pptx.isPanelVisible(customization, "notes");
|
|
28440
28440
|
const notesRenderer = useRegionRenderer("notes");
|
|
@@ -28563,7 +28563,7 @@ function ViewerInspector({
|
|
|
28563
28563
|
onPreviewElement,
|
|
28564
28564
|
elementById
|
|
28565
28565
|
}) {
|
|
28566
|
-
const { t } =
|
|
28566
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
28567
28567
|
const regionRenderer = useRegionRenderer("inspector");
|
|
28568
28568
|
const liveEdit = onPreviewElement ? {
|
|
28569
28569
|
element: selectedElement,
|
|
@@ -28778,7 +28778,7 @@ function ViewerToolbarSection(props) {
|
|
|
28778
28778
|
onSetSnapToShape,
|
|
28779
28779
|
onSetShowGuides
|
|
28780
28780
|
} = props;
|
|
28781
|
-
const { t } =
|
|
28781
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
28782
28782
|
const customization = useViewerCustomizationContext();
|
|
28783
28783
|
const handleAddAnimation = React108.useCallback(
|
|
28784
28784
|
(preset, group) => {
|
|
@@ -28831,7 +28831,7 @@ function ViewerToolbarSection(props) {
|
|
|
28831
28831
|
[activeSlide, propertyHandlers]
|
|
28832
28832
|
);
|
|
28833
28833
|
const scopedLayoutOptions = React108__default.default.useMemo(
|
|
28834
|
-
() =>
|
|
28834
|
+
() => chunkVGU5S37T_js.scopeLayoutOptionsToActiveSlide(s.layoutOptions, activeSlide),
|
|
28835
28835
|
[s.layoutOptions, activeSlide]
|
|
28836
28836
|
);
|
|
28837
28837
|
const handleResetSlide = React108.useCallback(() => {
|
|
@@ -29238,14 +29238,14 @@ function ViewerToolbarSection(props) {
|
|
|
29238
29238
|
isMobileInsertOpen: s.isMobileInsertOpen,
|
|
29239
29239
|
onCloseMobileInsert: () => s.setIsMobileInsertOpen(false),
|
|
29240
29240
|
slideCommentCount: activeSlide?.comments?.length ?? 0,
|
|
29241
|
-
reviewComments:
|
|
29241
|
+
reviewComments: chunkVGU5S37T_js.createReviewCommentsHost({
|
|
29242
29242
|
state: s,
|
|
29243
29243
|
activeSlideIndex,
|
|
29244
29244
|
updateSlides: ops.updateSlides,
|
|
29245
29245
|
markDirty: history.markDirty
|
|
29246
29246
|
}),
|
|
29247
29247
|
formatPainterActive: s.formatPainterActive,
|
|
29248
|
-
canActivateFormatPainter:
|
|
29248
|
+
canActivateFormatPainter: chunk5DBKW7F3_js.hasCopyableFormat(selectedElement),
|
|
29249
29249
|
onToggleFormatPainter: onToggleFormatPainterProp ?? (() => s.setFormatPainterActive((p) => !p)),
|
|
29250
29250
|
isSelectionPaneOpen: s.isSelectionPaneOpen,
|
|
29251
29251
|
onToggleSelectionPane: () => s.setIsSelectionPaneOpen((p) => !p),
|
|
@@ -29354,14 +29354,14 @@ function CustomShowsDialog({
|
|
|
29354
29354
|
onRun,
|
|
29355
29355
|
onClose
|
|
29356
29356
|
}) {
|
|
29357
|
-
const { t } =
|
|
29357
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
29358
29358
|
const controller = React108.useMemo(
|
|
29359
29359
|
() => pptx.createCustomShowsController(customShows, activeCustomShowId),
|
|
29360
29360
|
// A fresh draft per open: the host mounts this only while the dialog is open.
|
|
29361
29361
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
29362
29362
|
[]
|
|
29363
29363
|
);
|
|
29364
|
-
|
|
29364
|
+
chunkVGU5S37T_js.useController(controller);
|
|
29365
29365
|
const view = controller.view(slides);
|
|
29366
29366
|
const [active, setActive] = React108.useState(activeCustomShowId ?? "");
|
|
29367
29367
|
const pickerValue = view.shows.some(({ id }) => id === active) ? active : "";
|
|
@@ -29640,8 +29640,8 @@ function EquationEditorDialog({
|
|
|
29640
29640
|
onInsert,
|
|
29641
29641
|
existingOmml
|
|
29642
29642
|
}) {
|
|
29643
|
-
const { t } =
|
|
29644
|
-
const { panelStyle, handlers: dragHandlers } =
|
|
29643
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
29644
|
+
const { panelStyle, handlers: dragHandlers } = chunkVGU5S37T_js.useModalDismissDrag(onClose);
|
|
29645
29645
|
const initialLatex = React108.useMemo(() => {
|
|
29646
29646
|
if (!existingOmml) {
|
|
29647
29647
|
return "";
|
|
@@ -29763,7 +29763,7 @@ function EquationEditorDialog({
|
|
|
29763
29763
|
{
|
|
29764
29764
|
type: "button",
|
|
29765
29765
|
onClick: () => handleTemplateClick(tmpl.latex),
|
|
29766
|
-
className:
|
|
29766
|
+
className: chunk5DBKW7F3_js.cn(
|
|
29767
29767
|
"flex flex-col items-center gap-1 p-2 rounded-lg border transition-colors",
|
|
29768
29768
|
latex === tmpl.latex ? "border-primary bg-primary/10" : "border-border bg-muted/40 hover:bg-accent/60 hover:border-border"
|
|
29769
29769
|
),
|
|
@@ -29828,7 +29828,7 @@ function InsertSmartArtDialog({
|
|
|
29828
29828
|
onInsert
|
|
29829
29829
|
}) {
|
|
29830
29830
|
const ref = React108.useRef(null);
|
|
29831
|
-
const { t } =
|
|
29831
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
29832
29832
|
React108.useLayoutEffect(() => {
|
|
29833
29833
|
if (ref.current) {
|
|
29834
29834
|
ref.current.translateLabel = t;
|
|
@@ -29852,7 +29852,7 @@ function InsertChartDialog({
|
|
|
29852
29852
|
onInsert
|
|
29853
29853
|
}) {
|
|
29854
29854
|
const ref = React108.useRef(null);
|
|
29855
|
-
const { t } =
|
|
29855
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
29856
29856
|
React108.useLayoutEffect(() => {
|
|
29857
29857
|
if (ref.current) {
|
|
29858
29858
|
ref.current.translateLabel = t;
|
|
@@ -30359,11 +30359,11 @@ function PresentationStage({
|
|
|
30359
30359
|
})
|
|
30360
30360
|
},
|
|
30361
30361
|
children: [
|
|
30362
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30362
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkVGU5S37T_js.SlideBackgroundImageLayer, { slide: activeSlide }),
|
|
30363
30363
|
/* @__PURE__ */ jsxRuntime.jsx("style", { children: pptx.PRESENTATION_HIT_TEST_CSS }),
|
|
30364
30364
|
presentationKeyframesCss && /* @__PURE__ */ jsxRuntime.jsx("style", { children: presentationKeyframesCss }),
|
|
30365
30365
|
templateElements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
30366
|
-
|
|
30366
|
+
chunkVGU5S37T_js.ElementRenderer,
|
|
30367
30367
|
{
|
|
30368
30368
|
element,
|
|
30369
30369
|
activeSlide,
|
|
@@ -30401,7 +30401,7 @@ function PresentationStage({
|
|
|
30401
30401
|
`tpl-${element.id}`
|
|
30402
30402
|
)),
|
|
30403
30403
|
activeSlide?.elements.map((element, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
30404
|
-
|
|
30404
|
+
chunkVGU5S37T_js.ElementRenderer,
|
|
30405
30405
|
{
|
|
30406
30406
|
element,
|
|
30407
30407
|
activeSlide,
|
|
@@ -30454,7 +30454,7 @@ function PresentationStage({
|
|
|
30454
30454
|
function noop() {
|
|
30455
30455
|
}
|
|
30456
30456
|
function PresentationContextMenu(p) {
|
|
30457
|
-
const { t } =
|
|
30457
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
30458
30458
|
const sections = pptx.getPresentationContextMenuSections({
|
|
30459
30459
|
seeAllSlides: Boolean(p.onSeeAllSlides),
|
|
30460
30460
|
presenterView: Boolean(p.onShowPresenterView),
|
|
@@ -30513,7 +30513,7 @@ function PresentationTransitionMount({
|
|
|
30513
30513
|
templateElementsBySlideId
|
|
30514
30514
|
);
|
|
30515
30515
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
30516
|
-
|
|
30516
|
+
chunkVGU5S37T_js.PresentationTransitionOverlay,
|
|
30517
30517
|
{
|
|
30518
30518
|
outgoingSlide,
|
|
30519
30519
|
templateElements: templates.outgoing,
|
|
@@ -30558,9 +30558,9 @@ function ViewerCanvasArea(props) {
|
|
|
30558
30558
|
aiHighlightOverlay,
|
|
30559
30559
|
aiCanvasActive = false
|
|
30560
30560
|
} = props;
|
|
30561
|
-
const { t } =
|
|
30562
|
-
const { isHidden } =
|
|
30563
|
-
const viewerOptions =
|
|
30561
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
30562
|
+
const { isHidden } = chunkVGU5S37T_js.useToolbarVisibility(hiddenActions);
|
|
30563
|
+
const viewerOptions = chunkVGU5S37T_js.useViewerOptionsContext();
|
|
30564
30564
|
const outlineAuthoring = useOutlineAuthoring({
|
|
30565
30565
|
state: s,
|
|
30566
30566
|
updateElement: canvasHandlers.handleUpdateSmartArtElement,
|
|
@@ -30606,9 +30606,9 @@ function ViewerCanvasArea(props) {
|
|
|
30606
30606
|
);
|
|
30607
30607
|
const handleHyperlinkClick = React108.useCallback(
|
|
30608
30608
|
(url) => {
|
|
30609
|
-
if (
|
|
30609
|
+
if (chunk5DBKW7F3_js.isPpactionUrl(url)) {
|
|
30610
30610
|
if (mode === "present") {
|
|
30611
|
-
const parsed =
|
|
30611
|
+
const parsed = chunk5DBKW7F3_js.parsePpactionUrl(url);
|
|
30612
30612
|
if (parsed) {
|
|
30613
30613
|
const action = {
|
|
30614
30614
|
action: parsed.action,
|
|
@@ -30693,7 +30693,7 @@ function ViewerCanvasArea(props) {
|
|
|
30693
30693
|
s.setActiveSlideIndex((i) => Math.max(0, i - 1));
|
|
30694
30694
|
}
|
|
30695
30695
|
}, [mode, presentation, s]);
|
|
30696
|
-
const swipe =
|
|
30696
|
+
const swipe = chunkVGU5S37T_js.useSwipeNavigation({
|
|
30697
30697
|
enabled: swipeEnabled,
|
|
30698
30698
|
onNext: handleSwipeNext,
|
|
30699
30699
|
onPrev: handleSwipePrev
|
|
@@ -30879,14 +30879,14 @@ function ViewerCanvasArea(props) {
|
|
|
30879
30879
|
outlineAuthoring,
|
|
30880
30880
|
collaborationOverlay: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
30881
30881
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30882
|
-
|
|
30882
|
+
chunkVGU5S37T_js.RemoteSelectionOverlay,
|
|
30883
30883
|
{
|
|
30884
30884
|
elements: effectiveSlide?.elements ?? [],
|
|
30885
30885
|
activeSlideIndex
|
|
30886
30886
|
}
|
|
30887
30887
|
),
|
|
30888
30888
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30889
|
-
|
|
30889
|
+
chunkVGU5S37T_js.CollaborationCursorOverlay,
|
|
30890
30890
|
{
|
|
30891
30891
|
activeSlideIndex,
|
|
30892
30892
|
canvasWidth: canvasSize.width,
|
|
@@ -31123,8 +31123,8 @@ function AiChangeOverlay({ batch, activeSlideIndex }) {
|
|
|
31123
31123
|
] });
|
|
31124
31124
|
}
|
|
31125
31125
|
function ChartFormatPanel() {
|
|
31126
|
-
const { t } =
|
|
31127
|
-
const commands =
|
|
31126
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
31127
|
+
const commands = chunkVGU5S37T_js.useChartFormatContext();
|
|
31128
31128
|
const ref = React108.useRef(null);
|
|
31129
31129
|
const chart = commands?.chart;
|
|
31130
31130
|
const chartData = chart?.type === "chart" ? chart.chartData : void 0;
|
|
@@ -31159,7 +31159,7 @@ function ChartFormatPanel() {
|
|
|
31159
31159
|
return /* @__PURE__ */ jsxRuntime.jsx("pptx-ui-chart-format-pane", { ref, "data-testid": "chart-format-pane" });
|
|
31160
31160
|
}
|
|
31161
31161
|
function ThemeEditorPanel({ theme, canEdit, onApply, onClose }) {
|
|
31162
|
-
const { t } =
|
|
31162
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
31163
31163
|
const ref = React108.useRef(null);
|
|
31164
31164
|
React108.useEffect(() => {
|
|
31165
31165
|
const node = ref.current;
|
|
@@ -31196,8 +31196,8 @@ function MobileDismissSheet({
|
|
|
31196
31196
|
className,
|
|
31197
31197
|
children
|
|
31198
31198
|
}) {
|
|
31199
|
-
const { t } =
|
|
31200
|
-
const { dragY, handlers } =
|
|
31199
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
31200
|
+
const { dragY, handlers } = chunkVGU5S37T_js.useSheetDismissDrag(onClose);
|
|
31201
31201
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31202
31202
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
31203
31203
|
"button",
|
|
@@ -31466,7 +31466,7 @@ function ThemeThumbnail({
|
|
|
31466
31466
|
{
|
|
31467
31467
|
type: "button",
|
|
31468
31468
|
onClick,
|
|
31469
|
-
className:
|
|
31469
|
+
className: chunk5DBKW7F3_js.cn(
|
|
31470
31470
|
"group relative flex flex-col rounded-lg border-2 transition-all overflow-hidden",
|
|
31471
31471
|
selected ? "border-primary shadow-lg scale-[1.02]" : "border-border hover:border-primary/50 hover:shadow-md"
|
|
31472
31472
|
),
|
|
@@ -31497,7 +31497,7 @@ function ThemeGallery({
|
|
|
31497
31497
|
onApplyTheme,
|
|
31498
31498
|
onImportTheme
|
|
31499
31499
|
}) {
|
|
31500
|
-
const { t } =
|
|
31500
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
31501
31501
|
const [selectedTheme, setSelectedTheme] = React108.useState(currentTheme ?? null);
|
|
31502
31502
|
const fileInputRef = React108.useRef(null);
|
|
31503
31503
|
React108.useEffect(() => {
|
|
@@ -31634,8 +31634,8 @@ function ViewerSidePanels(props) {
|
|
|
31634
31634
|
aiBridge,
|
|
31635
31635
|
aiPanel
|
|
31636
31636
|
} = props;
|
|
31637
|
-
const aiAssistant =
|
|
31638
|
-
const AiPanel = aiAssistant?.panel ??
|
|
31637
|
+
const aiAssistant = chunkPNDORR6S_js.aiAssistants.resolve(aiConfig);
|
|
31638
|
+
const AiPanel = aiAssistant?.panel ?? chunkPNDORR6S_js.AiChatPanelLazy;
|
|
31639
31639
|
const handleSetSlideSize = (size, rescaleMode) => {
|
|
31640
31640
|
if (rescaleMode && s.slideSizeEmu) {
|
|
31641
31641
|
s.setSlides(pptx.scaleSlidesForSizeChange(slides, s.slideSizeEmu, size, rescaleMode));
|
|
@@ -31941,7 +31941,7 @@ function ViewerMainContent(props) {
|
|
|
31941
31941
|
);
|
|
31942
31942
|
const layoutGalleryAnchorRef = React108.useRef(null);
|
|
31943
31943
|
const layoutGalleryPreviews = useLayoutPreviews(loadLayoutPreviews, layoutGalleryAnchor !== null);
|
|
31944
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
31944
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkVGU5S37T_js.ChartPartSelectionProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-pptx-chrome": "body", className: "relative z-10 flex flex-1 min-h-0", children: [
|
|
31945
31945
|
showSlidesPane && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
31946
31946
|
slidesPaneRenderer ? (
|
|
31947
31947
|
// The rail's slot (width, collapse, resize handle) stays the viewer's.
|
|
@@ -32151,7 +32151,7 @@ function AutosaveRecoveryDialog({
|
|
|
32151
32151
|
onDiscard,
|
|
32152
32152
|
busy = false
|
|
32153
32153
|
}) {
|
|
32154
|
-
const { t } =
|
|
32154
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
32155
32155
|
if (!prompt) {
|
|
32156
32156
|
return null;
|
|
32157
32157
|
}
|
|
@@ -32207,7 +32207,7 @@ function CompatibilityToasts({
|
|
|
32207
32207
|
rightInset = 0,
|
|
32208
32208
|
bottomInset = 0
|
|
32209
32209
|
}) {
|
|
32210
|
-
const { t } =
|
|
32210
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
32211
32211
|
const ref = useWebControl(
|
|
32212
32212
|
{ toasts, rightInset, bottomInset, translate: t },
|
|
32213
32213
|
{
|
|
@@ -32252,7 +32252,7 @@ function HeaderFooterPanel({
|
|
|
32252
32252
|
onApplyToCurrent,
|
|
32253
32253
|
onClose
|
|
32254
32254
|
}) {
|
|
32255
|
-
const { t } =
|
|
32255
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
32256
32256
|
const showDateTime = headerFooter.hasDateTime ?? false;
|
|
32257
32257
|
const dateTimeAuto = headerFooter.dateTimeAuto ?? false;
|
|
32258
32258
|
const showDateText = pptx.isHeaderFooterDateTextVisible(headerFooter);
|
|
@@ -32393,7 +32393,7 @@ function HeaderFooterPanel({
|
|
|
32393
32393
|
] }) });
|
|
32394
32394
|
}
|
|
32395
32395
|
function MobileBottomBar(p) {
|
|
32396
|
-
const { t } =
|
|
32396
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
32397
32397
|
const handlers = {
|
|
32398
32398
|
slides: p.onOpenSlides,
|
|
32399
32399
|
insert: p.onOpenInsert,
|
|
@@ -32419,7 +32419,7 @@ function MobileSlidesSheet({
|
|
|
32419
32419
|
onClose,
|
|
32420
32420
|
...sidebar
|
|
32421
32421
|
}) {
|
|
32422
|
-
const { t } =
|
|
32422
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
32423
32423
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
32424
32424
|
MobileSheet,
|
|
32425
32425
|
{
|
|
@@ -32446,7 +32446,7 @@ function MobileChromeOverlay(props) {
|
|
|
32446
32446
|
slideSectionGroups,
|
|
32447
32447
|
canEdit,
|
|
32448
32448
|
commentCount
|
|
32449
|
-
} = props, { keyboardInset, isKeyboardOpen } =
|
|
32449
|
+
} = props, { keyboardInset, isKeyboardOpen } = chunkVGU5S37T_js.useKeyboardInsets(), activeSheet = s.isMobileInsertOpen ? "insert" : s.isSlidesPaneOpen ? "slides" : s.isInspectorPaneOpen ? s.sidebarPanelMode === "comments" ? "comments" : "inspector" : !s.isSlideNotesCollapsed ? "notes" : null, closeAllSheets = () => {
|
|
32450
32450
|
s.setIsSlidesPaneOpen(false);
|
|
32451
32451
|
s.setIsMobileInsertOpen(false);
|
|
32452
32452
|
s.setIsInspectorPaneOpen(false);
|
|
@@ -32546,7 +32546,7 @@ function MobileChromeOverlay(props) {
|
|
|
32546
32546
|
] });
|
|
32547
32547
|
}
|
|
32548
32548
|
function ReadOnlyBanner(p) {
|
|
32549
|
-
const { t } =
|
|
32549
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
32550
32550
|
const ref = useWebControl(
|
|
32551
32551
|
pptx.readOnlyBannerState(
|
|
32552
32552
|
p.recommendation,
|
|
@@ -32580,7 +32580,7 @@ function RibbonCustomizationStyle({
|
|
|
32580
32580
|
return /* @__PURE__ */ jsxRuntime.jsx("style", { "data-pptx-ribbon-customization": "", children: css });
|
|
32581
32581
|
}
|
|
32582
32582
|
function RunProgramNotices({ notices, onDismiss }) {
|
|
32583
|
-
const { t } =
|
|
32583
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
32584
32584
|
if (notices.length === 0) {
|
|
32585
32585
|
return null;
|
|
32586
32586
|
}
|
|
@@ -32638,14 +32638,14 @@ function AddinTable({
|
|
|
32638
32638
|
selectedId,
|
|
32639
32639
|
onSelect
|
|
32640
32640
|
}) {
|
|
32641
|
-
const { t } =
|
|
32641
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
32642
32642
|
return /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
|
|
32643
32643
|
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "mb-1 text-xs font-semibold text-foreground", children: title }),
|
|
32644
32644
|
rows.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "px-2 py-1 text-xs italic text-muted-foreground", children: t("pptx.options.addIns.description") }) : /* @__PURE__ */ jsxRuntime.jsx("table", { className: "w-full border-collapse text-left", children: /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: rows.map((row) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
32645
32645
|
"tr",
|
|
32646
32646
|
{
|
|
32647
32647
|
onClick: () => onSelect(row.id),
|
|
32648
|
-
className:
|
|
32648
|
+
className: chunk5DBKW7F3_js.cn(
|
|
32649
32649
|
"cursor-pointer border-b border-border/40 transition-colors",
|
|
32650
32650
|
selectedId === row.id ? "bg-primary/10" : "hover:bg-accent"
|
|
32651
32651
|
),
|
|
@@ -32660,7 +32660,7 @@ function AddinTable({
|
|
|
32660
32660
|
] });
|
|
32661
32661
|
}
|
|
32662
32662
|
function OptionsAddInsPane({ addinStatus }) {
|
|
32663
|
-
const { t } =
|
|
32663
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
32664
32664
|
const [selectedId, setSelectedId] = React108.useState(null);
|
|
32665
32665
|
const rows = pptx.resolveViewerAddinRows(addinStatus);
|
|
32666
32666
|
const active = rows.filter((row) => row.active);
|
|
@@ -32703,7 +32703,7 @@ function CommandList({
|
|
|
32703
32703
|
selectedId,
|
|
32704
32704
|
onSelect
|
|
32705
32705
|
}) {
|
|
32706
|
-
const { t } =
|
|
32706
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
32707
32707
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
|
|
32708
32708
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-1 text-xs font-medium text-muted-foreground", children: title }),
|
|
32709
32709
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -32724,7 +32724,7 @@ function CommandList({
|
|
|
32724
32724
|
role: "option",
|
|
32725
32725
|
"aria-selected": selectedId === id,
|
|
32726
32726
|
onClick: () => onSelect(id),
|
|
32727
|
-
className:
|
|
32727
|
+
className: chunk5DBKW7F3_js.cn(
|
|
32728
32728
|
"flex w-full items-center rounded px-2 py-1.5 text-left text-sm transition-colors",
|
|
32729
32729
|
selectedId === id ? "bg-primary/15 text-primary" : "text-foreground hover:bg-accent"
|
|
32730
32730
|
),
|
|
@@ -32742,7 +32742,7 @@ function OptionsQuickAccessPane({
|
|
|
32742
32742
|
onQuickAccessCommandsChange,
|
|
32743
32743
|
onResetQuickAccess
|
|
32744
32744
|
}) {
|
|
32745
|
-
const { t } =
|
|
32745
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
32746
32746
|
const [selectedAvailable, setSelectedAvailable] = React108.useState(null);
|
|
32747
32747
|
const [selectedCurrent, setSelectedCurrent] = React108.useState(null);
|
|
32748
32748
|
const current = options.quickAccess.commandIds;
|
|
@@ -32856,7 +32856,7 @@ function OptionsRibbonPane({
|
|
|
32856
32856
|
onRibbonTabHiddenChange,
|
|
32857
32857
|
onResetRibbon
|
|
32858
32858
|
}) {
|
|
32859
|
-
const { t } =
|
|
32859
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
32860
32860
|
const hidden = new Set(options.ribbon.hiddenTabIds);
|
|
32861
32861
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-5", children: [
|
|
32862
32862
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
|
|
@@ -32868,7 +32868,7 @@ function OptionsRibbonPane({
|
|
|
32868
32868
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
32869
32869
|
"label",
|
|
32870
32870
|
{
|
|
32871
|
-
className:
|
|
32871
|
+
className: chunk5DBKW7F3_js.cn(
|
|
32872
32872
|
"flex items-center gap-2 rounded px-2 py-1.5",
|
|
32873
32873
|
isFile ? "cursor-not-allowed opacity-60" : "cursor-pointer hover:bg-accent"
|
|
32874
32874
|
),
|
|
@@ -32902,7 +32902,7 @@ function OptionsRibbonPane({
|
|
|
32902
32902
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", children: pptx.SHORTCUT_REFERENCE_ITEMS.map((shortcut, i) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
32903
32903
|
"div",
|
|
32904
32904
|
{
|
|
32905
|
-
className:
|
|
32905
|
+
className: chunk5DBKW7F3_js.cn(
|
|
32906
32906
|
"flex items-center justify-between gap-3 rounded px-3 py-2",
|
|
32907
32907
|
i % 2 === 0 ? "bg-muted/60" : ""
|
|
32908
32908
|
),
|
|
@@ -32923,12 +32923,12 @@ async function exportAiChatLogs(options) {
|
|
|
32923
32923
|
chats,
|
|
32924
32924
|
{ format: options?.format, detailed: options?.detailed, now: options?.now },
|
|
32925
32925
|
(filename, content, mime) => {
|
|
32926
|
-
|
|
32926
|
+
chunkVGU5S37T_js.downloadBlob(new Blob([content], { type: mime }), filename);
|
|
32927
32927
|
}
|
|
32928
32928
|
);
|
|
32929
32929
|
}
|
|
32930
32930
|
function SettingsAiTab({ store }) {
|
|
32931
|
-
const { t } =
|
|
32931
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
32932
32932
|
const activeStore = React108.useMemo(() => store ?? host.createChatHistoryStore(), [store]);
|
|
32933
32933
|
const [chatCount, setChatCount] = React108.useState(null);
|
|
32934
32934
|
const [detailed, setDetailed] = React108.useState(true);
|
|
@@ -33020,7 +33020,7 @@ function SettingsAppearanceTab({
|
|
|
33020
33020
|
themes,
|
|
33021
33021
|
onSelectTheme
|
|
33022
33022
|
}) {
|
|
33023
|
-
const { t } =
|
|
33023
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
33024
33024
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-2 gap-3", children: themes.map((entry) => {
|
|
33025
33025
|
const isActive = entry.key === activeThemeKey;
|
|
33026
33026
|
const previewBackground = entry.theme?.colors?.background ?? "#0b0f19";
|
|
@@ -33031,7 +33031,7 @@ function SettingsAppearanceTab({
|
|
|
33031
33031
|
type: "button",
|
|
33032
33032
|
onClick: () => onSelectTheme(entry.key),
|
|
33033
33033
|
"aria-pressed": isActive,
|
|
33034
|
-
className:
|
|
33034
|
+
className: chunk5DBKW7F3_js.cn(
|
|
33035
33035
|
"flex items-center gap-3 rounded-lg border px-3 py-2.5 text-left transition-colors",
|
|
33036
33036
|
isActive ? "border-primary bg-primary/10" : "border-border hover:border-primary/50 hover:bg-accent"
|
|
33037
33037
|
),
|
|
@@ -33048,7 +33048,7 @@ function SettingsAppearanceTab({
|
|
|
33048
33048
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
33049
33049
|
"span",
|
|
33050
33050
|
{
|
|
33051
|
-
className:
|
|
33051
|
+
className: chunk5DBKW7F3_js.cn("text-xs font-medium", isActive ? "text-primary" : "text-foreground"),
|
|
33052
33052
|
children: t(entry.labelKey)
|
|
33053
33053
|
}
|
|
33054
33054
|
)
|
|
@@ -33063,7 +33063,7 @@ function SettingsCustomFontsSection({
|
|
|
33063
33063
|
families,
|
|
33064
33064
|
onRegistered
|
|
33065
33065
|
}) {
|
|
33066
|
-
const { t } =
|
|
33066
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
33067
33067
|
const inputRef = React108.useRef(null);
|
|
33068
33068
|
const [error, setError] = React108.useState(false);
|
|
33069
33069
|
const handleFile = async (file) => {
|
|
@@ -33128,7 +33128,7 @@ function SettingsLanguageTab({
|
|
|
33128
33128
|
type: "button",
|
|
33129
33129
|
onClick: () => onSelectLocale(locale.code),
|
|
33130
33130
|
"aria-pressed": isActive,
|
|
33131
|
-
className:
|
|
33131
|
+
className: chunk5DBKW7F3_js.cn(
|
|
33132
33132
|
"flex w-full items-center justify-between rounded px-3 py-2.5 text-left transition-colors",
|
|
33133
33133
|
isActive ? "bg-primary/10 text-primary" : "text-foreground hover:bg-accent"
|
|
33134
33134
|
),
|
|
@@ -33167,7 +33167,7 @@ function OpenSettingsDialog({
|
|
|
33167
33167
|
customFontFamilies = NO_CUSTOM_FONT_FAMILIES,
|
|
33168
33168
|
onCustomFontRegistered
|
|
33169
33169
|
}) {
|
|
33170
|
-
const { t } =
|
|
33170
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
33171
33171
|
const viewerCustomization = useViewerCustomizationContext();
|
|
33172
33172
|
const customization = React108.useMemo(
|
|
33173
33173
|
() => languageSelectable ? viewerCustomization : {
|
|
@@ -33276,7 +33276,7 @@ function ViewerOptionsProvider({
|
|
|
33276
33276
|
store,
|
|
33277
33277
|
children
|
|
33278
33278
|
}) {
|
|
33279
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
33279
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkVGU5S37T_js.ViewerOptionsStoreContext.Provider, { value: store, children: /* @__PURE__ */ jsxRuntime.jsx(chunkVGU5S37T_js.ViewerOptionsContext.Provider, { value: options, children }) });
|
|
33280
33280
|
}
|
|
33281
33281
|
function useAiBridge(input) {
|
|
33282
33282
|
const ref = React108.useRef(input);
|
|
@@ -33359,7 +33359,7 @@ function useAiPanelController(input) {
|
|
|
33359
33359
|
getSelectedElement: () => inputRef.current.selectedElement
|
|
33360
33360
|
})
|
|
33361
33361
|
);
|
|
33362
|
-
const state =
|
|
33362
|
+
const state = chunkVGU5S37T_js.useController(controller);
|
|
33363
33363
|
React108.useEffect(() => () => controller.dispose(), [controller]);
|
|
33364
33364
|
const liveFocusTargets = React108.useMemo(
|
|
33365
33365
|
() => host.computeFocusTargets({ activeSlideIndex, selectedElementIds, selectedElementId }),
|
|
@@ -33592,7 +33592,7 @@ function useMasterViewCrud(input) {
|
|
|
33592
33592
|
forgetHistory,
|
|
33593
33593
|
pushToast
|
|
33594
33594
|
} = input;
|
|
33595
|
-
const { t } =
|
|
33595
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
33596
33596
|
const data = React108.useMemo(
|
|
33597
33597
|
() => ({ slides, slideMasters }),
|
|
33598
33598
|
[slides, slideMasters]
|
|
@@ -33981,7 +33981,7 @@ function useHostLanguage({
|
|
|
33981
33981
|
availableLocales,
|
|
33982
33982
|
onLocaleChange
|
|
33983
33983
|
}) {
|
|
33984
|
-
const { t, i18n } =
|
|
33984
|
+
const { t, i18n } = chunk5DBKW7F3_js.useHostI18next();
|
|
33985
33985
|
const [localeCode, setLocaleCode] = React108.useState(
|
|
33986
33986
|
() => defaultLocale ?? pptx.readStoredViewerPrefs().localeCode ?? "en"
|
|
33987
33987
|
);
|
|
@@ -34021,7 +34021,7 @@ function useProvidedLanguage({
|
|
|
34021
34021
|
availableLocales,
|
|
34022
34022
|
onLocaleChange
|
|
34023
34023
|
}) {
|
|
34024
|
-
const state = React108.useContext(
|
|
34024
|
+
const state = React108.useContext(chunk5DBKW7F3_js.PptxI18nContext);
|
|
34025
34025
|
const { locale } = state;
|
|
34026
34026
|
const locales = availableLocales ?? NO_LOCALES;
|
|
34027
34027
|
const controls = React108.useMemo(
|
|
@@ -34041,7 +34041,7 @@ function useProvidedLanguage({
|
|
|
34041
34041
|
return { state, controls };
|
|
34042
34042
|
}
|
|
34043
34043
|
function provideLanguage({ state, controls }, children) {
|
|
34044
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
34044
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk5DBKW7F3_js.ViewerI18nContext.Provider, { value: state, children: /* @__PURE__ */ jsxRuntime.jsx(chunk5DBKW7F3_js.ViewerLocaleControlsContext.Provider, { value: controls, children }) });
|
|
34045
34045
|
}
|
|
34046
34046
|
function HostLanguageRoot({ children, ...props }) {
|
|
34047
34047
|
return provideLanguage(useHostLanguage(props), children);
|
|
@@ -34050,11 +34050,11 @@ function ProvidedLanguageRoot({ children, ...props }) {
|
|
|
34050
34050
|
return provideLanguage(useProvidedLanguage(props), children);
|
|
34051
34051
|
}
|
|
34052
34052
|
function ViewerI18nRoot(props) {
|
|
34053
|
-
const Root = React108.useContext(
|
|
34053
|
+
const Root = React108.useContext(chunk5DBKW7F3_js.PptxI18nContext) ? ProvidedLanguageRoot : HostLanguageRoot;
|
|
34054
34054
|
return /* @__PURE__ */ jsxRuntime.jsx(Root, { ...props });
|
|
34055
34055
|
}
|
|
34056
34056
|
function useViewerLocaleControls() {
|
|
34057
|
-
return React108.useContext(
|
|
34057
|
+
return React108.useContext(chunk5DBKW7F3_js.ViewerLocaleControlsContext);
|
|
34058
34058
|
}
|
|
34059
34059
|
var NO_RIBBON_ADD_INS = [];
|
|
34060
34060
|
var NO_FILE_PROVIDERS = [];
|
|
@@ -34133,7 +34133,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34133
34133
|
limits
|
|
34134
34134
|
} = props;
|
|
34135
34135
|
const cloudDocument = React108.useMemo(() => pptx.createCloudDocumentController(), []);
|
|
34136
|
-
const cloudFile =
|
|
34136
|
+
const cloudFile = chunkVGU5S37T_js.useController(cloudDocument).file;
|
|
34137
34137
|
const {
|
|
34138
34138
|
storage,
|
|
34139
34139
|
fileName,
|
|
@@ -34182,7 +34182,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34182
34182
|
(current) => current.includes(family) ? current : [...current, family]
|
|
34183
34183
|
);
|
|
34184
34184
|
}, []);
|
|
34185
|
-
const { t } =
|
|
34185
|
+
const { t } = chunk5DBKW7F3_js.useTranslation();
|
|
34186
34186
|
const {
|
|
34187
34187
|
localeCode,
|
|
34188
34188
|
locales: resolvedLocales,
|
|
@@ -34239,7 +34239,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34239
34239
|
},
|
|
34240
34240
|
[hostStorage, cloudDocument]
|
|
34241
34241
|
);
|
|
34242
|
-
const { optionsStore, options: viewerOptions } =
|
|
34242
|
+
const { optionsStore, options: viewerOptions } = chunkVGU5S37T_js.useViewerOptions();
|
|
34243
34243
|
const custom = useViewerCustomization(
|
|
34244
34244
|
customization,
|
|
34245
34245
|
legacyHiddenActions,
|
|
@@ -34258,8 +34258,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34258
34258
|
const handleEnableEditing = React108.useCallback(() => {
|
|
34259
34259
|
setProtectedViewOverridden(true);
|
|
34260
34260
|
}, []);
|
|
34261
|
-
const readOnlyRec =
|
|
34262
|
-
const compatToastsState =
|
|
34261
|
+
const readOnlyRec = chunkVGU5S37T_js.useReadOnlyRecommendationState(content);
|
|
34262
|
+
const compatToastsState = chunkVGU5S37T_js.useCompatibilityToastsState();
|
|
34263
34263
|
const [notesBarHeight, setNotesBarHeight] = React108.useState(0);
|
|
34264
34264
|
const runProgramNoticesState = useRunProgramNoticesState();
|
|
34265
34265
|
const [collaborationReadOnly, setCollaborationReadOnly] = React108.useState(Boolean(collaboration));
|
|
@@ -34282,8 +34282,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34282
34282
|
filePath
|
|
34283
34283
|
});
|
|
34284
34284
|
const [isShareDialogOpen, setIsShareDialogOpen] = React108.useState(false);
|
|
34285
|
-
const { reducedMotion, toggleReducedMotion } =
|
|
34286
|
-
const state =
|
|
34285
|
+
const { reducedMotion, toggleReducedMotion } = chunkVGU5S37T_js.useReducedMotion();
|
|
34286
|
+
const state = chunkVGU5S37T_js.useViewerState({
|
|
34287
34287
|
content,
|
|
34288
34288
|
canEdit,
|
|
34289
34289
|
inspectorInitiallyOpen: props.inspectorInitiallyOpen
|
|
@@ -34410,16 +34410,16 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34410
34410
|
}
|
|
34411
34411
|
}, [settings, optionsStore]);
|
|
34412
34412
|
const handleClearOptionsCache = useAutosaveCacheMaintenance(viewerOptions, storage);
|
|
34413
|
-
const mobile =
|
|
34413
|
+
const mobile = chunkVGU5S37T_js.useIsMobile();
|
|
34414
34414
|
const { isMobile, isTouchDevice, isVirtualKeyboardOpen } = mobile;
|
|
34415
|
-
const resizablePanels =
|
|
34415
|
+
const resizablePanels = chunkVGU5S37T_js.useResizablePanels();
|
|
34416
34416
|
const {
|
|
34417
34417
|
gridSpacingPx,
|
|
34418
34418
|
visibleSlideIndexes,
|
|
34419
34419
|
slideSectionGroups,
|
|
34420
34420
|
masterPseudoSlide,
|
|
34421
34421
|
authoredRange
|
|
34422
|
-
} =
|
|
34422
|
+
} = chunkVGU5S37T_js.useDerivedSlideState({
|
|
34423
34423
|
slides,
|
|
34424
34424
|
sections: state.sections,
|
|
34425
34425
|
customShows: state.customShows,
|
|
@@ -34444,7 +34444,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34444
34444
|
state.cropSessionRef
|
|
34445
34445
|
]
|
|
34446
34446
|
);
|
|
34447
|
-
const zoom =
|
|
34447
|
+
const zoom = chunkVGU5S37T_js.useZoomViewport({
|
|
34448
34448
|
canvasSize,
|
|
34449
34449
|
selectedElements: state.selectedElements,
|
|
34450
34450
|
fitPadding: props.fitPadding,
|
|
@@ -34460,7 +34460,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34460
34460
|
onChangeCallback.current?.();
|
|
34461
34461
|
}, [setIsDirty]);
|
|
34462
34462
|
const restoreHistoryThemeRef = React108.useRef(void 0);
|
|
34463
|
-
const history =
|
|
34463
|
+
const history = chunkVGU5S37T_js.useEditorHistory({
|
|
34464
34464
|
slides,
|
|
34465
34465
|
canvasSize,
|
|
34466
34466
|
activeSlideIndex,
|
|
@@ -34489,7 +34489,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34489
34489
|
setEditTemplateMode: state.setEditTemplateMode,
|
|
34490
34490
|
setHeaderFooter: state.setHeaderFooter
|
|
34491
34491
|
});
|
|
34492
|
-
const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } =
|
|
34492
|
+
const { presentation, annotations, actionSoundHandlerRef, setExitModeHandler } = chunkVGU5S37T_js.usePresentationSetup({
|
|
34493
34493
|
mode,
|
|
34494
34494
|
slides,
|
|
34495
34495
|
visibleSlideIndexes,
|
|
@@ -34568,7 +34568,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34568
34568
|
loading,
|
|
34569
34569
|
error
|
|
34570
34570
|
]);
|
|
34571
|
-
|
|
34571
|
+
chunkVGU5S37T_js.useTouchGestures({
|
|
34572
34572
|
targetRef: zoom.canvasViewportRef,
|
|
34573
34573
|
currentScale: zoom.scale,
|
|
34574
34574
|
callbacks: {
|
|
@@ -34590,7 +34590,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34590
34590
|
},
|
|
34591
34591
|
enabled: isTouchDevice
|
|
34592
34592
|
});
|
|
34593
|
-
const dialogs =
|
|
34593
|
+
const dialogs = chunkVGU5S37T_js.useViewerDialogs({
|
|
34594
34594
|
mode,
|
|
34595
34595
|
slides,
|
|
34596
34596
|
activeSlide,
|
|
@@ -34618,7 +34618,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34618
34618
|
history,
|
|
34619
34619
|
embeddedFontFamilies: state.embeddedFonts.map((font) => font.name)
|
|
34620
34620
|
});
|
|
34621
|
-
|
|
34621
|
+
chunkVGU5S37T_js.useClearSelectionOnSlideChange(state, activeSlideIndex);
|
|
34622
34622
|
const zoomBeforePresentRef = React108.useRef(null);
|
|
34623
34623
|
React108.useEffect(() => {
|
|
34624
34624
|
if (mode !== "present") {
|
|
@@ -34636,7 +34636,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34636
34636
|
zoom.handleZoomToFit();
|
|
34637
34637
|
zoom.canvasViewportRef.current?.scrollTo({ left: 0, top: 0 });
|
|
34638
34638
|
}, [mode]);
|
|
34639
|
-
const editorOps =
|
|
34639
|
+
const editorOps = chunkVGU5S37T_js.useEditorOperations({
|
|
34640
34640
|
state,
|
|
34641
34641
|
history,
|
|
34642
34642
|
zoom,
|
|
@@ -34681,7 +34681,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34681
34681
|
handlerRef,
|
|
34682
34682
|
viewerApi,
|
|
34683
34683
|
loadVersion
|
|
34684
|
-
} =
|
|
34684
|
+
} = chunkVGU5S37T_js.useViewerIntegration({
|
|
34685
34685
|
transformCommittedText: (text, previous) => pptx.applyAutoCorrectToEdit(text, previous, viewerOptions.proofing),
|
|
34686
34686
|
state,
|
|
34687
34687
|
zoom,
|
|
@@ -34824,7 +34824,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34824
34824
|
updateElementById: editorOps.ops.updateElementById
|
|
34825
34825
|
});
|
|
34826
34826
|
const ribbonScope = useRibbonScopeToken();
|
|
34827
|
-
const viewPreferencesSync =
|
|
34827
|
+
const viewPreferencesSync = chunkVGU5S37T_js.useViewPreferencesSync({
|
|
34828
34828
|
loadVersion,
|
|
34829
34829
|
viewProperties: state.viewProperties,
|
|
34830
34830
|
setViewProperties: state.setViewProperties,
|
|
@@ -34875,7 +34875,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34875
34875
|
},
|
|
34876
34876
|
[state]
|
|
34877
34877
|
);
|
|
34878
|
-
const layoutSwitching =
|
|
34878
|
+
const layoutSwitching = chunkVGU5S37T_js.useLayoutSwitching({
|
|
34879
34879
|
handler: handlerRef.current,
|
|
34880
34880
|
slides,
|
|
34881
34881
|
activeSlideIndex,
|
|
@@ -34994,7 +34994,7 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
34994
34994
|
"data-pptx-editor-chrome": "",
|
|
34995
34995
|
...{ [pptx.RIBBON_SCOPE_ATTR]: ribbonScope },
|
|
34996
34996
|
"aria-busy": loading,
|
|
34997
|
-
className:
|
|
34997
|
+
className: chunk5DBKW7F3_js.cn(
|
|
34998
34998
|
"h-full w-full bg-background text-foreground relative",
|
|
34999
34999
|
...pptx.resolveOptionRootClasses(viewerOptions, "pptx")
|
|
35000
35000
|
),
|
|
@@ -35394,8 +35394,8 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
35394
35394
|
// Nothing previously provided it, so every one of those consumers was
|
|
35395
35395
|
// silently reading `DEFAULT_VIEWER_OPTIONS` forever, no matter what
|
|
35396
35396
|
// the user changed in the Options dialog.
|
|
35397
|
-
/* @__PURE__ */ jsxRuntime.jsx(ViewerOptionsProvider, { options: viewerOptions, store: optionsStore, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCustomizationContext.Provider, { value: customizationResolved, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerStorageContext.Provider, { value: hostStorage, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCloudFilesContext.Provider, { value: cloudFiles, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerRegionBaseContext.Provider, { value: regionBase, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonAddInsContext.Provider, { value: ribbonAddIns ?? NO_RIBBON_ADD_INS, children: /* @__PURE__ */ jsxRuntime.jsx(AccountAuthContext.Provider, { value: accountAuth, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
35398
|
-
|
|
35397
|
+
/* @__PURE__ */ jsxRuntime.jsx(ViewerOptionsProvider, { options: viewerOptions, store: optionsStore, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCustomizationContext.Provider, { value: customizationResolved, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerStorageContext.Provider, { value: hostStorage, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerCloudFilesContext.Provider, { value: cloudFiles, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerRegionBaseContext.Provider, { value: regionBase, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonAddInsContext.Provider, { value: ribbonAddIns ?? NO_RIBBON_ADD_INS, children: /* @__PURE__ */ jsxRuntime.jsx(AccountAuthContext.Provider, { value: accountAuth, children: /* @__PURE__ */ jsxRuntime.jsx(chunkVGU5S37T_js.Rendering3DFlagsContext.Provider, { value: effective3D, children: /* @__PURE__ */ jsxRuntime.jsx(ViewerThemeProvider, { theme: effectiveTheme, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
35398
|
+
chunkVGU5S37T_js.CollaborationProvider,
|
|
35399
35399
|
{
|
|
35400
35400
|
config: collaboration,
|
|
35401
35401
|
canvasWidth: canvasSize.width,
|
|
@@ -35452,19 +35452,19 @@ var PowerPointViewerBody = /* @__PURE__ */ React108.forwardRef(
|
|
|
35452
35452
|
slideCount: slides.length
|
|
35453
35453
|
}
|
|
35454
35454
|
),
|
|
35455
|
-
/* @__PURE__ */ jsxRuntime.jsx(ShapeFormatContext.Provider, { value: shapeFormat, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonGalleryCommandsContext.Provider, { value: ribbonGalleries, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
35455
|
+
/* @__PURE__ */ jsxRuntime.jsx(ShapeFormatContext.Provider, { value: shapeFormat, children: /* @__PURE__ */ jsxRuntime.jsx(RibbonGalleryCommandsContext.Provider, { value: ribbonGalleries, children: /* @__PURE__ */ jsxRuntime.jsx(chunkVGU5S37T_js.ChartFormatContext.Provider, { value: chartFormat, children: viewerContent }) }) })
|
|
35456
35456
|
]
|
|
35457
35457
|
}
|
|
35458
35458
|
) }) }) }) }) }) }) }) }) })
|
|
35459
35459
|
);
|
|
35460
35460
|
}
|
|
35461
35461
|
);
|
|
35462
|
-
var PowerPointViewer2 = /* @__PURE__ */
|
|
35462
|
+
var PowerPointViewer2 = /* @__PURE__ */ chunkVGU5S37T_js.withDisplayName(
|
|
35463
35463
|
PowerPointViewerComponent,
|
|
35464
35464
|
"PowerPointViewer"
|
|
35465
35465
|
);
|
|
35466
35466
|
function CollaborationStatusStrip() {
|
|
35467
|
-
const collab =
|
|
35467
|
+
const collab = chunkVGU5S37T_js.useCollaboration();
|
|
35468
35468
|
if (!collab) {
|
|
35469
35469
|
return null;
|
|
35470
35470
|
}
|
|
@@ -35481,9 +35481,9 @@ function CollaborationStateReporter({
|
|
|
35481
35481
|
onChange,
|
|
35482
35482
|
onStatus
|
|
35483
35483
|
}) {
|
|
35484
|
-
const collab =
|
|
35484
|
+
const collab = chunkVGU5S37T_js.useCollaboration();
|
|
35485
35485
|
useCollaborationStateReport(collab, onChange);
|
|
35486
|
-
|
|
35486
|
+
chunkVGU5S37T_js.useReportOnChange(collab?.status ?? "disconnected", onStatus, "disconnected");
|
|
35487
35487
|
return null;
|
|
35488
35488
|
}
|
|
35489
35489
|
function CollaborationDocumentSync({
|
|
@@ -35498,8 +35498,8 @@ function CollaborationDocumentSync({
|
|
|
35498
35498
|
onReadOnlyChange,
|
|
35499
35499
|
history
|
|
35500
35500
|
}) {
|
|
35501
|
-
const collab =
|
|
35502
|
-
|
|
35501
|
+
const collab = chunkVGU5S37T_js.useCollaboration();
|
|
35502
|
+
chunkVGU5S37T_js.useCollaborationDocumentSync({
|
|
35503
35503
|
collaboration: collab,
|
|
35504
35504
|
history,
|
|
35505
35505
|
slides,
|
|
@@ -35519,14 +35519,14 @@ function CollaborationFollowLayer({
|
|
|
35519
35519
|
setActiveSlideIndex,
|
|
35520
35520
|
slideCount
|
|
35521
35521
|
}) {
|
|
35522
|
-
const collab =
|
|
35523
|
-
const { followedClientId, followUser } =
|
|
35522
|
+
const collab = chunkVGU5S37T_js.useCollaboration();
|
|
35523
|
+
const { followedClientId, followUser } = chunkVGU5S37T_js.useFollowMode({
|
|
35524
35524
|
collab,
|
|
35525
35525
|
activeSlideIndex,
|
|
35526
35526
|
setActiveSlideIndex,
|
|
35527
35527
|
slideCount
|
|
35528
35528
|
});
|
|
35529
|
-
|
|
35529
|
+
chunkVGU5S37T_js.useBroadcastFollower({
|
|
35530
35530
|
collab,
|
|
35531
35531
|
activeSlideIndex,
|
|
35532
35532
|
setActiveSlideIndex,
|
|
@@ -35568,7 +35568,7 @@ function PptxI18nProvider({
|
|
|
35568
35568
|
() => ({ t: withEnglishFallback(translate), locale }),
|
|
35569
35569
|
[translate, locale]
|
|
35570
35570
|
);
|
|
35571
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
35571
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk5DBKW7F3_js.PptxI18nContext.Provider, { value: state, children });
|
|
35572
35572
|
}
|
|
35573
35573
|
|
|
35574
35574
|
Object.defineProperty(exports, "THEME_CATALOG", {
|